
本文教你在一台 VPS 上从零搭建 Postfix 与 Dovecot 邮件服务器,覆盖 SMTP 收发、IMAP 拉取、TLS 证书、SPF DKIM DMARC 三件套与反垃圾邮件排查。读完会拿到一份可直接套用的主配置清单、一份 DNS 记录模板、以及一份送达率排查方法,帮助你解决邮件进垃圾箱的核心问题。
一、为什么自建邮件而不是托管
Gmail、Outlook 等托管邮箱省事但有几个硬伤:自定义域名要付费、容量受限、出站速率被严格限制、合规与数据导出不方便。自建 Postfix Dovecot 适合三类场景:企业自有域名邮箱、营销系统的事务性邮件、合规要求数据留在自己机房。
代价是:你要自己处理 IP 信誉、SPF DKIM DMARC、退信处理与反垃圾邮件规则。第一次跑通可能要花 1-2 天,但配置稳定后维护成本不高。机器选型上选一台支持 25 端口出站的 VPS(Virtual Private Server,虚拟专用服务器)很关键,国内云厂商默认封 25,相关海外节点的部署可参考 美国 VPS 部署教程。
二、Postfix 与 Dovecot 的分工
Postfix 是 MTA(Mail Transfer Agent,邮件传输代理),负责通过 SMTP 协议在服务器之间收发邮件、接收用户提交、把邮件投递到本地邮箱。Dovecot 是 MDA 与 IMAP/POP3 服务器,负责把邮件存到磁盘以及让用户客户端从服务器拉取邮件。
两者通过 LMTP 协议串联:Postfix 收到的入站邮件交给 Dovecot LMTP,Dovecot 写入到用户的 Maildir 目录;用户客户端通过 IMAP(端口 993)从 Dovecot 拉邮件、通过 SMTP submission(端口 587)经 Postfix 发邮件,并由 Dovecot SASL 做认证。这种分工让 SMTP 与存储解耦,便于横向扩展。Web 反向代理与服务编排的相关配置可参考 Nginx 反向代理与负载均衡。
三、最小可用配置清单
Ubuntu 或 Debian 上一条命令装齐:postfix、postfix-mysql、dovecot-imapd、dovecot-lmtpd、dovecot-mysql。Postfix 主配置文件位于 etc 目录下的 postfix/main.cf,关键字段包括主机名、域名、监听网卡、本地投递目标、虚拟邮箱域名表、虚拟投递走 lmtp 走 unix socket、以及 TLS 证书与私钥路径指向 Let’s Encrypt 续期目录。
master.cf 里启用 submission 服务(端口 587 必须 TLS 加密、必须 SASL 认证),smtps 端口 465 隐式 TLS 按需启用。Dovecot 端的邮件目录字段设为 maildir 形式按域名与用户分目录;认证配置启用 plain 与 login 机制并把禁用明文认证字段设为 yes,强制 TLS 后才允许密码传输;master 配置暴露 LMTP 的 unix socket 给 Postfix 调用,完成投递闭环。
四、DNS 三件套:SPF DKIM DMARC
仅仅跑通 SMTP 是不够的,邮件 90% 概率进垃圾箱。必须做完 DNS 三件套才能上生产。
SPF:在域名 DNS(Domain Name System,域名解析系统)加 TXT 记录 v=spf1 mx ip4:1.2.3.4 -all,告诉收件方只有这些 IP 是允许的发件源。-all 表示严格拒绝其他 IP,~all 是软拒绝(标记 softfail),首次上线建议 ~all 观察一周再切 -all。
DKIM:用 OpenDKIM 或 Rspamd 给每封发出的邮件加密签名,公钥发布到 DNS 的 selector._domainkey.example.com TXT 记录。收件方验证签名匹配公钥就证明邮件未被篡改。生成 2048 位密钥后把公钥贴到 DNS,再在 Postfix 的 milter 配置里串入 OpenDKIM。
DMARC:在域名加 TXT 记录 v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com,告诉收件方 SPF 或 DKIM 失败时如何处理(none 观察、quarantine 进垃圾箱、reject 直接拒)。rua 收每日聚合报告,便于发现伪造来源。CDN(Content Delivery Network,内容分发网络)边缘节点的安全策略也常用类似 DNS 信誉机制,相关回源加速可参考 Cloudflare CDN 中国区加速。
五、TLS 证书与端口配置
邮件 TLS 用 Let’s Encrypt 即可,certbot 自动续期。证书签发后让 Postfix 的 smtpd_tls_cert_file 与 Dovecot 的 ssl_cert 都指向同一份 fullchain.pem 与 privkey.pem。
端口规划:25 端口对外做 server-to-server SMTP;587 端口对客户端做 submission,强制 STARTTLS 与 SASL 认证;465 端口是隐式 TLS 的 submission,与 587 二选一保留兼容;993 端口对客户端做 IMAPS;明文 POP3 与 IMAP 协议建议在线上环境直接关闭以避免明文密码泄露风险。证书续期后 Postfix 与 Dovecot 需要 reload 让进程重新读证书。SSH 暴力破解防御可参考 Linux SSH 与 Fail2ban 加固。
六、送达率与反垃圾邮件排查
新搭的邮件服务器第一周送达率往往很差,因为 IP 没有信誉。排查路径:
测送达:发到 mail-tester.com 拿到一个分数(满分 10),它会告诉你 SPF DKIM DMARC PTR 反向解析、HELO 配置、邮件正文 spam score 各项状态。低于 8 分别上生产。
PTR 反向解析:你的发件 IP 必须设置 PTR 指向 myhostname,且 myhostname 在 DNS 有对应 A 记录。VPS 厂商控制台一般支持改 PTR。
预热 IP:新 IP 直接发大量邮件会被 Gmail 与 Outlook 限流。前两周每天每个收件域不超过 50 封,逐步提升。
黑名单查询:用 mxtoolbox 查你的 IP 是否在 Spamhaus、Barracuda、SpamCop 等 RBL 黑名单里。中招了按各家流程申诉。
头部排查:从 Gmail 收到邮件后查看原始头部,搜 Authentication-Results 看 SPF DKIM DMARC 三项是否都是 pass,任何一项 fail 或 softfail 都要回头查 DNS 配置。
正文打分:邮件正文里大量大写字母、感叹号、营销词、短链跳转都会拉高 spam score。建议正文先用文本编辑器写好再丢进客户端,避免 HTML 模板里夹杂奇怪样式。退订链接与发件人地址一致也是减分项。
七、生产建议
自建邮件不是简单装个软件,而是一整套包含 DNS、IP 信誉、TLS、反垃圾邮件、退信处理与日志监控的系统工程。建议生产部署遵循几条原则:新 IP 务必预热两周再发营销邮件;把 DMARC 聚合报告接到专用监控邮箱定期分析;订阅 Gmail Postmaster Tools 与 Microsoft SNDS 等反馈渠道;把 mail.log 与认证日志接到集中日志平台便于排查。
可以考虑用 Rspamd 替代传统的 SpamAssassin 做反垃圾过滤,性能更好、内置 DKIM 签名、规则更新更勤。如果你需要管理多个域名的邮箱与 Web 管理界面,推荐 PostfixAdmin 或 mailcow 一体化方案,把 MySQL 后端、Roundcube 网页客户端、防垃圾打包好。
总结:跑通 SMTP 收发只是第一步,DNS 三件套与 IP 信誉才是能否进收件箱的关键,把这套清单整理成上线检查表,能避免大部分新手坑。前期投入一两天打牢基础,长期维护成本反而比折腾托管方案更低。