给域名配置 SPF,先要知道哪些服务器确实代表它发信。网站所在的 IP、接收邮件的 MX、第三方邮件服务,不一定是同一套资源。没有核对发信来源,就把生成器里的选项全部打开,可能把授权范围写得比需要的大。

本文使用 example.com、文档保留地址 192.0.2.10 和虚构的 _spf.example.com,演示宝塔拨测 SPF 记录生成器的操作。它们不是可直接用于生产发信的配置;本次只生成文本,没有修改 DNS,也没有发送邮件。

先生成一条只包含演示 IP 的记录

进入「站长工具 → SPF 记录生成」。填写:

  • 域名:example.com。
  • IPv4:192.0.2.10。
  • MX 和 A:保持 No。
  • IPv6 和引用 SPF:留空。
  • 策略:先保留 -all · Fail,用于看清生成结构。
填写域名与演示发信 IP,MX 和 A 保持 No,策略选择 -all
填写域名与演示发信 IP,MX 和 A 保持 No,策略选择 -all

页面会随输入自动更新,不需要另找“生成”按钮。本次 SPF 内容为:

v=spf1 ip4:192.0.2.10 -all

v=spf1 标明版本,ip4:192.0.2.10 列出授权的 IPv4,最后的 -all 对前面未匹配的来源给出 Fail 判断。这里展示的是规则含义,不是对任何一次真实投递的检测结果。

SPF 主要核对 SMTP 会话中的发信 IP 与 MAIL FROM 等身份使用的域名,不是单看收件人界面里显示的发件人名称。因此,正式整理授权范围时,应从邮件服务商提供的发信配置和实际邮件头入手,不要凭网站地址猜。

BIND 整行和 SPF 内容不要复制混了

页面同时给出 BIND 与 SPF 两种展示。本例 BIND 为:

example.com. IN TXT "v=spf1 ip4:192.0.2.10 -all"
同一条规则分别显示为 BIND 区域文件写法与单独的 SPF 内容
同一条规则分别显示为 BIND 区域文件写法与单独的 SPF 内容

如果 DNS 控制台已经分别提供“类型、主机记录、记录值”,通常应选择 TXT 类型,把 v=spf1 ... 这段内容放进记录值,不能把整行 example.com. IN TXT 一起贴进去。BIND 整行适用于相应的区域文件语法,具体仍以 DNS 产品的输入格式为准。

页面下方的记录预览在本例显示主机为 @,表示当前区域的根域。若实际要配置的是发信子域名,应确认完整记录名和 DNS 区域,不能看到 @ 就照填到任何域名下。复制后还要核对是否多了换行、外层引号或漏掉末尾策略。

引用邮件服务商的 SPF,先确认来源

在「引用 SPF」中填入 _spf.example.com,再将策略改成 ~all · SoftFail。本次结果变为:

v=spf1 ip4:192.0.2.10 include:_spf.example.com ~all
加入引用域名并切换 SoftFail 后,结果增加 include,末尾变为 ~all
加入引用域名并切换 SoftFail 后,结果增加 include,末尾变为 ~all

输入框里填写域名,生成器会加上 include:,不用再把这个前缀写一遍。本例的引用域名只是模拟输入,没有验证它存在 SPF,也没有证明它能授权任何真实邮件服务。生产环境应使用邮件服务商明确提供的引用域名,并先确认该服务确实替你发信。

-all、~all、?all 分别对应未匹配来源的 Fail、SoftFail、Neutral 结果。收件系统最终怎样接收、标记或拒绝邮件,还受自身策略影响,不能把某个选项解释成“必定进入收件箱”或“必定直接拒收”。在发信来源尚未整理完整时,也不应只为让文字更严格就贸然更改策略。

本次另把 A 和 MX 改为 Yes,输出增加了 a mx。这两个机制会依据域名相关地址记录参与授权,不是单纯的说明文字。只有这些服务器也属于预期发信来源时才应选择;存在网站或收信 MX,本身不足以成为开启理由。

文本出来后,还要检查现有记录和查询限制

发布前先查询当前域名的 TXT,找出已有的 v=spf1 记录,整理原有来源后合并。不要为每个邮件服务商再新增一条独立 SPF 记录;同一个名称下存在多条 SPF 记录会造成错误,其他用途的 TXT 则不必因此删除。

还要检查 DNS 查询限制。RFC 7208 对 SPF 评估过程中会引发 DNS 查询的机制与修饰项规定了最多 10 项的上限,涉及 include、a、mx 等,嵌套引用也要计入;这不是“最多能写 10 个 IP”。ip4 和 ip6 本身不占这项查询额度,超出限制可能得到 PermError。

生成器显示出一行文本,没有替你证明引用链存在、查询次数合规或现有 DNS 已更新。完成真实 DNS 配置后,应重新查询公开 TXT,并结合实际测试邮件的认证结果核对发信来源。即使 SPF 通过,也不能据此承诺送达率或收件箱位置,DKIM、DMARC 与收件方判断仍需分别检查。