← 返回博客

从零搭建企业邮件服务器

📧

很多企业做到一定规模后,都会考虑搭建自己的邮件服务器。自建邮件服务器的好处很明显:企业形象统一(@taowushuang.com 比 @qq.com 专业得多)、数据自主可控、不受第三方服务商的限制。但难点在于——如何确保邮件不被各大邮箱服务商判为垃圾邮件。

这篇文章记录了我从零搭建邮件服务器的完整过程,包括 SPF、DKIM、DMARC、PTR 四项核心 DNS 记录的配置,以及最终的投递测试结果。

方案选型

自建邮件服务器的主流方案有:

方案特点适用场景
Postfix + Dovecot经典组合,性能稳定,配置较复杂有运维经验的团队
iRedMail一键脚本安装,集成 Web 管理面板中小企业快速部署
Mailcow / MailuDocker 容器化部署想用容器化的团队
BillionMail国产商业套件,Docker 部署国内企业,技术支持好

我最终选用了 BillionMail 方案,原因是它提供了 Docker 容器化的一键部署,内置了 Web 管理界面(包括邮件收发和管理后台),对国内用户友好。整个套件包含 7 个容器(Nginx、Postfix、Dovecot、Redis、MySQL、ClamAV、Rspamd),覆盖了邮件服务器所需的所有组件。

部署步骤

环境准备

服务器配置:1 核 / 1GB RAM / Ubuntu 20.04。需要确保 25、143、465、587、993、995 端口在防火墙中开放。

# 安装 Docker 和 Docker Compose
curl -fsSL https://get.docker.com | bash
apt install docker-compose-plugin

# 克隆 BillionMail 仓库
git clone https://github.com/your-repo/billionmail.git
cd billionmail

DNS 配置

邮件服务器搭建前,必须先准备好 DNS 记录。这是最关键的一步——DNS 配置不当,发出的邮件大概率进垃圾箱。

SPF 记录

SPF(Sender Policy Framework)声明哪些 IP 地址被授权代表你的域名发送邮件。

taowushuang.com  TXT  "v=spf1 ip4:64.188.8.124 ~all"

~all 表示软失败(非授权 IP 发送的邮件会被标记但通常不会被拒收),如果确定只用一个 IP 发邮件,可以用 -all(硬失败)。

DKIM 签名

DKIM(DomainKeys Identified Mail)通过在邮件头部添加数字签名,让收件服务器验证邮件是否在传输过程中被篡改。

首先在邮件服务器上生成 DKIM 密钥对:

# 进入 rspamd 容器生成密钥
docker exec -it billionmail-rspamd rspamadm dkim_keygen \
  -d taowushuang.com -s mail

# 查看公钥
docker exec -it billionmail-rspamd cat /var/lib/rspamd/dkim/mail.pub

然后将公钥发布到 DNS:

mail._domainkey.taowushuang.com  TXT  "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC..."

DMARC 策略

DMARC(Domain-based Message Authentication, Reporting & Conformance)告诉收件服务器:当 SPF 和 DKIM 都验证失败时应该怎么做。

_dmarc.taowushuang.com  TXT  "v=DMARC1; p=none; rua=mailto:admin@taowushuang.com"

建议先用 p=none 监控一段时间,确认没有误判后再调整为 p=quarantinep=reject

PTR 记录

PTR 记录(反向 DNS)将 IP 地址映射回域名。许多邮件服务器会对没有 PTR 记录的 IP 发来的邮件降权处理。

PTR 记录需要在服务器提供商(RackNerd)的控制面板中设置,不需要在 DNS 管理平台配置。设置后需要等待 24-72 小时完成全球 DNS 传播。

投递测试

配置完成后,我用系统自带的 mail 命令发送了测试邮件:

echo "测试邮件正文" | mail -s "测试邮件标题" tws1129@qq.com

测试结果

在 Rspamd 管理面板中可以看到每封邮件的详细评分和检查结果,SPF、DKIM、DMARC 三项均通过。

常见问题与排查

邮件被拒收

如果对方服务器拒收你的邮件,可以从以下几个角度排查:

发件频率控制

自建邮件服务器不适合大量群发营销邮件。如果需要发送大量邮件(如 20000 封),建议使用 SendGrid、Mailgun、Amazon SES 等专业邮件发送服务,并做好预热和频率控制。

结语

自建邮件服务器是一项需要耐心和细致的工作,核心就是 DNS 记录的正确配置。一旦跑通,后续的运维工作量其实不大。但如果只是需要一个企业邮箱,更推荐使用腾讯企业邮、阿里企业邮等托管方案,可以节省大量运维时间。

对于检测认证这类需要频繁与客户邮件沟通的行业,使用自定义域名的企业邮箱,也能显著提升客户的专业信任度。