钓鱼与伪造邮件已如此普遍,以至于多数人看到冒充银行、快递公司甚至自己公司的假消息时,几乎连眼睛都不眨。但在幕后,这些攻击造成真实损害,冲击送达率、信任,某些情况下还导致安全 breach。

这正是 DMARC 出场的地方。它是一项协议,帮助域名所有者告诉邮件服务商:"嘿,只有这些来源被允许以我的名义发信;如果其他来源尝试,按以下方式处置。"DMARC 记录让这一切成为可能——它只是一段写在你的 DNS 中的文本记录,却在决定一封邮件是被投递、被标记还是被拦截中扮演关键角色。

本文将拆解 DMARC 记录是什么、如何工作,以及为何做对它对邮件安全至关重要。

什么是 DMARC 记录

DMARC 记录本质上是一条 DNS 中的 TXT 记录。它指示接收服务器如何处理那些声称来自你的域名、却未通过 SPF 与 DKIM 校验的消息。当有人以你的域名发信时,收件方的邮件服务器会查阅你的 DMARC 记录,以决定:若消息未通过验证,应照常投递、标记为可疑还是直接阻断?

下面是一个 DMARC 记录的基本示例:

v=DMARC1; p=none; rua=mailto:dmarc-reports@yourdomain.com

这条记录包含多个标签:

  • v=DMARC1 设定版本;
  • p=none 指示邮件服务器不采取动作,仅监控;
  • rua 提供接收 DMARC 报告的邮箱地址。

整串字符串以单行纯文本书写,发布在你域名的 DNS 服务器中。该记录具体添加在子域 _dmarc.yourdomain.com 下,作为一条 TXT 记录。

DMARC 记录的构成

DMARC 记录采用键值标签结构,每个键值服务于特定目的:部分必填,部分可选。组合使用这些键值,定义了你的域名如何处理认证失败,以及报告发往何处。常用标签如下:

  • v:设定 DMARC 版本,当前始终为 DMARC1,且必须是记录中的第一个标签。
  • p:策略标签,告诉邮件服务器邮件认证失败时的处置。可设为 none(仅监控)、quarantine(送垃圾箱)或 reject(直接阻断)。
  • rua:指定接收聚合报告的邮箱地址,报告让你宏观了解跨邮件服务器的认证结果。格式为 rua=mailto:dmarc-reports@yourdomain.com。
  • ruf:该标签让你在 SPF 或 DKIM 失败时接收取证或失败报告(含详细消息)。它是可选标签,应谨慎使用,因为并非所有服务商都支持,且可能引发隐私警示。
  • pct:控制策略适用的邮件百分比。例如 pct=50 意味着只有一半失败消息受策略影响,在逐步收紧执行时很有用。
  • aspf:设定 SPF 的对齐模式,aspf=r 为宽松、aspf=s 为严格;严格意味着返回路径域名必须与"发件人"域名完全匹配。
  • adkim:与 aspf 同理但针对 DKIM,adkim=s 为严格对齐、adkim=r 为宽松。

把这些组合在一起,一条完整记录可能像这样:

v=DMARC1; p=quarantine; rua=mailto:dmarc@yourdomain.com; pct=100; aspf=s; adkim=s

它指示收件方隔离失败消息,向你邮箱提供每日摘要报告,并对 SPF 与 DKIM 使用严格对齐。每个标签都发挥作用,设定正确与否,决定了是有效执行还是意外丢信。

DMARC 记录发布在何处

DMARC 记录与 SPF、DKIM 记录一样,发布在你域名的 DNS 中,具体位于专用子域 _dmarc.yourdomain.com 之下。该前缀是必需的,邮件服务器正是据此知道去哪里检索你的 DMARC 策略。记录类型应设为 TXT,值即前述 DMARC 策略字符串。

例如,若你拥有 domain.com,你的 DNS 区域应包含在 dmarc.domain.com 的一条 TXT 记录,类似:

v=DMARC1; p=none; rua=mailto:reports@example.com

你可在多数 DNS 仪表盘中手动添加。Cloudflare、GoDaddy、AWS Route 53 等平台均支持。填入值时务必小心——多余的空格或微小的语法错误都会破坏策略运作。若 DMARC 记录缺失,接收邮件服务器将无从处置失败消息,没有指令可循,你的域名便暴露于伪造与钓鱼攻击之下。

如何创建或生成 DMARC 记录

创建 DMARC 记录主要有两种方式:手动书写,或使用生成器工具以降低出错概率。

手动方式:若你熟悉 DNS 记录与标签,可自行拼出 DMARC 字符串。始终以 v=DMARC1(必填)开头,再设定策略 p=none、quarantine 或 reject,随后添加 rua 标签以开始接收聚合报告,还可按需加入 pct、aspf、adkim 或 ruf 等标签获取更多控制。一个简单的起步字符串:

v=DMARC1; p=none; rua=mailto:dmarc-reports@yourdomain.com

构建完成后,将其作为 TXT 记录发布在 _dmarc.yourdomain.com 之下。

使用 DMARC 生成器:MXToolbox、EasyDMARC、dmarcian 等工具提供简单表单,选择偏好设置后自动生成语法正确的字符串,对 DNS 新手尤为有用,可避免拼写或配置错误。一个关键决策是选择合适的策略:若刚起步,使用 p=none 监控邮件表现而不影响投递,这有助于在转向 quarantine 或 reject 之前验证 SPF 与 DKIM 对齐。执行很重要,但仅在你准备就绪时。

创建 DMARC 记录的最佳实践

与任何优秀的安全控制一样,DMARC 在谨慎铺开、密切监控时效果最佳。最安全的起点之一是 p=none——该策略不阻断或隔离任何邮件,仅监控后台发生的情况,让你收集报告(rua)并看清哪些服务在以你的名义发信、是否通过 SPF 与 DKIM 校验。

务必在初始 DMARC 记录中包含 rua 标签。接收邮件服务器发送的聚合报告让你看见"谁在以你的域名发信"以及这些消息如何被对待,这是在强制执行前验证认证配置是否工作的唯一途径。在将策略收紧至 quarantine 或 reject 前,确保 SPF 与 DKIM 均正确对齐——即你的 SPF 记录覆盖所有合法发送服务(如 Google Workspace、Mailchimp 或你的 CRM),且 DKIM 签名正确配置并与域名对齐;若任一环节损坏或错位,收紧执行时合法邮件可能被阻断。报告干净后,可通过调整 pct 标签逐步铺开执行,例如先 pct=25 再随时间提升,这种分阶段方法有助于避免扰乱业务或通信的投递问题。

DMARC 记录与 DMARC 策略:有别吗

DMARC 策略与 DMARC 记录常被互换使用,二者密切相关却不完全相同。DMARC 记录是 DNS 服务器中发布于 _dmarc.yourdomain.com 下的实际 TXT 记录,是包含 v=DMARC1、p=、rua= 等全部必要标签的完整字符串。而策略只是该记录的一部分,具体指 p 标签,它告诉接收服务器消息未通过 SPF 与 DKIM 校验时的处置——你的策略可能是 none、quarantine 或 reject,取决于你希望执行的严格程度。

结语

邮件的送达率受你的 DMARC 记录影响,它同时也保护你的域名免受钓鱼与伪造攻击。配置得当的 DMARC 能帮助你的客户与员工规避可疑和欺诈邮件,并降低你的邮件落入垃圾文件夹的几率。尽管 DMARC 看似有益,但需注意:若配置不当,它造成的危害可能大于收益。