SPF 记录中的 redirect 和 include 有什么区别?各自适合什么场景?

SPF 记录中的 redirect 和 include 有什么区别?各自适合什么场景?
include 机制:RFC 7208 §5.2 定义的 include 将另一个域的 SPF 评估结果"嵌入"到本域的策略链中。处理逻辑:①被 include 的域执行完整 SPF 评估;②如果该域返回 pass,本域的 SPF 也返回 pass(相当于匹配成功);③如果该域返回 fail / softfail / neutral / none,本域继续处理 include 之后的后续机制,不会直接终止。这意味 include 只是整体策略中的一个条件分支。
redirect 机制:RFC 7208 §6.1 定义的 redirect 完全不同——它将本域的全部 SPF 评估委托给另一个域。处理逻辑:只有当 redirect 之前的所有机制都未命中时,redirect 才生效;一旦生效,当前域的所有剩余机制被忽略,直接返回目标域的 SPF 评估结果。因此 redirect 必须是 SPF 记录的最后一项(类似于 all 的位置),如果放在中间位置会导致后续机制被跳过。
适用场景对比:include 适合"我用了多家第三方发信服务"的多源组合场景——比如同时使用自建邮件服务器和某营销平台的发信能力,需要两边的 IP 都能通过 SPF。redirect 适合"我的域自己不发信,全部由母公司 / 上级平台代发"的完全委托场景——比如子品牌域名 brand.com 全部由集团母公司 group.com 的邮件系统发送,直接 redirect=_spf.group.com。
避坑提示:redirect 和 include 不能混用。一旦使用了 redirect,前面的机制未命中的情况下,SPF 结果完全取决于目标域——如果目标域的 SPF 配置不完善或 IP 已变更,所有本文档的 SPF 调试等同于无效。另外 include 会消耗 DNS 查询次数(计入 10 次限制),redirect 同样计入。

📎 RFC 7208 §5.2 include;RFC 7208 §6.1 redirect