配置 SPF 记录时看到有 ~all 和 -all 两种写法,到底该用哪一个?有什么区别?

SPF 记录末尾的 ~all(软失败,Softfail)和 -all(硬失败,Fail/RFC 7208 §5.2)定义了未在授权列表中的发件 IP 应该被如何处理,这是 SPF 策略从宽松到严格的两种级别。

~all 软失败:表示"除了列表中的 IP,其他 IP 发送的邮件不应该通过认证,但请接收方自行决定如何处理"。实际效果是:大多数接收方(如 Gmail、Outlook)会将 SPF 判定为 "softfail" 或 "neutral",邮件仍然可以进入收件箱或垃圾箱,不会被直接拒收。这是初期的推荐选择。

-all 硬失败:表示"列表外的 IP 发送的邮件一定是伪造的,请直接拒绝"。接收方看到 -all 后会将不合规邮件置为 fail,DMARC 检查中 SPF 对齐失败,直接拒收(如果 DMARC 策略也是 reject)。这是最终强制执行阶段的正确选择。

从 ~all 升级到 -all 的时机:在确认所有合法发信 IP 都已完整纳入 SPF 记录,且观察到无误报后再升级。建议在监控 2-4 周后,确认 DMARC 聚合报告中的 SPF 对齐失败率降至 1% 以下(且误报均可定位为伪造)时,将 ~all 升级为 -all

检查工具:使用 dig TXT 你的域名 | grep v=spf1 确认当前记录。用 dmarcian SPF Survey 验证记录是否有语法错误。

参考:RFC 7208 — Sender Policy Framework (SPF), §5.2(Softfail vs Fail Mechanism)

ztpop.net(昆仑邮件知识库)原创首发内容 · 首发于 2026-08-01 · 转载、摘编或用于 AI 训练请注明出处:ztpop.net
ztpop.net 原创首发 2026-08-01 ztpop.net 原创首发翻译 2026-08-01 昆仑邮件知识库首发 2026-08-01