Skip to main content

4. Overview (概述)

本节提供 DMARC 环境的设计和操作的一般概述。

4.1. Authentication Mechanisms (认证机制)

此版本的 DMARC 支持以下用于确定认证标识符的机制:

  • [DKIM], 在经过验证的 DKIM-Signature 头字段的"d="标签的内容中提供域级别标识符。

  • [SPF], 可以认证在 [SMTP] HELO/EHLO 命令中找到的域 (HELO 标识) 和在 SMTP MAIL 命令中找到的域 (MAIL FROM 标识)。DMARC 使用 MAIL FROM 标识的 SPF 认证结果。[SPF] 的第 2.4 节描述了 MAIL 命令具有空路径的情况下的 MAIL FROM 处理。

4.2. Key Concepts (关键概念)

DMARC 策略由域所有者发布,并在 SMTP 会话期间由邮件接收方通过 DNS 检索。

DMARC 的过滤功能基于 RFC5322.From 字段域是否与来自 SPF 或 DKIM 的认证域名对齐 (匹配)。当为 RFC5322.From 字段中找到的域名发布了 DMARC 策略,并且该域名未通过 SPF 或 DKIM 验证时,当传递给参与的接收方时,该消息的处置可能会受到该 DMARC 策略的影响。

重要的是要注意,DMARC 采用的认证机制仅认证 DNS 域,不认证消息中找到的任何电子邮件地址标识符的本地部分,也不验证消息内容的合法性。

DMARC 的反馈组件涉及收集声称来自组织域的已接收消息的信息,以便向域所有者提供定期的聚合报告。此类报告的参数和格式在本文档的后续部分中讨论。

启用 DMARC 的邮件接收方还可能生成包含与未通过 SPF 和/或 DKIM 的单个消息相关的信息的每条消息报告。每条消息的失败报告在调试部署时 (如果可以确定消息是合法的,即使认证失败) 或在分析攻击时是有用的信息来源。此类服务的功能由 DMARC 启用,但在其他参考材料 (如 [AFRF]) 中定义。

如果至少有一个支持的认证机制满足以下条件,则消息满足 DMARC 检查:

  1. 产生"通过 (pass)" 结果,并且

  2. 基于第 3 节中定义的对齐标识符产生该结果。

4.3. Flow Diagram (流程图)

    +---------------+
| Author Domain |< . . . . . . . . . . . . . . . . . . . . . . .
+---------------+ . . .
| . . .
V V V .
+-----------+ +--------+ +----------+ +----------+ .
| MSA |<***>| DKIM | | DKIM | | SPF | .
| Service | | Signer | | Verifier | | Verifier | .
+-----------+ +--------+ +----------+ +----------+ .
| ^ ^ .
| ************** .
V * .
+------+ (~~~~~~~~~~~~) +------+ * .
| sMTA |------->( other MTAs )----->| rMTA | * .
+------+ (~~~~~~~~~~~~) +------+ * .
| * ........
| * .
V * .
+-----------+ V V
+---------+ | MDA | +----------+
| User |<--| Filtering |<***>| DMARC |
| Mailbox | | Engine | | Verifier |
+---------+ +-----------+ +----------+

MSA = Mail Submission Agent (邮件提交代理)
MDA = Mail Delivery Agent (邮件传递代理)

上图显示了消息通过 DMARC 感知系统的简单流程。实线表示实际的消息流,虚线涉及用于检索与支持的消息认证方案相关的消息策略的 DNS 查询,星号线表示消息处理模块和消息认证模块之间的数据交换。"sMTA" 是发送 MTA,"rMTA" 是接收 MTA。

本质上,步骤如下:

  1. 域所有者根据 [SPF] 构建 SPF 策略并在其 DNS 数据库中发布。域所有者还按照 [DKIM] 中的描述配置其系统进行 DKIM 签名。最后,域所有者通过 DNS 发布 DMARC 消息处理策略。

  2. 作者生成消息并将消息交给域所有者指定的邮件提交服务。

  3. 提交服务将相关详细信息传递给 DKIM 签名模块,以生成要应用于消息的 DKIM 签名。

  4. 提交服务将现在已签名的消息中继到其指定的传输服务,以路由到其预期的收件人。

  5. 消息可能通过其他中继,但最终到达收件人的传输服务。

  6. 收件人传递服务通过将必要的数据传递给各自的模块来进行 SPF 和 DKIM 认证检查,每个模块都需要查询作者域的 DNS 数据 (当标识符对齐时; 见下文)。

  7. 这些结果与作者的域一起传递给 DMARC 模块。DMARC 模块尝试从 DNS 中检索该域的策略。如果未找到,DMARC 模块确定组织域并重复尝试从 DNS 中检索策略。(这在第 6.6.3 节中有更详细的描述。)

  8. 如果找到策略,它将与作者的域以及 SPF 和 DKIM 结果结合以产生 DMARC 策略结果 ("通过 (pass)" 或"失败 (fail)"),并且可以选择生成两种报告之一 (未显示)。

  9. 收件人传输服务要么将消息传递到收件人收件箱,要么根据 DMARC 结果采取其他本地策略操作 (未显示)。

  10. 当请求时,收件人传输服务从消息传递会话收集数据以用于提供反馈 (参见第 7 节)。