同一域名下多个邮件服务共存,SPF 怎么配?

同一域名下多个邮件服务共存,SPF 怎么配?
方法一:include 串联——最常用。将每个邮件服务商的 SPF 记录域通过 include: 串联起来。例如:同时使用自建 MTA、系统通知服务、营销邮件平台的场景:
example.com.  IN  TXT  "v=spf1 ip4:192.0.2.0/24 include:_spf.notify-provider.com include:_spf.marketing-platform.com -all"
致命陷阱:10 次 DNS 查询限制。RFC 7208 Section 4.6.4 规定 SPF 评估过程中的 DNS 查询总数不得超过 10 次——include 链的所有 DNS 查询全部计入。如果 include:_spf.notify-provider.com 内部又引用了 3 个 include,那就已经消耗了至少 4 次查询。建议每次新增服务商前,先用在线 SPF 检查工具展开并审计当前 DNS 查询次数。
方法二(DNS 查询超限时):扁平化。如果 include 过多导致超限,解决方法是将所有服务商的授权 IP 列表手动展开为 ip4:/ip6: CIDR 直接写入 SPF 记录。这需要定期人工或脚本同步服务商的 IP 变更,但彻底消除了 DNS 查询压力。
方法三(推荐):子域隔离——将不同发信功能分配到不同子域,每个子域独立维护短 SPF 记录。主域设置 v=spf1 -all,杜绝主域直发。详见 FAQ-13。

📎 RFC 7208 SPF (Section 4.6.4 DNS Lookup Limits; Section 5.2 include 机制)