什么是 DNS DMARC 记录?

DMARC 是电子邮件安全的一个重要部分。DMARC 政策存储在 DNS TXT 记录中。

学习目标

阅读本文后,您将能够:

  • 说明使用 DMARC 的原因
  • 描述 DMARC 政策
  • 了解 DNS TXT 记录是如何用于 DMARC 的

相关内容


想要继续学习吗?

订阅 TheNET,这是 Cloudflare 每月对互联网上最流行见解的总结!

参阅 Cloudflare 的隐私政策,了解我们如何收集和处理您的个人数据。

复制文章链接

什么是 DMARC?

基于域的消息身份验证、报告和一致性 (DMARC) 是一种验证电子邮件的方法。DMARC 政策在检查一个域的发送方策略框架 (SPF)域名密钥识别邮件 (DKIM) 记录(这些都是额外的电子邮件身份验证方法)后,告诉接收电子邮件的服务器该怎么做。

为防止电子邮件欺骗,DMARC 和其他电子邮件身份验证方法必不可少。每个电子邮件地址都有一个域名,即地址中“@”符号之后的部分。恶意方和垃圾邮件发送者有时会试图从他们未被授权使用的域名发送电子邮件——就像有人在信上写上错误的回信地址。他们这样做可能是为了试图欺骗用户(就像在进行网络钓鱼攻击时),以及其他原因。

DMARC、DKIM 和 SPF 结合起来,对电子邮件发送者进行背景检查,以确保他们确实为所声称的人。

例如,设想一个垃圾邮件发送者从地址“[email protected]”发送了一封电子邮件,尽管事实上他们未获授权从“example.com”域发送电子邮件。垃圾邮件发送者会使用“[email protected]”替换电子邮件中的“发件人”标头来实现这一点——他们不会从实际的 example.com 电子邮件服务器发送电子邮件。收到这封电子邮件的电子邮件服务器可以使用 DMARC、SPF 和 DKIM,发现这是一封未经授权的电子邮件,然后它们可以将该电子邮件标记为垃圾邮件或拒绝发送。

注册
任何 Cloudflare 计划均可提供安全性和速度

什么是 DMARC 政策?

DMARC 政策决定在对一封电子邮件进行 SPF 和 DKIM 记录检查后发生的情况。一封电子邮件要么通过 SPF 和 DKIM,要么不通过。DMARC 政策决定了当电子邮件未通过检查时,会被标记为垃圾邮件、被阻止,还是被传递给预定的收件人。(如果没有 DMARC 记录,电子邮件服务器仍然可以将电子邮件标记为垃圾邮件,但 DMARC 对何时这样做提供了更明确的指示)。

Example.com 的域名政策可以是:

“如果一封电子邮件未能通过 DKIM 和 SPF 测试,则将其标记为垃圾邮件。”

这些政策不是作为人类可读的句子来记录的,而是作为机器可读的命令,以便电子邮件服务能够自动解释它们。该 DMARC 政策实际上类似于以下内容:

v=DMARC1; p=quarantine; adkim=s; aspf=s;

这是什么意思?

  • v=DMARC1 表示该 TXT 记录包含一个 DMARC 政策,应该被电子邮件服务器解释为该政策的内容。
  • p=quarantine 表示电子邮件服务器应当“隔离”未通过 DKIM 和 SPF 的电子邮件,将它们视为潜在的垃圾邮件。其他可能的设置包括 p=none,它允许未通过检查的电子邮件仍然传递,以及 p=reject,它指示电子邮件服务器阻止未通过检查的电子邮件。
  • adkim=s 意味着 DKIM 检查是“严格的”。将 s 改为 r,即可将其设置为“宽松的”,比如 adkim=r
  • aspf=sadkim=s 的意义相同,但是针对 SPF。
  • 注意,aspfadkim 是可选设置。p= 属性指示电子邮件服务器应当如何处理那些未通过 SPF 和 DKIM 的电子邮件。

如果 example.com 的管理员想让这个政策更加严格,向电子邮件服务器发出更强烈的信号,将未经授权的邮件视为垃圾邮件,则可以按以下方式调整“p=”属性:

v=DMARC1; p=reject; adkim=s; aspf=s;

这行命令的大体意思是:“如果一封电子邮件没有通过 DKIM 和 SPF 测试,就不要发送。”

报告
保护您的 DNS 基础设施

什么是 DMARC 报告?

DMARC 政策可以包含发送报告的指示,这些报告关于通过或未通过 DKIM 或 SPF 的电子邮件。通常情况下,管理员会设置报告,将其发送到第三方服务,该第三方服务将报告简化为更易理解的形式,以便管理员无需面对大量无效信息。DMARC 报告极为重要,因为它们给管理员提供所需的信息,以便决定如何调整其 DMARC 政策。例如,当他们的合法电子邮件没有通过 SPF 和 DKIM,或者当垃圾邮件发送者试图发送非法电子邮件时,就需要进行调整。

example.com 管理员会在这个政策中添加 rua 部分,将他们的 DMARC 报告发送给第三方服务(电子邮件地址为“[email protected]”)。

v=DMARC1; p=reject; adkim=s; aspf=s; rua=mailto:[email protected];

什么是 DMARC 记录?

DMARC 记录存储了一个域的 DMARC 政策。DMARC 记录存储在 Domain Name System (DNS) 中,以 DNS TXT 记录的形式存在。一个 DNS TXT 记录几乎可以包含域管理员想要与他们的域相关联的任何文本。DNS TXT 记录的用途之一是存储 DMARC 政策。

(请注意,DMARC 记录是包含 DMARC 政策的 DNS TXT 记录,而不是专门的 DNS 记录类型。)

example.com 的 DMARC 政策可能如下所示:

名称 在提示下键入 内容 TTL
_dmarc.example.com TXT v=DMARC1; p=quarantine; adkim=r; aspf=r; rua=mailto:[email protected]; 32600

在这个 TXT 记录中,DMARC 政策包含在“Content”字段中。

那些不发送电子邮件的域名怎么办?

不发送电子邮件的域名也应当会有一个 DMARC 记录,以防止垃圾邮件发送者使用该域名。DMARC 记录应当有一个 DMARC 政策,拒绝所有未通过 SPF 和 DKIM 的电子邮件——这应当是该域名发送的所有电子邮件。

换句话说,如果 example.com 没有被配置为发送电子邮件,则所有电子邮件都将无法通过 SPF 和 DKIM 且被拒绝。

如何使用 Cloudflare 设置 DMARC 记录

如需在 Cloudflare 中设置此记录的帮助,请使用电子邮件安全 DNS 向导

进一步了解电子邮件的 DNS 记录:

DMARC 将在 RFC 7489 中进行详述。