使用方法
- 如果域名自己发送邮件,请勾选 “a:域名自身的地址” 与 “mx:域名自身的邮件服务器”。
- 在 “IPv4 网段” 与 “IPv6 网段” 中输入服务器所在的网段,在 “包含以下域名” 中输入任何服务商的域名。
- 在 “其他所有发件方” 下选择其他发件方的结果。-all 是严格的选择。
- 复制 “SPF 记录(TXT)”,并将其作为 TXT 记录发布在域名本身。确认 “DNS 查询次数(上限10)” 保持在10次或以下。
收件方如何读取 SPF 记录
SPF 记录是位于它所描述的域名上的 TXT 记录。它以 v=spf1 开头,然后列出各项:a、mx、ip4、ip6 与 include,每项可带一个可选的限定符。收件方从左到右检查它们,第一个匹配的项给出结果:+ 通过,- 失败,~ 软失败,? 中性。未写限定符时默认为 +(RFC 7208 第4.6.2节)。
- all 匹配所有其他发件方,其后的项会被忽略(RFC 7208 第5.1节)。本页始终把 all 写在最后。
- 没有任何项匹配且没有 redirect 时,结果为中性,如同记录以 ?all 结束(第4.7节)。
10次 DNS 查询的上限
a、mx、ptr、exists、include 与 redirect 项各占一次 DNS 查询,被包含记录所进行的查询也同样计入。收件方若为一次检查需要超过10次查询,就会返回错误(RFC 7208 第4.6.4节)。ip4 与 ip6 项不占用查询次数,因此公布网段范围的服务商可以写成 ip4 与 ip6 项,而不必使用 include。
长度与 TXT 字符串
TXT 记录中的一个字符串最多包含255个字符。较长的记录会写成多个字符串,收件方会不加空格地将它们连接起来(RFC 7208 第3.3节)。已发布的记录,其 DNS 应答应保持在512个八位组以内(第3.4节)。
示例:从自有服务器和一家服务商发信的域名
记录 v=spf1 a mx ip4:192.0.2.0/24 ip6:2001:db8:1::/48 include:_spf.example.net -all 允许域名自身的地址记录和邮件服务器发信,允许这两个网段发信,并允许 _spf.example.net 的记录所许可的发件方发信。其他所有发件方均失败(-all)。
a、mx 与 include 项各占一次查询,两个网段项不占用查询,因此该记录共进行3次查询。_spf.example.net 的记录会增加它自己的查询,本页不计入这些查询。
| 测量项 | 数值 |
|---|---|
| 记录 | v=spf1 a mx ip4:192.0.2.0/24 ip6:2001:db8:1::/48 include:_spf.example.net -all |
| DNS 查询次数 | 3 / 10次 DNS 查询 |
| 字符数 | 78 |
常见问题
应该使用 -all 还是 ~all?
-all 告诉收件方,对记录未列出的每个发件方都判定为失败,因此它是严格的选择。~all 会把其他发件方标为软失败,许多域名在核对名单是否完整时使用它。若不能确定名单已经完整,请先从 ~all 开始。
为什么查询次数超过10的记录会失败?
收件方在一次检查中最多进行10次 DNS 查询,需要更多查询的检查会返回错误(RFC 7208 第4.6.4节)。请删除不再使用的 include,或把服务商公布的范围写成 ip4 与 ip6 项,它们不占用查询次数。
SPF 记录必须是单个字符串吗?
不必。TXT 字符串最多包含255个字符,较长的记录会发布为多个带引号的字符串,收件方会不加空格地将它们连接起来(RFC 7208 第3.3节)。本页的拆分输出显示了记录超过单个字符串长度时的各段字符串。
include 的作用是什么?
include:domain 告诉收件方,把该域名的 SPF 记录作为您记录的一部分进行检查(RFC 7208 第5.2节)。该记录的查询会计入您10次的上限,因此服务商的 include 可能占用的查询次数,会多于此处看到的一次。
只有 SPF 记录就能阻止伪造邮件吗?
不能。SPF 检查发送邮件的服务器,随后 DMARC 检查发件人一行中的域名是否与之相符(RFC 7489 第3.1节)。还应发布 DKIM 签名和 DMARC 策略。
这个生成器会把我的域名发送给任何人吗?
不会。记录在您的浏览器中根据您输入的内容生成,不会在网络上查询任何内容,也不会被存储。
资料来源
数据和文字最近核对于2026年11月10日星期二。