SPF 的判定机制(all/include/a/mx/ptr/ip4/ip6/exists,RFC 7208)分别是什么意思?

1 SPF 的判定机制(all/include/a/mx/ptr/ip4/ip6/exists,RFC 7208)分别是什么意思?
概述

SPF(RFC 7208)在 DNS TXT 用 v=spf1 后跟一串“机制+限定符”,从左到右求值,首个匹配决定结果(+pass/-fail/~softfail/?neutral)。限定符前缀默认 +(pass),常用 -(fail 硬失败)、~(softfail)。

机制含义

all 匹配所有(通常放最后作默认,如 -all 或 ~all);include 包含另一域策略并递归求值(受 10 次 DNS 查询上限);a/mx 允许该域 A/MX 记录 IP 发信;ptr 用 PTR 反向解析校验,已被 RFC 7208 标记不推荐;ip4/ip6 直接允许某 IP 段;exists 按 A 记录是否存在动态判断。

实践

用 include 引入 SaaS/外包发信商(如 Google Workspace、邮件网关);收尾用 -all(严格)或 ~all(宽松);避免 ptr(慢且不可靠)。include 嵌套过深会触发 permerror。

注意

SPF 仅验证 envelope-from(Return-Path)域,不对可见 From 生效;且受 DNS 查询次数限制,错误配置会导致合法邮件 permerror。

参考:RFC 7208 §4(SPF 机制与限定符);§6.1(redirect);§4.6.4(DNS 查询上限)