关于 DMARC 记录的一切

DMARC record DMARC policy

DMARC 记录是每个 DMARC 实现的核心问题,决定了该 DMARC 实现是否最终能够成功。在本文中,我们来深入了解一下 DMARC 记录。

什么是 DMARC 记录?

DMARC 记录是一条发布在域名上面的,在 DNS 中的 TXT 记录,位于 _dmarc.yourdomain.com,在这里 “yourdomain.com” 是实际的域名或者子域名。它告诉接收邮件的服务器当邮件在 DMARC 验证中失败时,应该如何处理,并且应该把邮件验证数据发往哪里。

DMARC 记录由一系列的 DMARC 标签 (tags) 组成。每一个标签是一对由 = 分隔的键/值对。下面的表格显示每一个标签的意义:

  • v: DMARC 协议版本。缺省是 "DMARC1";
  • p: 将该策略应用到在 DMARC 检查中失败的邮件。可能的值是 'none', 'quarantine', 或者 'reject'。'none' 被用来收集 DMARC 报告,并获得邮件流的相关信息;
  • rua: 一个 URI 列表,包含可供邮箱服务提供商发送 DMARC 聚合报告的邮件地址。注意:这不是一个电子邮件地址列表。DMARC 要求 UIR 列表的形式为 'mailto:[email protected]';
  • ruf: 一个 URI 列表,包含可供邮箱服务提供商发送 DMARC 法庭报告的邮件地址。注意:这不是一个电子邮件地址列表。DMARC 要求 UIR 列表的形式为 'mailto:[email protected]';
  • sp: 将该策略应用到在 DMARC 检查中失败的来自该域名上面的子域名的邮件。使用这个标签,管理者能够在所有域名上面发布一个通配的策略;
  • fo: 法庭选项。允许的值:'0',如果 DKIM 和 SPF 都失败,生成报告;'1',如果 DKIM 或者 SPF 失败,生成报告;'d',如果 DKIM 失败,生成报告;'s',如果 SPF 失败,生成报告;
  • rf: 法庭报告格式;
  • pct: 将 DMARC 策略应用到失败邮件的百分比。'pct = 50' 意味着将 'p = ' 指定的策略应用到 50% 的失败邮件。注意:该标签对 'none' 策略无效,仅对 'quarantine' 或者 'reject' 策略有效;
  • adkim: 为 DKIM 签名指定"对齐模式" ('Alignment Mode'),可以是 'r' (Relaxed) 或者 's' (Strict)。在 Relaxed 模式下,通过验证的 DKIM 签名域名 (d=) 的组织域名如果和邮件的 From 域名的组织域名一样,那么通过 DMARC 检查。在 Strict 模式下,要求两者精确匹配;
  • aspf: 为 SPF 签名指定"对齐模式" ('Alignment Mode'),可以是 'r' (Relaxed) 或者 's' (Strict)。在 Relaxed 模式下,通过验证的 SPF 域名的组织域名如果和邮件的 From 域名的组织域名一样,那么通过 DMARC 检查。在 Strict 模式下,要求两者精确匹配;
  • ri: 报告时间间隔,通常是每天发送。

DMARC 记录 VS DMARC 策略

DMARC 策略是 DMARC 记录的重要部分:它是记录中的 p= 标签的值。它指定邮件服务提供商像 Gmail 应该如何处理邮件,如果该邮件在 DMARC 验证中失败的话。有 3 个选项:none (监测), quarantine, 和 reject,每一个代表不同的反邮件冒名保护等级。

DMARC 记录例子

下面是几个 DMARC 记录例子:

  • v=DMARC1; p=none; rua=mailto:[email protected]; 这个 DMARC 记录将策略设置成监控模式 (p=none),允许监控邮件验证状态,但是并不隔离或者拒收邮件;此外,将聚合报告发送到 [email protected]
  • v=DMARC1; p=quarantine; rua=mailto:[email protected]; 这个 DMARC 记录将策略设置成隔离模式 (p=quarantine),允许监控邮件验证状态,并把 DMARC 验证失败的邮件发送到垃圾邮件箱;此外,将聚合报告发送到 [email protected]
  • v=DMARC1; p=reject; rua=mailto:[email protected]; 这个 DMARC 记录将策略设置成拒收模式 (p=reject),允许监控邮件验证状态,并拒收 DMARC 验证失败的邮件;此外,将聚合报告发送到 [email protected]。该 DMARC 记录提供完全的电子邮件冒名保护。

如何使用 DMARC 记录?

当使用 DMARC 记录的时候有两点:发布和检查。发布由域名管理者完成,而检查则由邮箱服务提供商执行。

在实施的时候,域名管理者设置好 DMARC 标签,并把 DMARC 记录发布到 DNS 中。每当邮箱服务提供商接收到一封邮件,它会到 DNS 中查找该 DMARC 记录,如果找到的话,就根据 DMARC 验证的结果应用记录中的策略。

这样,域名管理者和邮箱服务提供商配合最终达到 reject 策略,使得 DMARC 验证失败的邮件会被拒收。

如何生成 DMARC 记录?

有 2 个办法生成一条 DMARC 记录:手工生成和使用 DMARC 记录生成器。

如果是手工生成 DMARC 记录,可以使用任何文本编辑器来创建该记录。有 3 个必要的标签:v, p, 和 rua。v 标签必须是 DMARC1。根据实施的阶段,p 可以是 none, quarantine, 或者 reject。最后可以用 rua 来指点接收聚合报告的电邮地址。

使用类似于 DMARC 记录生成器的工具会更加容易并且不易出错。输入设置,比如策略,聚合电邮地址等等,然后点击 Generate DMARC Record 按钮,如下所示:

DMARC 记录生成器

马上就会生成一个 DMARC 记录。如果改动设置,要重新生成 DMARC 记录。

如何发布 DMARC 记录?

在生成 DMARC 记录以后,需要把它发布到 DNS 中,这样邮箱服务提供商能够找到它并且对应地执行。

为此,需要登录到 DNS 管理控制台,选择需要发布 DMARC 记录的域名,比如 mydomain.com。

用下面的设置,在 mydomain.com 上面创建一条 TXT 记录:

Type: TXT
Host: _dmarc
TXT Value: (上面创建的 DMARC 记录)
TTL: 1 hour

比如,在 GoDaddy 的 DNS 管理控制台看起来是这样的:

在 GoDaddy 中发布 DMARC 记录

如果使用 CloudFlare 的话,看起来是这样的:

在 CloudFlare 中发布 DMARC 记录

如何检查 DMARC 记录?

在发布以后,可能需要经过 1 个小时该 DMARC 记录才能被访问到 (通常快得多)。这时可以使用 DMARC 记录检查器来确认您已经成功发布 DMARC 记录:DMARC 检查器

使用现代的 DMARC 软件来自动化 DMARC 报告分析

在部署了几天以后,在指定的邮箱中会收到 DMARC 记录。现在可以分析这些记录来检查邮件流是否被正确设置。推荐使用现代的 DMARC 软件像 DMARCLY 来自动化 DMARC 报告分析步骤:配置邮箱,下载,分析和渲染报告。下面是一个渲染后的 DMARC 图表:

DMARCLY 控制台聚合报告

使用 DMARCLY,您所需要做的是登录到控制台,然后查看里面的图表。这真的可以节省很多时间!

Previous Post Next Post

 Protect Business Email & Improve Email Deliverability

Get a 14 day trial. No credit card required.

Create Account