首页›指南›电子邮件安全

电子邮件安全 · 了解

SPF、DKIM和DMARC:能防护什么,不能防护什么

SPF声明哪些服务器可以代表某个域名发信,DKIM为邮件签名,DMARC则验证两者之一是否与“发件人”栏显示的域名一致,并规定验证失败时如何处理。三者结合,可以防止陌生人使用与您完全相同的域名。它们不阅读正文:相似域名、具有欺骗性的显示名称或被入侵的账户都会被放行。

更新于2026年10月6 分钟引用的官方来源

SPF:谁有权发信

RFC 7208的出发点是这样一个事实:邮件协议本身并不阻止服务器声称使用任意发件地址。SPF允许域名所有者在DNS中发布获准以其名义发信的服务器列表,并允许收件服务器核实这一授权。

有两点说明至关重要:

  • SPF验证的是信封地址(服务器之间对话时使用的地址,即“MAIL FROM”)以及服务器声明的名称,而不是收件人在“发件人”栏看到的地址。
  • SPF判断的是最后一个投递邮件的服务器。当邮件被另一台服务器转发时,投递它的已不再是原始域名授权的服务器:即使邮件合法,验证也可能失败。

一个域名只能发布一条SPF记录。所有发信来源都必须列入其中:邮件系统、开票软件、电子报工具、CRM、扫描后发送邮件的复印机。

DKIM:邮件带有签名

根据RFC 6376,DKIM允许签名域名的所有者通过加密签名,声明对某封邮件承担一定责任。公钥发布在DNS中。验证签名可以确认被签名的部分自签名以来未发生变化。

签名随邮件一同传输。因此,只要中继不修改主题或正文,它在经过中继或转发时比SPF更能保持有效。而在邮件底部添加注记的邮件列表会破坏签名。

根据同一RFC,DKIM不做以下事情:它不加密邮件;验证失败并不要求拒收;签名域名也不必是“发件人”栏中显示的域名。而这正是DMARC所填补的漏洞。

DMARC:对齐与策略

RFC 7489将DMARC定义为域名所有者在域名层面表达策略的一种方式。该机制以对齐为基础:“发件人”栏显示地址的域名,必须与经SPF或DKIM验证的域名一致。如果两者都未对齐,DMARC验证即失败。

此时,域名会发布其希望的处理方式:

  • none:不要求采取任何行动,仅做观察;
  • quarantine:将邮件视为可疑;
  • reject:拒收邮件。

DMARC还规定了报告机制:汇总报告,概括哪些服务器以该域名名义发信及其验证结果;以及逐封邮件的失败报告。正是这些报告,让您发现某个被遗忘、却仍在以您名义发信的工具,或者有人冒用您的域名。

机制验证内容不检查的内容
SPF投递邮件的服务器是否获得信封域名的授权显示的地址、内容
DKIM经签名的邮件未被篡改;某个域名对其承担责任显示的地址、内容是否真实
DMARC显示的域名与SPF或DKIM对齐;失败时的处理策略相似域名、显示名称、正文

DMARC能否阻止网络钓鱼?

它能阻止一部分域名冒用,而不是所有网络钓鱼。RFC 7489对此有明确说明:DMARC不处理视觉上相似的域名,也不处理显示名称的滥用,内容分析也不在其范围之内。它并不试图解决欺诈邮件的所有问题。

具体而言,DMARC看不到:

  • 相似域名:诈骗者对自己那个与您相似的域名进行了完美认证;
  • 被冒用的显示名称:从一个毫不相干的地址发出的“财务部”;
  • 被入侵的账户,其签名完全正确,因为发信的是真实的服务器;
  • 与您域名无关的邮件:一封冒充物流公司的虚假通知,来自一个与您毫不相干的域名;
  • 未设置策略的域名:如果被模仿的域名发布的是“none”,收件方就没有拒收指令。

这些情况需要其他分析手段:域名相似度、信誉、内容、行为。请参阅垃圾邮件、网络钓鱼、恶意软件与被入侵账户。

转发与邮件列表:ARC

转发往往会导致SPF失效,修改邮件的邮件列表会导致DKIM失效,于是一封合法邮件也会未通过DMARC验证。RFC 8617(实验性标准)描述的ARC,允许每个中间环节证明其所观察到的认证结果。最终收件服务器可以选择是否采信。

保护自己的域名,过滤入站邮件

这是两个经常被混淆的话题。

  • 保护发信域名:为您的域名发布SPF、DKIM和DMARC,使他人能够拒收冒用该域名的邮件。发布由您完成;执行则由收件方完成。
  • 过滤入站邮件:在您收到的邮件上核验其他域名的记录,然后执行其他所有分析。

分步实施

  1. 盘点所有以该域名名义发信的来源。
  2. 以一条SPF记录授权所有来源;为每个支持签名的服务配置DKIM签名。
  3. 将DMARC设为“none”,并设置一个接收报告的地址。
  4. 在数周内持续阅读报告;修正被遗漏的来源。
  5. 切换到“quarantine”,待所有合法发信均已对齐后,再切换到“reject”。

举例说明。一家事务所将DMARC设为“none”并阅读了最初的报告。它从中发现了三个来源:自己的邮件系统,已正确对齐;开票软件,以事务所的域名发送账单但未做DKIM签名;以及一台位于国外的未知服务器,以其名义发送了数百封邮件。事务所修正了开票软件,等待一个干净的报告周期后,切换到“quarantine”:执行DMARC的收件方从此将该未知服务器发出的邮件视为可疑邮件。

更换邮件系统时,这些记录应在更改MX之前准备好。不中断业务的邮件系统迁移指南介绍了这一环节,此处不再赘述。

常见问题

DMARC策略设为“none”能起到保护作用吗?

不能。它只是通过报告进行观察。保护从“quarantine”或“reject”开始。

为什么合法邮件会未通过DMARC验证?

最常见的原因是:转发、邮件列表,或某个代您发信的服务既未在SPF中声明,也未进行DKIM签名。

我们的邮件系统不支持DKIM签名:怎么办?

部署在发信路径上的网关可以代为签名。请参阅保护您现有的邮件系统。

在哪里查看收到的邮件的验证结果?

在邮件头中。对于Klytic MTA,请参阅查看并导出过滤器的判定。

Klytic的定位

Klytic MTA可部署在任何邮件系统前端,同时处理这两个话题:

  • 基础版和高级版:SPF、DKIM和MX检查;DMARC验证,借助ARC也适用于转发的邮件;为外发邮件添加DKIM签名,即使您的邮件系统本身不签名。
  • 高级版:DMARC控制台,提供您各域名的报告、告警和纠正建议,帮助您逐步过渡到“reject”。

DMARC只是其中一层:Klytic MTA还增加了对仿冒域名、显示名称和诈骗情景的检测,详见身份冒用与冒充高管诈骗。

如果您使用Klytic Mail,您的域名已配置SPF、DKIM和DMARC:这属于对发信域名的保护。而Klytic MTA无论是否使用Klytic Mail都可以订阅。

来源

查阅于2026年10月。

  • RFC 7208,SPF:域名所有者发布获准在“MAIL FROM”或“HELO”身份中使用其域名的主机,由接收方核实该授权。rfc-editor.org
  • RFC 6376,DKIM:域名通过加密签名声明对邮件承担责任;不加密、不强制拒收,签名域名可以与显示的作者不同。rfc-editor.org
  • RFC 7489,DMARC:“From”域名与SPF或DKIM的对齐,none、quarantine和reject策略,汇总报告和失败报告;视觉上相似的域名、显示名称和内容分析不在其范围内。rfc-editor.org
  • RFC 9989(2026年5月),取代RFC 7489:策略取值和排除项(相似域名、显示名称)保持不变。rfc-editor.org
  • RFC 8617,ARC(实验性):经认证的传输链;DMARC接收方可以采信有效ARC链所携带的评估结果。rfc-editor.org
  • Klytic,Klytic MTA页面:基础版和高级版的认证检查、外发DKIM签名和DMARC控制台、可选项、部署模式、通过MX开通服务。klytic.com

在您的邮件系统前端完成验证与签名

Klytic MTA在接收时验证SPF、DKIM和DMARC,并为您的外发邮件签名。

咨询顾问 →

了解Klytic MTA

欢迎优惠

30 天免费试用,迁移全程协助

试用无需承诺。顾问会与您联系,了解需求并为您准备 Klytic 空间。