← 返回博客

从零搭建企业邮件服务器

TL;DR · 一句话结论

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

很多企业做到一定规模后,都会考虑搭建自己的邮件服务器。自建邮件服务器的好处很明显:企业形象统一(@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=quarantine 或 p=reject。

PTR 记录

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

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

投递测试

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

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

测试结果:

在 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 记录的正确配置。一旦跑通,后续的运维工作量其实不大。但如果只是需要一个企业邮箱,更推荐使用腾讯企业邮、阿里企业邮等托管方案,可以节省大量运维时间。

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

相关认证服务

以下服务由北测陶工(北测检测 CNAS L10966 / CMA 92)提供,可点击查看详情与周期

不确定你的产品要做哪些认证?

提供产品资料,1 个工作日内给出认证方案、项目清单与费用估算

在线提交需求 先看 27 个常见问题
关于本文:本文由北测陶工技术团队整理,基于实验室实测案例与现行法规编写。北测陶工依托的北测检测为 CNAS 认可实验室(注册号 L10966)、CMA 资质认定机构(编号 92),提供 FCC、CE、EMC、RoHS、电池、无线、安规一站式全球市场准入服务。法规要求会更新,具体项目以最新标准与官方公告为准。