[ DNS和域名 ]

DNS TXT记录:引用、多个字符串和记录边界

发布电子邮件身份验证时,保留包含多个字符串的一条TXT记录与多个独立的TXT记录之间的差异。

由EmailAuth研究团队提供

[ 要点 ]

  • 一条TXT记录可以包含多个有序字符串。
  • SPF连接字符串时不添加空格,并且不合并单独的策略。
  • 验证字节和所有者名称,然后验证实际的邮件路径。
在此页面上

DNS编辑器可以显示多个引用的片段,而无需创建多个记录。相反,对于一个人来说,两行看起来像是一份保单,而对于接收者来说,则保留两条独立的记录。在声明身份验证记录正确之前,请检查确切值和记录边界。

读取DNS表示

参考: RFC 1035 §3.3, RFC 1035 §3.3.14, RFC 7208 §3.3.

RFC 1035将TXT数据定义为一个或多个字符串。每个字符串限制为 255 个八位字节,不一定是 255 个显示字符。较长的值可以占用一条记录中的多个字符串。应用程序定义如何解释该数据。为了 SPF, RFC 7208明确要求在内部连接字符串 一个记录 无需插入空格。

区域文件表示中的引号分隔字符串。它们不会自动成为DNS值中的原义引号。提供者的表单可能需要原始文本、带引号的区域文件语法或结构化字符串列表。遵循其记录的输入格式并检查结果答案,而不是添加或删除引号,直到屏幕看起来熟悉为止。

保留空间和独立记录

参考: RFC 7208 §4.5.

如果SPF值在某个机制之前被分割,请保留其中一个字符串内的分隔空间。两个相邻的字符串包含 v=spf1 和 ip4:192.0.2.10 -all 如果没有该空间,将重建为无效的令牌序列。在这个格式错误的示例中,重构的前缀是 v=spf1ip4,这不是有效的SPF版本令牌。如果没有选择其他记录作为SPF策略,则SPF结果为 None。保留确切的应用程序语法,而不是假设每个TXT使用者都以相同的方式处理空格。

请勿单独加入 TXT记录 仅仅因为解析器将它们返回到一个集合中。同一所有者有多个不相关的TXT记录是正常的。在该所有者处选择作为SPF策略的多个记录不是: SPF返回永久错误而不是合并其授权列表。在诊断中保留完整的答案和应用程序的选择规则。

重现边界测试

合成区域夹具 A 包含一条记录: example.com 。 300 IN TXT “ v=spf1 ip4:192.0.2.10" “ -all ”。按顺序重建其字符串而不添加字节。预期的SPF文本为 v=spf1 ip4:192.0.2.10 -all。文档地址仅供参考,不得用于授权生产发送者。

夹具 B 用两条记录替换 A: example.com 。 300 IN TXT “ v=spf1 ip4:192.0.2.10 -all ” 和 example.com 。 300 IN TXT “ v=spf1 ip4:192.0.2.20 -all ”。预期的SPF选择是多个策略记录和永久错误。夹具 C 保留 A 并添加 example.com 。 300 IN TXT “站点验证=合成”;不相关的验证记录不是额外的SPF策略。

在隔离的测试区域中单独加载每个夹具。询问 挖掘@AUTH example.com 。 TXT +norecurse,用实验室权威代替 AUTH。为每个返回的记录及其有序字符串列表保留一个资源记录对象。一个可靠的线束应该区分 A 和 B,即使它的显示屏包含长输出。这些是预期结果,而不是报告的现场测试。

验证发布的值

比较编辑器输入、每个权威答案和递归答案。检查所有者名称是否有意外重复的区域后缀。使用DNS库在自动检查时保留记录结构;面向行的文本抓取可能会将换行与记录边界混淆。

在生产变更之前保留先前的值和批准。发布后,用无害内容测试相关邮件路径并捕获身份验证证据。正确的TXT语法建立了DNS前提条件;它不能证明服务签署了消息或接收者接受了它们。

保持证据范围明确

本地字符串连接确认保留的空间产生v=spf1 ip4:192.0.2.10 -all ;省略它会产生未选择的v=spf1ip4前缀。这是文本/选择插图,而不是执行的SPF评估器或实时DNS查询。

[ 外卖 ]

一条TXT记录可以包含多个有序字符串。 SPF连接字符串时不添加空格,并且不合并单独的策略。验证字节和所有者名称,然后验证实际的邮件路径。

[ 按角色 ]

这对您意味着什么

选择您的角色以执行后续实际步骤。

IT/邮件管理员

比较字节和记录边界

记录内的字符串片段和答案中的单独记录必须保持可区分。

后续步骤

  1. 检查有序字符串并记录边界。
  2. 测试重复策略和分割字符串装置。
  3. 比较权威答案和递归答案。

CISO / SecOps

保护策略发布路径

有意义的控制是授权的、可验证的DNS数据,而不是令人放心的屏幕截图。

后续步骤

  1. 检查谁可以更改身份验证DNS 。
  2. 需要准确的前后证据。
  3. 将语法检查与消息证明分开。

创始人/非技术人员

将DNS发布视为服务更改

即使提供商设置看起来已完成,一个小的格式错误也可能会中断邮件。

后续步骤

  1. 需要经过测试的出版物清单。
  2. 命名每个发送服务的所有者。
  3. 保持恢复批准可用。

[ 常见问题解答 ]

常见问题

255 个八位位组是最大TXT记录大小吗?

不,这是每个字符串的限制;一条TXT记录可以包含多个字符串,但受DNS大小限制。

RFC 1035 §3.3 RFC 1035 §3.3.14

SPF是否在字符串之间插入空格?

不。在实际字符串中包含所有必需的空格。

RFC 7208 §3.3

接收者可以合并两个SPF记录吗?

不会。选择多个SPF记录会导致永久性错误。

RFC 7208 §4.5

不相关的TXT记录可以共存吗?

是的。应用程序根据自己的语法和所有者名称选择记录。

RFC 7208 §4.5

我应该将引号字符粘贴到DNS表单中吗?

使用提供商记录的输入格式,然后检查实际的DNS值。

包裹的显示器能证明有两条记录吗?

不。检查资源记录边界而不是视觉换行符。

为什么记录名称错误?

一些编辑者将区域后缀附加到相对名称上。查询预期的完全合格所有者。

正确的TXT查找是否证明DMARC通过?

不可以。必须在代表性消息上遵守身份验证和一致性。

RFC 9989 §5.3.5

[ 来源 ]

来源

  1. RFC 9989

    部分 §5.3.5

  2. RFC 7208

    部分 §3.3 · §4.5

  3. RFC 1035

    部分 §3.3 · §3.3.14

  4. ISC BIND 挖掘参考

    部分 语法,-x 反向查找,norecurse 查询选项

[ 词汇表 ]

词汇表

TXT字符串
最多包含 255 个数据八位字节的长度分隔字符串; TXT RR 包含一个或多个此类字符串。

RFC 1035 §3.3 RFC 1035 §3.3.14

记录边界
单独的资源记录和一个记录中的字符串之间的区别; SPF选择不会合并单独的策略。

RFC 7208 §3.3 RFC 7208 §4.5

企业出处

为什么顶级金融机构和政府 退役了他们的电子邮件安全仪表板。

传统的电子邮件身份验证平台会向您出售仪表板并要求您的工程师来完成这项工作。在高风险环境中,手动监督意味着延迟执行、配置漂移和不受监控的影子域。

EmailAuth是代理电子邮件来源平台。 我们的代理人强制执行 p=reject,保持第三方发件人一致并将您的域名移至完整状态 RFC 9989 合规性、新的DMARC标准,以及人机交互审核能力。

政府 大型企业 一级金融机构

SaaS · 专用租赁 · 气隙本地部署 · BYOK 加密

知识库