很多企业做到一定规模后,都会考虑搭建自己的邮件服务器。自建邮件服务器的好处很明显:企业形象统一(@taowushuang.com 比 @qq.com 专业得多)、数据自主可控、不受第三方服务商的限制。但难点在于——如何确保邮件不被各大邮箱服务商判为垃圾邮件。
这篇文章记录了我从零搭建邮件服务器的完整过程,包括 SPF、DKIM、DMARC、PTR 四项核心 DNS 记录的配置,以及最终的投递测试结果。
方案选型
自建邮件服务器的主流方案有:
| 方案 | 特点 | 适用场景 |
|---|---|---|
| Postfix + Dovecot | 经典组合,性能稳定,配置较复杂 | 有运维经验的团队 |
| iRedMail | 一键脚本安装,集成 Web 管理面板 | 中小企业快速部署 |
| Mailcow / Mailu | Docker 容器化部署 | 想用容器化的团队 |
| 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=quarantine 或 p=reject。
PTR 记录
PTR 记录(反向 DNS)将 IP 地址映射回域名。许多邮件服务器会对没有 PTR 记录的 IP 发来的邮件降权处理。
PTR 记录需要在服务器提供商(RackNerd)的控制面板中设置,不需要在 DNS 管理平台配置。设置后需要等待 24-72 小时完成全球 DNS 传播。
投递测试
配置完成后,我用系统自带的 mail 命令发送了测试邮件:
echo "测试邮件正文" | mail -s "测试邮件标题" tws1129@qq.com
测试结果:
- 📧 QQ邮箱 → ✅ 收件箱(非垃圾箱)
- 📧 163邮箱 → ✅ 收件箱(非垃圾箱)
- 📧 Gmail → ✅ 收件箱
在 Rspamd 管理面板中可以看到每封邮件的详细评分和检查结果,SPF、DKIM、DMARC 三项均通过。
常见问题与排查
邮件被拒收
如果对方服务器拒收你的邮件,可以从以下几个角度排查:
- IP 黑名单:检查服务器 IP 是否被列入各种黑名单(如 Spamhaus、Barracuda)
- DNS 解析:确保 A、MX、SPF、DKIM、DMARC 记录全部正确解析
- PTR 解析:确认反向 DNS 解析结果与 HELO/EHLO 声明的域名一致
- 端口连接:确保 25 端口出方向没有被云服务商封锁
发件频率控制
自建邮件服务器不适合大量群发营销邮件。如果需要发送大量邮件(如 20000 封),建议使用 SendGrid、Mailgun、Amazon SES 等专业邮件发送服务,并做好预热和频率控制。
结语
自建邮件服务器是一项需要耐心和细致的工作,核心就是 DNS 记录的正确配置。一旦跑通,后续的运维工作量其实不大。但如果只是需要一个企业邮箱,更推荐使用腾讯企业邮、阿里企业邮等托管方案,可以节省大量运维时间。
对于检测认证这类需要频繁与客户邮件沟通的行业,使用自定义域名的企业邮箱,也能显著提升客户的专业信任度。