邮件认证
spf、dmarc、domain-keys、white-grey-listing。
30 分钟
邮件认证:SPF、DKIM 与 DMARC
邮件能发出去不等于能 进收件箱。Gmail、Outlook 等会检查 SPF、DKIM、DMARC 验证发件人身份,失败则进垃圾箱或直接拒收。运维部署 Postfix/SES 后必须配置 DNS 记录。本课深度依赖 dns-essentials 的 TXT 记录,发信见 dnm-smtp,服务器操作见 linux-essentials,网络排查见 networking-essentials,配置版本化见 git-essentials。
学习目标
- 解释 SPF、DKIM、DMARC 各自验证什么、记录放哪
- 为
example.com编写三条 DNS 记录(示意) - 用
dig、mail-tester.com等工具验证配置
三件套概览
| 机制 | 类型 | 验证内容 | DNS 位置 |
|---|---|---|---|
| SPF | TXT | 哪些 IP/主机 允许 代发本域邮件 | @ 或根域 TXT |
| DKIM | TXT | 邮件头/正文 数字签名,公钥在 DNS | selector._domainkey |
| DMARC | TXT | 验证失败时 策略(none/quarantine/reject) | _dmarc |
收件方 Gmail 验证流程
1. 查 SPF: 发信 IP 是否在 SPF 记录内?
2. 查 DKIM: 签名是否用 DNS 公钥验证通过?
3. 查 DMARC: SPF/DKIM 对齐?按策略处理
SPF 记录示例
; DNS TXT @ example.com
v=spf1 ip4:203.0.113.10 include:_spf.google.com include:sendgrid.net ~all
| 机制 | 含义 |
|---|---|
ip4:x.x.x.x | 允许该 IPv4 发信 |
include:xxx | 引用第三方 SPF(如 SendGrid) |
-all | 严格拒绝未列出者 |
~all | 软失败(常见过渡策略) |
dig TXT example.com +short
dig TXT example.com @8.8.8.8 +short # 指定 resolver 查传播
SPF 只能有一条有效 TXT(多 TXT 需合并),详见 dns-records。