什么是 DMARC、DKIM 和 SPF?

SPF、DKIM 和 DMARC 通过核对电子邮件是否来自其声称的域名,帮助验证电子邮件发件人的身份。这三种身份验证方法对于防止垃圾邮件、网络钓鱼攻击和其他电子邮件安全风险非常重要。

学习目标

阅读本文后,您将能够:

  • 描述 SPF、DKIM 和 DMARC 的工作原理
  • 解释这些方法如何帮助验证电子邮件发件人的身份
  • 理解 SPF、DKIM 和 DMARC 中使用的 DNS 记录类型

相关内容


想要继续学习吗?

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

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

复制文章链接

什么是 DMARC、DKIM 和 SPF?

DMARC、DKIM 和 SPF 是三种电子邮件身份验证方法。它们共同帮助防止垃圾邮件发件人、网络钓鱼程序和其他未经授权的各方代表并非属于他们的域名*发送电子邮件

DKIM 和 SPF 可以比作办公室墙上张贴的营业执照或医生的医学学位,帮助证明其合法合理性。

同时,DMARC 告诉邮件服务器在 DKIM 或 SPF 验证失败时该怎么做,无论是将验证失败的邮件标记为“垃圾邮件”,还是将电子邮件完全丢弃。

没有正确设置 SPF、DKIM 和 DMARC 的域名可能会发现,他们发送的电子邮件被隔离为垃圾邮件,或没有传送给收件人。他们还有被垃圾邮件制作者冒充的风险。

*域名,粗略地说就是一个网址,例如“example.com”。域名构成电子邮件地址的后半部分:例如 alice@example.com。

报告
2023 年网络钓鱼威胁报告
与专家讨论
了解 Cloudflare 保护您业务的方式

SPF 的工作原理

发件人策略框架 (SPF) 是让域名列出他们发送电子邮件的所有服务器。可以把它想象成一个公开的员工名录,帮助确认某人是否为某组织的员工。

SPF 记录列出了允许使用该域名发送电子邮件的所有服务器的所有 IP 地址,就像员工名录列出了组织中所有员工的名字。收到电子邮件的邮件服务器可以对照 SPF 记录进行检查,确认后再将其传送至收件人的收件箱。

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

DKIM 是如何工作的?

域名密钥识别邮件 (DKIM) 让域名所有者能够自动“签署”来自其域名的电子邮件,就像支票上的签名可帮助确认支票是谁开的。DKIM“签名”是一种数字签名,使用密码学技术从数学上验证电子邮件来自该域名。

具体而言,DKIM 使用的是公钥加密技术

  • DKIM 记录存储了域名的公钥,邮件服务器收到来自该域名的电子邮件时,可以检查此记录以获得公
  • 私钥由发件人保密,发件人用此私钥签署电子邮件的标头
  • 收到电子邮件的邮件服务器可以应用公钥来验证发件人是否使用了私钥

DMARC 的工作原理

基于域名的邮件身份验证报告和一致性 (DMARC) 告诉接收电子邮件的服务器在检查 SPF 和 DKIM 之后,如何根据结果进行处理。一个域名的 DMARC 策略可以有多种设置方式——可以指示邮件服务器隔离、拒绝还是交付那些没有通过 SPF 和/或 DKIM 验证的电子邮件。

DMARC 策略存储在 DMARC 记录中。DMARC 记录还可以包含向域名管理员发送报告的指示,说明哪些电子邮件通过了检查,哪些没有通过。DMARC 报告给管理员提供了所需信息,帮助他们决定如何调整 DMARC 策略(例如,误将合法电子邮件标记为垃圾邮件时该如何处理)。

SPF、DKIM 和 DMARC 记录存储在哪里?

SPF、DKIM 和 DMARC 记录存储在可公开访问的域名系统 (DNS) 中。DNS 的主要用途是将网址与 IP 地址相匹配,以便计算机能够找到正确的服务器,通过互联网加载内容,而不需要人类用户记住一长串由字母和数字组成的地址。DNS 还可以存储与域名相关的各种记录,包括该域名的备用名称(CNAME 记录)、IPv6 地址(AAAA 记录)以及用于域名查找的反向 DNS 记录(PTR 记录)。

DKIM、SPF 和 DMARC 记录均存储为 DNS TXT 记录。DNS TXT 记录存储了域名所有者希望与该域名相关联的文本。该记录可以有多种使用方式,因为它可以包含任何任意文本。DNS TXT 记录有多种应用,DKIM、SPF 和 DMARC 只是其中三种。

如何检查电子邮件是否通过了 SPF、DKIM 和 DMARC?

大多数电子邮件客户端都提供一个标记为“显示详情”或“显示原始”的选项,显示原始即显示电子邮件的完整版本,包括其标头。标头通常是邮件正文上方的一长块文本,邮件服务器将 SPF、DKIM 和 DMARC 检查结果附加在此处。

完整阅读信息密集的标头会很困难。在浏览器上查看的用户可以按“Ctrl+F”或“Command+F”并输入“spf”“dkim”或“dmarc”来查找这些结果。

相关文本示例:


arc=pass (i=1 spf=pass spfdomain=example.com dkim=pass
dkdomain=example.com dmarc=pass fromdomain=example.com);

上面这段文字中有“pass”一词,表明该电子邮件通过了身份验证检查。例如,“spf=pass”意味着这封电子邮件通过了 SPF 检查;邮件来自授权的服务器,其 IP 地址在该域名的 SPF 记录中。

在本示例中,电子邮件通过了 SPF、DKIM 和 DMARC 所有三项检查,邮件服务器能够确认电子邮件确实是来自 example.com 而非假冒者。

值得注意的是,这些记录本身并不执行域名策略或验证电子邮件的真实性。邮件服务器必须检查并正确应用这些内容,记录才会产生作用。

同样重要的是,域名所有者需要自己正确配置他们的 SPF、DKIM 和 DMARC 记录——既为防止他人利用自其域名发送垃圾邮件,也为确保来自其域名的合法邮件不被标记为垃圾邮件。网络托管服务不一定会自动配置。即使是不发送电子邮件的域名,也至少应配置 DMARC 记录,让垃圾邮件制作者无法伪装从该域名发送电子邮件。

如何为域名设置 DMARC、DKIM 和 SPF

必须在域名的 DNS 设置中完成 DMARC、DKIM 和 SPF 设置。管理员可以联系他们的 DNS 提供商;其网络托管平台也可能会提供帮助他们上传和编辑 DNS 记录的工具。进一步了解这些记录的工作原理,请参阅我们的相关文章:

这些记录的设置过程可能会复杂而又耗时,而且过于严格或过于宽松的策略都会对域名产生严重的负面影响。为此,Cloudflare 推出了电子邮件安全 DNS 向导,让管理员可以快速、正确地设置这些电子邮件身份验证的 DNS 记录。该向导位于 Cloudflare Dashboard 的 DNS 选项卡下。