4. 概览
本节提供 DMARC 环境设计和运行方式的一般概览.
4.1. 认证机制
本版本 DMARC 支持以下机制来确定 Authenticated Identifier:
-
[DKIM], 它在已验证 DKIM-Signature 头字段的 "d=" 标签内容中提供一个域级标识符.
-
[SPF], 它可以认证 [SMTP] HELO/EHLO 命令中的域 (HELO identity), 也可以认证 SMTP MAIL 命令中的域 (MAIL FROM identity). DMARC 使用 MAIL FROM identity 的 SPF 认证结果. [SPF] 的 Section 2.4 描述了 MAIL 命令为空路径时的 MAIL FROM 处理.
4.2. 关键概念
DMARC policy 由 Domain Owner 发布, 并由 Mail Receiver 在 SMTP 会话期间通过 DNS 获取.
DMARC 的过滤功能基于 RFC5322.From 字段域是否与来自 SPF 或 DKIM 的已认证域名对齐 (匹配). 当为 RFC5322.From 字段中找到的域名发布了 DMARC policy, 且该域名未通过 SPF 或 DKIM 验证时, 在投递给参与的接收方时, 该消息的处置可能受到该 DMARC policy 的影响.
需要注意, DMARC 采用的认证机制只认证 DNS 域, 不认证消息中任何电子邮件地址标识符的 local-part, 也不验证消息内容的合法性.
DMARC 的反馈组件涉及收集声称来自 Organizational Domain 的已接收消息的信息, 用于向 Domain Owner 提供定期聚合报告. 此类报告的参数和格式将在本文档后续章节讨论.
启用 DMARC 的 Mail Receiver 还可能生成逐消息报告, 其中包含与 SPF 和/或 DKIM 失败的单个消息相关的信息. 在调试部署时 (如果可以确定消息虽未通过认证但仍为合法消息) 或分析攻击时, 逐消息失败报告是有用的信息来源. 此类服务的能力由 DMARC 启用, 但在其他引用材料 (如 [AFRF]) 中定义.
如果至少一种受支持的认证机制满足以下条件, 则消息满足 DMARC 检查:
-
产生 "pass" 结果, 并且
-
基于一个按 Section 3 定义处于 alignment 的标识符产生该结果.
4.3. 流程图
+---------------+
| 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.
实质上, 步骤如下:
-
Domain Owner 构造 SPF policy, 并按照 [SPF] 将其发布到其 DNS 数据库中. Domain Owner 还按照 [DKIM] 所述配置其系统以进行 DKIM 签名. 最后, Domain Owner 通过 DNS 发布 DMARC 消息处理策略.
-
Author 生成消息, 并将消息交给 Domain Owner 指定的邮件提交服务.
-
提交服务将相关细节传递给 DKIM 签名模块, 以便生成将应用于消息的 DKIM 签名.
-
提交服务将现在已签名的消息中继到其指定的传输服务, 用于路由到预期收件人.
-
消息可能经过其他中继, 但最终到达收件人的传输服务.
-
收件人投递服务通过将必要数据传递给各自模块来执行 SPF 和 DKIM 认证检查, 每个模块都需要查询 Author Domain 的 DNS 数据 (当标识符对齐时; 见下文).
-
这些结果与 Author 的域一起传递给 DMARC 模块. DMARC 模块尝试从 DNS 中为该域获取策略. 如果未找到, DMARC 模块确定 Organizational Domain, 并重复尝试从 DNS 中获取策略. (Section 6.6.3 对此有更详细描述.)
-
如果找到策略, 则将其与 Author 的域以及 SPF 和 DKIM 结果结合, 生成 DMARC policy result ("pass" 或 "fail"), 并且可以选择导致生成两类报告之一 (未示出).
-
收件人传输服务基于 DMARC 结果将消息投递到收件人收件箱, 或采取其他本地策略动作 (未示出).
-
在被请求时, 收件人传输服务从消息投递会话中收集数据, 用于提供反馈 (见 Section 7).