无效域错误是一种需要调查的诊断,而不是对一个故障的标准化解释。名称可能语法错误、语法有效但不存在、暂时无法解析、不适合邮件路由或被服务器的本地身份策略拒绝。在编辑DNS之前保留整个诊断及其引用的字段。更改错误的名称可能会中断工作邮件,而无法解决错误。
识别领域和语法
参考: RFC 5321 §2.3.5, RFC 5321 §4.1.2.
记录拒绝的值是否在 EHLO, 邮件来自、RCPT TO、可见标头或DNS记录。这些上下文不共享一种通用语法。对于普通SMTP域名, RFC 5321定义了标签规则并单独讨论了地址文字。 SMTP主机名中的下划线不会仅仅因为在特殊DNS所有者名称(例如_dmarc或_domainkey中使用下划线而变得有效。
RFC 5321第 2.3.5 和 4.1.2 节 是SMTP域语法的适当起点。不要使用简单的主机名正则表达式来验证每个电子邮件地址、国际化地址或DNS记录。本地装置有意仅覆盖有界的 ASCII 字母数字连字符名称子集并报告该限制。
将解析与语法分开
参考: RFC 1035 §4.1.1, RFC 5321 §5, RFC 7505 §3.
语法上有效的名称可以返回NXDOMAIN ,表明查询的名称不存在于该DNS响应中。诸如SERVFAIL之类的临时解决失败并不等于不存在,不应通过发明新的解决方案来修复 SPF记录。保留查询的所有者、类型、解析器、响应状态、答案和时间戳。授权时通过组织的正常诊断流程检查权威数据和授权。
对于收件人路由,请检查MX和适用的SMTP回退规则,而不是仅测试域是否有网站。域可以解析为 Web 使用而不接受邮件。空MX明确表明该域不接受邮件;这不是失踪 MX记录 随意更换。 RFC 7505 定义了这种区别。主机的 A 或 AAAA记录 不是邮件服务正常运行的证据。
将记录解析器错误分开
参考: RFC 7208 §4.5, RFC 7208 §4.6, RFC 7208 §6.
当身份验证记录的DNS所有者名称有效时,该记录可能具有无效机制、冲突记录或不受支持的构造。这些都是记录解释问题。重复的SPF记录不是无效的域标签。相反,一个看起来正确的 SPF value 无法修复客户端使用的非法主机名。遵循特定记录的解析器和规范,而不是使用通用域检查器作为最终权威。
保留的离线固定装置将mail.example .test 在其窄主机名语法中分类为有效,将 bad_name.example.test 和 - bad.example .test 分类为无效,将missing.example .test 分类为语法有效。单独的合成DNS映射将丢失的名称NXDOMAIN 、不同的名称SERVFAIL以及示例MX答案标记为 null MX 。不执行公共DNS查询或生产更正。这一练习说明了为什么这些状态不应崩溃为一个红色指标。
仅修复已确认的原因
参考: RFC 5321 §4.2.
对于语法,请更正生成的应用程序或配置的身份。对于DNS存在,请在添加记录之前确认所有权和预期服务。对于临时DNS故障,请调查解析器或权威机构的可用性。对于SMTP策略,请阅读完整的服务器响应和当前的提供商文档。不要用不相关的域替换有效身份来消除错误。
更改后,重复相同的事务或查询并保留这两个结果。有效的语法结果、成功的DNS应答和接受的SMTP命令是单独的检查点。仅当原始失败操作在预期的安全和路由策略下运行时才关闭事件。
比较真实的SPF解析器结果
参考: RFC 7208 §4.5, RFC 7208 §4.6, RFC 7208 §6.
保留的 2026 年 11 月 7 日解析器测试使用 pyspf 2.0.14 而不是原始令牌白名单。它的DNS查找挂钩为 parser.test 提供固定的TXT答案,并且不执行网络查找。带注释的正向记录为v=spf1 ip4:127.0.0.2 -all :版本选择SPF , ip4 授权受控源地址, -all使其他主机失败。解析器返回来自127.0.0.2的查询的 pass。
用虚假回报取代机制 permerror 因为未知的机制不会被忽略。返回两个选定的v=spf1记录也会返回permerror ,与是否授权主机无关。将future=abc添加到肯定记录会返回 pass:这是一个语法上有效的未知修饰符, RFC 7208第 6 节要求评估者忽略它。所有四种情况都保留记录注释和准确输入、预期结果、实际结果和解析器解释。请参阅RFC 7208第 4.5、4.6 和 6 节。
这些观察结果将无效机制、多个选定记录和未知修饰符分开,而不是将它们折叠成一个不受支持的标签。它们是使用受控DNS输入的解析器测试,而不是公共DNS观察或详尽的SPF一致性套件。它们也不会更改主机名语法结果:记录语义和包含记录的域名是不同的层。原始白名单仅保留作为标记的历史子集说明,而不是作为这些基于标准的结论的来源。