Defaults.Exposed

Defaults.Exposed修复Guides

"SPF 记录未找到"——但你明明有一条?真正的五个原因(2026)

发布于 2026-07-08

数据截至 2026-06-29 · 方法论 v7。 基于 261 百万个已评分域名的汇总普查数据。参见我们如何评分

如果检测工具说“SPF 记录未找到”,但你确定自己发布过一条,这条记录通常不是缺失,而是变得不可见了:根据 Defaults.Exposed 对 261 百万个域名的普查,有 1,013,416 个域名——大约每 138 个尝试配置 SPF 的域名里就有 1 个——发布了两条或以上的 SPF 记录,这是一种 PermError(RFC 7208 §3.2),很多检测工具会把它报告成“未找到”。

真正的原因有五个,都能在一次坐下的时间里修好:主机名错误、记录重复、DNS 类型错误或引号被弄乱、域名服务器不一致,或者是长度/CNAME 冲突。以下内容:每个原因对应的 60 秒测试方法,按检查顺序排列,然后是修复步骤。

你确定这条记录真的存在吗?

先从最不体面的可能性说起,因为它是目前为止最常见的一种:在 Defaults.Exposed 普查评分的 261,086,232 个域名中,有 121,145,609 个——占 46.4%——根本没有 SPF 记录。很多“但我明明配过”的情况,最后发现是记录加在了一个测试区域,或者加在了一个已经不再是权威服务器的旧 DNS 服务商那里。检查一下你的域名服务器实际指向的那个 DNS 服务商(往往不是你的注册商),看看有没有一条以 v=spf1 开头的 TXT 记录。如果确实没有,就别再当侦探了,直接去看修复你的 SPF 记录

怎么正确检查一条 SPF 记录?

网页版检测工具是通过自己的缓存解析器查询 DNS 的。要看到真相,得直接问你域名的权威域名服务器

# 找出权威域名服务器
dig NS yourdomain.com +short

# 直接向其中一台查询 TXT 记录
dig TXT yourdomain.com @ns1.yourdnshost.com +short

Windows 上:nslookup -type=TXT yourdomain.com ns1.yourdnshost.com

有两条解读规则。第一,数一数有多少行以 v=spf1 开头——数量和内容一样重要。第二,检查你查询的是不是正确的名字:接收方是对照 **Return-Path(RFC5321.MailFrom,也就是“信封发信人”)**里的域名来评估 SPF 的——不是收件人看到的 From 地址。如果你的通讯工具是经由 bounce.yourdomain.com 退信的,那么根域名上一条完美的记录,并不是接收方真正会查询的那一条。

真正的五个原因是什么?

#原因60 秒测试方法修法
1记录放在了错误的主机名上(子域名 vs 根域名)对你 Return-Path 里那个确切域名跑 dig TXT发布在真正用来发信的那个名字上
2两条或以上的 v=spf1 记录 = PermErrordig TXT 返回 2 条或以上的 v=spf1合并成恰好一条记录
3发布成了记录类型 99,或者引号被弄乱了检查记录的类型和多余的引号重新发布为一条干净的 TXT 记录
4缓存过期未刷新 / 域名服务器不一致直接查询每台域名服务器,比对答案修好落后的域名服务器,等旧 TTL 过期
5超过 255 字符的拆分问题,或 CNAME 冲突查看有没有被截断的字符串片段,或同名下有没有 CNAME让服务商正确拆分字符串;把记录移出被 CNAME 占用的名字

数据截至 2026-06-29。

1. 记录是不是放错了主机名?

经典情况:SPF 加在了 mail.yourdomain.com 上,而邮件却自称来自 yourdomain.com,或者反过来。SPF 不会向下继承——根域名上的记录对子域名没有任何意义,反过来也一样。要发布在你 Return-Path 里那个确切的名字上。一个用自己退信子域名发信的服务商,需要在那个子域名上有一条记录——通常是服务商提供的一条 CNAME 或 TXT(GoDaddy SPF 设置指南 展示了这些字段在哪里)。

2. 你是不是有两条 SPF 记录?

这是头号原因,也是邮件认证领域里最容易误导人的错误提示。RFC 7208 §3.2 说得很直白:一个域名必须恰好有一条 SPF 记录。两条或以上就是 PermError——接收方会把你的 SPF 当作作废处理。有些检测工具会如实报告这种状态(“发现多条记录”);另一些则报告最终效果:未找到有效的 SPF 记录。你在面板里明明看得到一条记录,于是断定是检测工具坏了。其实不是——是你多了一条记录。

普查发现有 1,013,416 个域名携带着两条或以上的 SPF 记录——大约每 138 个尝试配置 SPF 的域名里就有 1 个,每一个的 SPF 实际上都已经被关掉了。这通常发生在更换服务商的过程中:新服务商的设置向导添加了一条全新的记录,而不是编辑旧的那条。修法是合并,绝不能是加第二条记录:把所有内容合并成一行 v=spf1 … ~all,删掉其余的。我们的数据报告两条 SPF 记录等于零 拆解了上百万个域名是怎么走到这一步的;如果这是在一次迁移之后开始出现的,见换服务商之后 SPF 就坏了。合并的时候,不要盲目地把每一个 include: 都拼接进去——每一个都要消耗 DNS 查询次数,逼近 SPF 硬性上限 10,那样就是把“未找到”换成了PermError:DNS 查询次数过多

3. 你是不是发布了错误的记录类型——或者是界面把它弄乱了?

早期的 SPF 有自己专属的 DNS 记录类型(类型 99,字面意思就叫“SPF”)。它已经被弃用了:RFC 7208 要求必须用 TXT,接收方不会查询类型 99。一些 DNS 面板的记录类型下拉菜单里仍然提供“SPF”这个选项;选了它,你的记录就是真实存在、格式正确,却对谁都不可见。检查一下类型这一列,重新发布为 TXT。

更隐蔽的一个近亲是引号问题。把一个已经带引号的值粘贴进一个自己也会加引号的字段,会产生 ""v=spf1 …""——这已经不是以 v=spf1 开头了,所以对验证方来说它根本不存在。你的 dig 输出会显示真相;DNS 面板往往在外观上把它遮住了。

4. 真的还“在传播”吗?

“再等 24–48 小时让它传播一下”是 DNS 领域里被开得最滥的处方。所谓传播,其实就是缓存过期:一旦记录的 TTL 过期(通常 1 小时,很少超过 24 小时),每个解析器都能看到新答案。24 小时之后还是找不到?那就不是传播的问题。

两个真正的元凶:负缓存——一个解析器在你添加记录之前就查询过你,把“没有这条记录”的答案缓存了下来,直到负缓存的 TTL 过期为止——以及迁移之后的域名服务器不一致,域名同时还挂着旧服务商的域名服务器和新的,导致世界上一半的人读到的是你已经不再编辑的那个区域。直接查询每一台列出的域名服务器;如果答案不一样,问题就找到了。修好注册商那边的 NS 委托,让只有你真正在编辑的那个服务商才是权威的。

5. 记录是不是太长,或者被 CNAME 挡住了?

一个 TXT 记录里的单个字符串最多 255 个字符。更长的 SPF 记录是合法的,但必须在一条记录内拆分成多个带引号的字符串——而 DNS 服务商的界面经常把这个拆分搞砸,要么截断了值,要么在某个机制中间把它切断,导致无法解析。如果你的记录很长,检查 dig 输出里有没有一个突然中断的值。

另外,DNS 规定一个已经有 CNAME 的名字上不能再有 TXT 记录。如果 mail.yourdomain.com 是指向你服务商的一条 CNAME,你就不能同时在那里放 SPF——有些面板会接受这个操作,然后只提供 CNAME 那一部分服务。要么把记录放在 CNAME 指向的地方(如果你能控制它),要么重新规划结构,让发信用的名字不再被 CNAME 占用。TXT 处理得比较干净的服务商能让这两件事都更简单——见 Cloudflare SPF 设置指南

怎么一步步修复?

  1. defaults.exposed 运行免费扫描——在你动任何东西之前,它会读取你实时的 DNS,告诉你属于五种状态里的哪一种。
  2. 确认哪些域名服务器是权威的(dig NS),并检查它们的答案是否一致。
  3. 在权威域名服务器上查询你 Return-Path 里那个确切域名的 TXT 记录。
  4. 数一数 v=spf1 的行数:零条 → 发布一条;两条或以上 → 合并成一条。
  5. 核实类型是 TXT,值恰好以 v=spf1 开头,没有混入多余的引号或被截断。
  6. 等过一个 TTL 周期,再重新扫描,确认它在各处都能干净地解析出来。

常见问题

为什么我在自己的 DNS 面板里能看到记录,检测工具却说“未找到”? 通常是原因 2 或原因 4:第二条 v=spf1 记录会让两条都作废——这是一种 PermError,有些工具会报告成“未找到”,截至 2026-06-29,有 1,013,416 个域名正处在这种状态——或者你的面板根本不是真正权威的那个 DNS 服务商。

我修好之后,检测工具要多久才能看到? 一个 TTL 周期——通常是一小时,最多 24 小时。超过这个时间,“传播”就不是原因了;重新检查这五个原因,先从域名服务器一致性开始。

我该用 DNS 面板提供的“SPF”记录类型吗? 不该。类型 99 已被弃用;RFC 7208 只要求 TXT。类型 99 的记录对现代接收方来说是不可见的。

记录现在能找到了——为什么我的邮件还是 SPF 失败? 因为 SPF 检查的是 Return-Path 域名,不是 From 标头,而且记录必须真正列出为你发信的服务器。“能找到”只是第一步;修复你的 SPF 记录 这篇指南讲的是怎么通过检查。

完全没有 SPF 记录真的这么常见吗? 是的——在 Defaults.Exposed 普查评分的 261,086,232 个域名中(截至 2026-06-29),有 121,145,609 个域名、占 46.4%,完全没有发布 SPF。“未找到”才是互联网的默认状态。

把报告发给老板

一旦记录能干净地解析出来,重新运行扫描,把评分报告转发给这个域名所属的企业负责人或客户。它会用大白话说明之前哪里坏了、你修了什么、这个域名现在处于什么状态——这正是网络保险续保和供应商安全问卷会要求提供的证据。这份报告就是这项工作的收据。

免费检查你的 SPF 记录

私密、仅域名所有者可见地看看你的域名属于五种“未找到”状态里的哪一种。

检查你的域名 → · 修复 SPF → · 换服务商之后 SPF 就坏了 → · 我们如何评分 → · 仅使用汇总数据。数据在欧盟境内存储和处理。