一封邮件可以通过某个域的身份验证,同时向收件人显示另一个域。
DMARC 如何检查邮件?
接收服务器检查通过的 SPF 或 DKIM 结果是否与可见 From 地址中的域一致。任一方法的一致通过即足以使 DMARC 通过。
- 您在 DNS 中发布 DMARC 策略。
- 接收方查询该策略,并检查 SPF、DKIM 和域一致性。
- 如果两种方法都未通过且未一致,接收方会将您请求的失败策略与自身的过滤规则一并考虑。
- 参与的接收方会将身份验证报告发送到您指定的地址。
SPF、DKIM 和 DMARC各有不同的作用。SPF 检查发送 IP 是否被授权用于信封发件人域(该域接收退信)。DKIM 验证已签名邮件内容上的签名。DMARC 将其中任一结果与收件人看到的域关联起来。
域一致性是什么意思?
一致性意味着经过身份验证的域在您选择的匹配规则下与可见的 From 域匹配。对于 SPF,经过身份验证的标识通常是信封发件人域。对于 DKIM,它是签名的 d= 域。
宽松一致性允许共享同一组织域(即注册域,例如 example.com)的子域。严格一致性要求完全匹配。例如,send.example.com 在宽松 SPF 一致性下与 example.com 一致,但在严格一致性下不一致。
aspf 和 adkim 标签为每种方法选择严格 (s) 或宽松 (r) 一致性。两者默认为宽松。DMARC 的工作原理详细介绍了这些检查。
DMARC 记录包含什么?
DMARC 记录是位于您域名下 _dmarc 处的 DNS TXT 记录。以下示例请求报告,但不请求隔离或拒绝:
_dmarc.example.com. IN TXT "v=DMARC1; p=none; rua=mailto:dmarc-aggregate@example.com; ruf=mailto:dmarc-afrf@example.com; pct=100"
| 标签 | 示例中的含义 |
|---|---|
v=DMARC1 | 将该记录标识为 DMARC。 |
p=none | 在您检查身份验证结果期间不请求 DMARC 强制执行。 |
rua | 指定聚合报告邮箱。 |
ruf | 指定失败报告邮箱;接收方可能不提供这些报告。 |
pct=100 | 对所有未通过的邮件应用请求的强制执行策略;它不会将 p=none 变为强制执行。 |
将示例域和报告地址替换为您控制的域和地址。DMARC 记录说明涵盖了其他设置。
DMARC 策略可以执行什么?
您的策略请求接收方如何处理未通过 DMARC 的邮件。最终的投递决定由接收方做出。
| 策略 | 您的请求 |
|---|---|
p=none | 不应用 DMARC 特定的强制执行。其他垃圾邮件和安全检查仍然适用。 |
p=quarantine | 将未通过的邮件视为可疑,通常放入垃圾邮件文件夹。 |
p=reject | 拒绝未通过的邮件。 |
DMARC 针对的是他人在 From 地址中未经授权使用您的域。它无法阻止他人使用不同但外观相似的域或复制您的显示名称。DMARC 通过也不保证邮件进入收件箱。RFC 7489,即 DMARC 规范,将邮件是否接受的决定留给接收方。
如何开始执行策略?
先从 p=none 和聚合报告开始,然后在收紧策略之前识别并验证每个合法发送源。这可以防止强制执行策略阻止您忘记配置的发件方。
聚合报告显示参与接收方报告的身份验证结果。失败报告在接收方提供时给出邮件级详情。缺少报告并不能证明没有人使用过您的域。
在解决合法的身份验证失败后,再切换到隔离或拒绝。DMARC 策略说明和设置步骤涵盖了该推进流程。
如何为 Bird 配置 DMARC?
您需要发布为发送域返回的记录:DKIM、return-path CNAME 和有效的 DMARC 策略。覆盖该域的有效策略可以从其组织域继承。p=none 满足 Bird 的 DMARC 检查。
域响应在 capabilities.dmarc.status 中报告策略检查结果。检查 capabilities.sending.status 以了解 DKIM、return-path 和 DMARC 的就绪状态。两个字段使用以下状态:
| 状态 | 含义和操作 |
|---|---|
pending | 验证尚未运行或正在运行;请等待结果。 |
verified | 该功能的 DNS 记录与预期值匹配。 |
warning | 之前验证通过的记录不再匹配;请在宽限期结束前修复。发送尚未受到影响。 |
failed | DNS 值有误;请更正。 |
temporary_failure | DNS 查询暂时失败;验证会自动重试。 |
not_configured | 该功能尚未为此域设置。 |