SPF 记录是一条 TXT 记录,例如 v=spf1 ip4:192.0.2.0/24 include:_spf.example.net mx -all。机制(ip4、ip6、a、mx、include、exists、ptr、all)从左到右依次评估,限定符为 +(pass,默认)、-(fail)、~(softfail)和 ?(neutral);redirect= 把评估交给另一个域名。结果有 pass、fail、softfail、neutral、none、temperror 和 permerror。
SPF 检查的是信封发件人(RFC5321.MailFrom,即退信地址),而不是用户看到的 From 头,因此单靠 SPF 无法阻止对可见发件人的伪造;DMARC 要求信封域名与 From 对齐。转发会破坏 SPF,因为转发方的 IP 不在原始域名的记录中,除非转发方改写信封(SRS)。
评估最多只能触发 10 个会查询 DNS 的项(RFC 7208 §4.6.4),而 SaaS 发送方庞大的 include 链常常超出这一限制,导致 permerror。一个域名应当发布且只发布一条 SPF 记录;存在两条记录同样会导致 permerror。