真正需自建邮件服务器的场景是:有独立域名、需统一发件人(如notice@company.com)、要对接Zabbix/Prometheus告警,或受合规要求必须数据本地化;Postfix+Dovecot是最稳妥组合,轻量、安全、更新勤,且需严格配置mydestination、inet_interfaces与DNS记录(MX/SPF/DKIM/PTR)以避免投递失败。

别装“全功能邮件服务器”——99%的场景根本用不上,反而徒增安全风险和维护成本。
真正需要自建邮件服务器的,通常是:有独立域名、需统一发件人(如 notice@company.com)、要对接 Zabbix/ Prometheus 告警、或受合规要求必须数据本地化。其余情况,直接用腾讯企业邮、阿里云邮件推送(DirectMail)或 Mailgun 更省心、更可靠。
Postfix + Dovecot 是当前最稳妥的组合
Sendmail 太老、配置反人类;Exim 小众难排查;而 Postfix + Dovecot 已成事实标准:Postfix 负责收发(SMTP),Dovecot 提供收信协议(IMAP/POP3),两者轻量、更新勤、漏洞响应快,且 CentOS 7+/Ubuntu 20.04+ 均原生支持。
- Postfix 不处理用户认证,只管路由和投递;Dovecot 才管密码校验、邮箱存储、客户端登录
- 二者默认不互通——必须显式配置
home_mailbox = Maildir/(Postfix)和mail_location = maildir:~/Maildir(Dovecot),否则邮件发出去了,用户却在客户端里看不到 - 若只要发信(比如监控告警),连 Dovecot 都不用装,配好 Postfix + SASL 认证直连腾讯企业邮 SMTP 即可
- Postfix 的
mynetworks必须严格限制,比如只写127.0.0.0/8, 192.168.10.0/24,否则极易被当成开放中继,IP 迅速进各大黑名单
/etc/postfix/main.cf 关键项不能照抄模板
网上一堆“一键配置”脚本直接塞 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,这是典型误配:它会让 Postfix 尝试本地投递所有发往 @yourdomain.com 的邮件,但你没配 Dovecot 或系统用户,结果就是邮件被丢弃并返回 User unknown in local recipient table。
- 如果只做外发(无收件需求):删掉
$mydomain,保留localhost.$mydomain, localhost即可 - 如果要做完整收发:必须确保
mydestination包含你的域名,并且每个收件人对应一个 Linux 系统用户(或通过 Dovecot 的虚拟用户机制接管) -
inet_interfaces = all很危险——生产环境应设为inet_interfaces = loopback-only(仅本机发信),或明确指定内网 IP,绝不要监听 0.0.0.0:25 -
smtpd_tls_security_level = may是底线,强制 STARTTLS;若对接腾讯企业邮等第三方 SMTP,Postfix 侧无需开 TLS,但必须配smtp_tls_security_level = encrypt
测试发信时最常见的 3 个失败点
执行 echo "test" | mail -s "test" user@example.com 却没收到?先看日志:tail -f /var/log/maillog(CentOS)或 /var/log/mail.log(Ubuntu),重点搜 status= 和 reject。
-
status=deferred (connect to gmail-smtp-in.l.google.com[...]:25: Connection timed out)→ 阿里云/腾讯云等厂商默认封 25 端口,必须换 465/587 + SMTPS,或申请解封(企业认证后) -
status=bounced (Host or domain name not found. Name service error for name=gmail.com type=AAAA: Host not found)→ DNS 解析失败,检查/etc/resolv.conf是否可用,或临时加nameserver 8.8.8.8 -
status=softbounce (User unknown)→ Postfix 认为你想本地投递,但系统里没有该用户名;此时要么创建系统用户,要么关掉本地投递逻辑(删$mydomain从mydestination)
真实运维中,最难缠的不是配置,而是 DNS:MX 记录、PTR 反向解析、SPF/TXT 记录缺一不可。哪怕 Postfix 完全配对,Gmail/Yahoo 仍可能因 SPF 不匹配直接拒收——这点几乎没人提,但每天都在发生。


















