whoistool
← 全部指南

SPF、DKIM 与 DMARC 详解:防止邮件伪造,提高收件箱送达率

最后核实:2026年10月20日

任何人都可以把你的域名写进邮件的发件人一栏。SPF、DKIM 和 DMARC 是三条 DNS 记录,收件服务器借助它们检查邮件是否真的来自你。自 2024 年起,Gmail 和 Yahoo 会拒收未通过这些检查的邮件,或将其放入垃圾邮件文件夹。

要点

  • SPF 列出允许代表你的域名发送邮件的服务器。
  • DKIM 为每封邮件签名,用于验证的公钥发布在 DNS 中。
  • DMARC 告诉收件方在 SPF 和 DKIM 失败时如何处理,并向你发送报告。只有当可见发件人地址中的域名匹配时,DMARC 才会通过。
  • 先从 p=none 开始,阅读报告;当所有合法发件来源都能通过后,再切换到 quarantine,最后到 reject。

三条记录一览

记录位置示例
SPF域名本身的 TXT 记录v=spf1 include:_spf.google.com ~all
DKIMselector._domainkey.example.com 上的 TXT(或 CNAME)v=DKIM1; k=rsa; p=MIIBIjANBg…
DMARC_dmarc.example.com 上的 TXTv=DMARC1; p=none; rua=mailto:[email protected]

为什么现在尤为重要

自 2024 年 2 月起,Gmail 和 Yahoo 要求所有发件人配置 SPF 或 DKIM。批量发件人(Google 的标准是每天向 Gmail 地址发送超过 5000 封邮件)必须同时具备 SPF、DKIM 和 DMARC 记录(p=none 即可),发件人域名须与 SPF 或 DKIM 对齐,营销邮件须支持一键退订,且垃圾邮件投诉率须低于 0.3%。

即使你发信很少,缺少这些记录也会让你的域名很容易被用于钓鱼邮件伪造,收件方也会降低对这类域名邮件的信任。

SPF

SPF 是你域名上的一条 TXT 记录,以 v=spf1 开头,列出允许的发件来源,并以针对其他所有来源的规则结尾。include: 引入服务商的列表,ip4:/ip6: 添加你自己的服务器,mx 允许域名的 MX 服务器发信。

  • 只能发布一条 SPF 记录。两条 v=spf1 记录会导致 SPF 出错(permerror),请合并为一条。
  • SPF 最多只能触发 10 次 DNS 查询(每个 include、a、mx、exists 和 redirect 都计入,嵌套的也算)。超过即失败,请删除不再使用的 include。
  • -all(fail)要求拒收未列出的发件来源,~all(softfail)要求将其视为可疑。启用 DMARC 后,~all 是常见且安全的做法。
  • SPF 检查的是信封发件人(Return-Path),而不是用户看到的发件人地址,而且邮件被转发时会失效。因此还需要 DKIM。

DKIM

发送服务器用私钥对邮件头和正文签名,收件方从 selector._domainkey.example.com 获取公钥并验证签名。选择器(selector)是服务商指定的名称(如 google、selector1、s1、k1…),因此每个发信服务都有自己的密钥。

在每个用于发信的服务(邮箱服务商、邮件营销工具、CRM、网店)中开启 DKIM,并发布其提供的记录,通常是 TXT 或 CNAME。条件允许时请使用 2048 位密钥。DKIM 在邮件转发后依然有效,因此对 DMARC 来说更加可靠。

DMARC

DMARC 记录位于 _dmarc.example.com。当 SPF 或 DKIM 通过,且其验证的域名与发件人地址中的域名一致(对齐)时,邮件才能通过 DMARC。如果服务商用自己的域名签名,那么在你为自己的域名配置 DKIM 之前,这并不能帮你通过 DMARC。

rua=mailto: 要求收件方每天发送汇总报告(XML),列出哪些服务器以你的域名发信以及是否通过。在收紧策略之前,可以借助这些报告找出被遗忘的发件来源。

策略未通过的邮件会怎样
p=none照常投递,你只会收到报告。这是起点。
p=quarantine放入垃圾邮件文件夹。
p=reject在投递时被拒收。可完全防止伪造。

安全上线步骤

  • 列出所有以你的域名发信的来源:邮箱、网站表单、邮件简报、开票系统、客服系统等。
  • 发布一条涵盖所有来源的 SPF 记录,并在每个来源中开启 DKIM。
  • 添加 v=DMARC1; p=none; rua=mailto:…,并持续阅读两到四周的报告。
  • 修复所有未通过的合法发件来源,然后切换到 p=quarantine(如有需要可用 pct= 逐步生效),之后再切换到 p=reject。
  • 从不发信的域名应发布 v=spf1 -all 和 v=DMARC1; p=reject,防止被他人伪造。

进阶配置

  • MTA-STS 和 TLS-RPT 可确保其他服务器只通过经过验证的 TLS 向你投递邮件,并报告出现的问题。
  • BIMI 可在支持的邮箱中于邮件旁显示你的品牌标志;它要求 DMARC 策略为 quarantine 或 reject。

检查你的域名

邮件安全检测会读取 MX、SPF(含 DNS 查询次数)、常见选择器或你指定选择器的 DKIM、DMARC、MTA-STS、TLS-RPT 和 BIMI,并指出发现的问题。每次修改 DNS 后请重新检测;根据 TTL 不同,新记录生效可能需要几分钟到一小时。

来源

本指南汇总公开信息,不构成法律建议。

其他指南