[ SPF ]

使用 dig、nslookup 和收到的消息测试SPF

使用DNS查询来检查发布,并使用实际收到的消息来检查评估。这两种观察都无法单独证明所有发送路由都经过正确的身份验证。

由EmailAuth研究团队提供 · 5 分钟阅读

[ 要点 ]

  • DNS查找和SPF评估是不同的观察结果。
  • 保持TXT记录边界和实际SMTP输入完好无损。
  • 仅信任相关的接收器结果并标记合成装置。
在此页面上

测试 SPF 需要两种证据: DNS发布的内容以及接收者对特定消息评估的内容。 Dig 和 nslookup 帮助检查第一个。值得信赖的 Authentication-Results 现场或接收器侧跟踪有助于检查第二个。保持这些观察结果通过相同的包络域、发送路径和时间窗口连接。

从正确的域开始

通过您正在调查的应用程序发送代表性消息并保留其原始标头。使用以下方法从受信任的接收者证据中识别信封身份 Return-Path 作为线索,而不是将其与可见的发件人地址混淆。对于空反向路径, SPF的身份处理涉及 HELO;不要假设普通消息输入涵盖这种情况。 RFC 7208 §2.3 和 RFC 7208 §2.4 描述身份。

记下接收方观察到的发送IP、信封身份、接收方系统和消息时间。不要仅仅为了获得彩色结果而将完整的私有标头上传到不熟悉的公共检查器。最小的受控装置通常可以回答技术问题,而不会泄露不相关的消息数据。

检查已发布的TXT响应

这些是示例性只读命令。将示例名称替换为正在评估的域;它们不是已经运行测试的证据:

bounce.example.com TXT 。 nslookup - type=TXT bounce.example.com

这 BIND挖掘手册 记录查询实用程序,以及 微软的nslookup参考 描述查询选项。对绝对查询名称使用尾随点,避免意外的搜索后缀扩展。故障排除时保留完整响应,包括解析器、状态、答案和 TTL(如所示)。简短的答案可以方便阅读,但会省略诊断上下文。

检查实际所有者名称并从不相关的中选择SPF值 TXT记录。多个带引号的字符串可以属于一条TXT记录; SPF将这些字符串视为串联字符串,而不插入空格。两个单独适用 SPF记录 是一个不同的问题。 RFC 7208 §3.2 和 RFC 7208 §3.3 定义这种区别。

读取配对的合成结果

以下是完全合成的夹具,未观察到的邮件或生产记录。假设接收者看到来自文档地址192.0.2.10的直接连接, 邮件来自 invoices@bounce.example.com并可见来自invoices@example.com 。其DNS响应包含一条TXT资源记录:

bounce.example.com 。 300 IN TXT “ v=spf1 ip4:192.0.2.10 ”“ -all ”

该记录中的两个字符串连接到 v=spf1 ip4:192.0.2.10 -all。第一个字符串中的尾随空格将机制分开。对于指定的连接,地址机制匹配并且预期的SPF结果通过。相应的说明性接收器结果是:

Authentication-Results : mx.receiver.example ; spf=pass smtp.mailfrom= bounce.example.com

仅在明确的固定假设mx.receiver.example是目标的可信身份验证服务的情况下才将其视为可信。发件人可以以其他方式插入类似的文本。该示例仅显示SPF证据;它没有断言 DKIM, DMARC 或交付结果。

与此不同的合成DNS答案进行对比,该答案包含两个具有相同名称的单独适用记录:

bounce.example.com 。 300 IN TXT “ v=spf1 ip4:192.0.2.10 -all ” bounce.example.com 。 300 IN TXT “ v=spf1 ip4:192.0.2.20 -all ”

记录选择现在返回 permerror 而不是合并授权。不要仅通过计数引号来诊断这种情况;保留DNS资源记录边界。

当发布有争议时比较解析器

如果DNS编辑器和递归查询不一致,请确定权威的 名称服务器 直接查询经过验证的权威服务器。 Dig 支持表单 挖掘@服务器名称TXT;替换实际经过验证的服务器和目标名称。将答案和时间戳与递归结果进行比较。不要假设正在编辑的DNS帐户托管委派区域。

当前的权威答案和较旧的递归答案可以指示缓存。超时、 SERVFAIL和没有适用记录的成功响应是不同的观察结果。在确定原因之前保留准确的响应。避免仅仅因为一项观察结果过时而重复编辑正确的记录。

评估消息,而不仅仅是语法

TXT查找不执行SPF 。具有标准意识的评估者需要连接 IP 和相关SMTP身份,以及它解析的DNS状态。检查其跟踪是否有匹配的机制、依赖性和错误。静态记录验证器可以报告结构上可接受的策略,而不回答真正的发送者是否通过。

在目的地,读取由可信接收者插入的Authentication-Results ,而不是任意早期副本。 RFC 8601 使得信任边界变得重要。将SPF结果和身份与DKIM和DMARC结果一起记录,而不将它们视为可互换的。

保留可重复的测试记录

保存命令、查询时间、 DNS响应、评估者输入和经过编辑的收到消息证据。测试正在使用的每个显着不同的应用程序路由和地址族。将合成装置与观察到的结果分开标记。如果DNS视图看起来正确但接收者不同意,请继续 工具通过与接收者失败 而不是宣称接收者一定是错的。

DNS背景: RFC 1035第 3.2.1 节 定义资源记录 TTL; RFC 2308 §5 涵盖负缓存; RFC 8767 §4 更新 TTL 语义并在权威刷新失败时允许过时的使用。这些描述的是DNS行为,而不是更改的通用完成时间。

记录下一个决定

对于单记录固定装置,保留一条记录内显示两个字符串的边界以及连接空间; 192.0.2.10的预期SPF为通过。对于两条记录的固定装置,在评估机制之前,选择会失败并出现permerror 。单独保存可信结果假设:打印的Authentication-Results文本不独立可信。这里没有执行任何命令或邮件验证。

[ 外卖 ]

DNS查找和SPF评估是不同的观察结果。保持TXT记录边界和实际SMTP输入完好无损。仅信任相关的接收器结果并标记合成装置。

[ 按角色 ]

这对您意味着什么

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

IT/邮件管理员

保持DNS和消息证据配对。

身份、发送IP、时间必须与您诊断的问题相符。

后续步骤

  1. 保留完整的查询输出。
  2. 当答案不同时验证权威托管。
  3. 记录可信接收者的评估身份。

CISO / SecOps

控制证据处理。

身份验证标头可以包含敏感的操作细节和不受信任的断言。

后续步骤

  1. 使用经批准的诊断工具。
  2. 最小化共享标头数据。
  3. 记录接收者信任边界。

创始人/非技术人员

询问测试证明了什么。

成功的查找证明少于经过验证的业务发送路由。

后续步骤

  1. 识别正在测试的应用程序。
  2. 需要对收到的消息进行观察。
  3. 避免上传敏感消息数据。

[ 常见问题解答 ]

常见问题

dig 是否进行SPF评估?

不,它查询DNS 。将检索到的策略与标准感知评估器中的实际消息输入结合使用。

BIND挖掘手册

我应该查询哪个域?

将评估的信封域用于正在调查的邮件,考虑SPF对空反向路径的处理。

RFC 7208 §2.3 RFC 7208 §2.4

为什么我会看到几个带引号的字符串?

一条TXT记录可以包含多个字符串。在诊断重复的SPF记录之前确定记录边界。

RFC 7208 §3.2 RFC 7208 §3.3

我应该只使用 dig +short 吗?

它对于简洁检查很有用,但在调查状态、解析器和 TTL 差异时保持完整响应。

BIND挖掘手册

nslookup可以代替received-message测试吗?

不。它显示的是DNS观察结果,而不是特定接收者在SMTP期间评估的内容。

微软nslookup

我应该信任哪个Authentication-Results字段?

使用来自接收系统的可信身份验证边界的结果。任意上游副本可能是伪造的或无关的。

RFC 8601 §1.2 RFC 8601 §7.1

我应该将完整的标题粘贴到公共检查器中吗?

避免不必要的披露。使用可信赖的内部工具或保留相关输入的最小编辑固定装置。

我应该为其他管理员保存什么?

保留准确的命令、名称、解析器详细信息、时间、原始DNS响应、评估器输入和可信接收器结果。

[ 来源 ]

来源

  1. RFC 7208

    部分 §2.3 · §2.4 · §3.2 · §3.3 · §4.1 · §4.5 · §5.6

  2. RFC 8601

    部分 §1.2 · §7.1

  3. RFC 1035

    部分 §3.2.1

  4. RFC 2308

    部分 §5

  5. RFC 8767

    部分 §4

  6. BIND挖掘手册

    部分 dig 概要、简单用法和查询选项

  7. 微软nslookup

    部分 语法和注释

  8. Microsoft nslookup 设置类型

    部分 语法和TXT查询类型

[ 词汇表 ]

词汇表

SPF
连接 IP 和相关SMTP身份的授权评估。

RFC 7208 §2.4

DNS生存时间
必须再次查询缓存记录源之前的时间间隔;当权威刷新失败时,可以允许过时的使用。

RFC 8767 §4

TXT记录
一条DNS资源记录可能包含多个字符串; SPF连接其字符串而不添加空格。

RFC 7208 §3.3

企业出处

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

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

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

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

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

知识库