网店 SPF、DKIM、DMARC 配置指南:满足 Gmail 和 Yahoo 发件要求

SPF、DKIM 和 DMARC 各起什么作用,Gmail、Yahoo 和 Outlook.com 对发件人有哪些要求,如何在 Shopify 和 WooCommerce 上配置,以及如何逐步升级到 p=reject。

FixReports 编辑团队阅读约需 4 分钟

要满足 Gmail 和 Yahoo 的发件人要求,每家网店的发信域名都必须配置 SPF 或 DKIM;批量发件人则两者都要配置,还需要一条至少为 p=none 的 DMARC 记录,并让收件人看到的发件人(From)域名与 SPF 或 DKIM 的域名对齐。批量发件人还必须在营销邮件中提供一键退订,并把被举报的垃圾邮件率控制在 0.3% 以下。在 Shopify 上,这意味着在后台验证发件域名并添加一条 DMARC 记录;在 WooCommerce 上,这意味着通过一家已完成身份验证的邮件服务商发信。等 DMARC 报告显示您所有正当的邮件都能通过验证后,就可以把策略逐步收紧到 p=reject。

要点

SPF、DKIM 和 DMARC 到底有什么作用?

SPF 列出哪些服务器可以代表您的域名发信,DKIM 为每封邮件签名,DMARC 则把两者与客户看到的发件人地址关联起来。

记录证明什么存放位置标准
SPF发信服务器已获授权,可以使用信封发件人(MAIL FROM)中的域名域名上的 TXT 记录RFC 7208 (在新标签页中打开)
DKIM邮件由该域名签名,且在传输过程中未被篡改位于 selector._domainkey.example.com 的 TXT 记录RFC 6376 (在新标签页中打开)
DMARCSPF 或 DKIM 针对一个与可见发件人域名对齐的域名通过了验证;同时告诉收件服务器验证失败时如何处理、报告发往何处位于 _dmarc.example.com 的 TXT 记录RFC 9989 (在新标签页中打开)

对齐这一点很容易被忽视。您的邮件平台可能用它自己的退信域名通过了 SPF,而发件人地址显示的却是您店铺的域名。这样的邮件虽然通过了 SPF,DMARC 却会失败,除非 DKIM 使用您的域名签名。

Gmail 和 Yahoo 对发件人有哪些要求?

两者都要求所有发件人进行身份验证,并对批量发件人提出了更严格的规则。

对所有发件人,Gmail 要求配置 SPF 或 DKIM、有效的正向和反向 DNS、TLS、符合 RFC 5322 的邮件格式,并且 Postmaster Tools 中的垃圾邮件率低于 0.3%(Google (在新标签页中打开))。Yahoo 要求至少配置 SPF 或 DKIM,且垃圾邮件率低于 0.3%(Yahoo Sender Hub (在新标签页中打开))。对批量发件人的要求如下:

要求GmailYahoo
SPF 和 DKIM两者都要两者都要
DMARC必须配置;策略可以是 none有效策略,至少为 p=none,且 DMARC 必须通过
对齐发件人域名与 SPF 或 DKIM 域名对齐相同;接受宽松对齐
一键退订营销邮件和订阅邮件须按 RFC 8058 支持一键退订,并提供可见的退订链接营销邮件和订阅邮件须提供支持一键退订的 List-Unsubscribe 标头
处理退订请求48 小时内(建议)2 天内
垃圾邮件率低于 0.3%;Google 建议低于 0.10%低于 0.3%

有几个细节对网店尤其重要:

  • Gmail 按域名计数。 来自同一主域名的邮件都计入 5000 封的门槛,因此订单邮件、营销邮件和客服回复会累加在一起。
  • 只计算个人 Gmail 账号。 这些准则不适用于发往 Google Workspace 账号的邮件。
  • 事务性邮件无需提供一键退订。 但订单确认邮件仍然需要身份验证。

一键退订使用 RFC 8058 (在新标签页中打开) 定义的两个标头,该规范还要求有一个覆盖这两个标头的有效 DKIM 签名:

List-Unsubscribe: <https://example.com/unsubscribe/opaquepart>
List-Unsubscribe-Post: List-Unsubscribe=One-Click

要确认您的营销平台是否添加了这两个标头,可以打开您自己发出的某封营销邮件,查看它的原始源码。

2024 年 2 月之后有哪些变化?

处置力度在逐步收紧,其他邮箱服务商也陆续采用了类似的规则。

日期变化来源
2024 年 2 月Gmail 和 Yahoo 的要求生效(Yahoo 分阶段推行执行)Google (在新标签页中打开),Yahoo (在新标签页中打开)
2024 年 6 月Gmail:垃圾邮件率高于 0.3% 的批量发件人不再有资格获得缓解措施Gmail 常见问题 (在新标签页中打开)
2024 年 6 月 1 日Gmail 对已有退订链接的发件人规定的一键退订截止日期Gmail 常见问题 (在新标签页中打开)
2025 年 5 月 5 日Outlook.com 对每天发送超过 5000 封邮件的域名提出要求;Microsoft 在 4 月 29 日的更新中表示,未通过验证的邮件将以 550 5.7.515 被拒收Microsoft (在新标签页中打开)
2025 年 11 月Gmail 加大处置力度,包括临时拒收和永久拒收Gmail 常见问题 (在新标签页中打开)
2026 年 5 月RFC 9989 取代 RFC 7489,成为 DMARC 规范IETF (在新标签页中打开)

Outlook.com 的规则适用于其个人消费者邮箱(outlook.com、hotmail.com 和 live.com),要求 SPF 和 DKIM 都通过,并且 DMARC 至少为 p=none、与 SPF 或 DKIM 对齐。

如何在 Shopify 上配置 SPF、DKIM 和 DMARC?

在 Shopify 后台验证发件域名,然后在 DNS 服务商处添加一条 DMARC 记录。

Shopify 的邮件设置指南 (在新标签页中打开)指出,自 2024 年 2 月 1 日起,Gmail 和 Yahoo 要求使用品牌邮箱地址发信时必须具备经过验证的域名和 DMARC 记录。如果没有配置身份验证记录,Shopify 会把您的发件地址改写为 store+123@shopifyemail.com 格式。步骤如下:

  1. 在 Shopify 后台进入 设置 > 通知(Settings > Notifications)。
  2. 在 发件人电子邮件(Sender email)部分,点击 验证您的域名(authenticate your domain)。
  3. 在 DNS 服务商处添加页面上显示的每一条 CNAME 记录,记录数量可能不同。Shopify 表示,这些记录会为您的发件地址处理 SPF 和 DKIM,您无需添加 IP 地址。
  4. DNS 更改最多可能需要 48 小时才能生效。
  5. 添加一条名称为 _dmarc、值为 v=DMARC1; p=none; 的 TXT 记录,这是 Shopify 使用的默认值。

如果您的域名是在 Shopify 购买的,或已转入 Shopify,Shopify 会替您管理这些记录。Shopify 还提醒,一个域名只能有一条 DMARC 记录,并且应删除严格对齐设置(adkim=s 或 aspf=s),或将其改为 r。

Shopify 的身份验证只覆盖由 Shopify 发出的邮件。如果您用其他平台发送营销活动邮件、使用客服工单系统,或用 Google Workspace 处理员工邮件,那么每个系统都需要单独配置 DKIM;如果它使用您的域名作为退信域名,还需要单独添加 SPF 条目。

如何为 WooCommerce 配置邮件身份验证?

按照 WooCommerce 官方文档的建议,通过一家使用您的域名签名的专业邮件服务商发送 WooCommerce 邮件。

WooCommerce 使用 WordPress 的 wp_mail() 函数发信,其邮件常见问题 (在新标签页中打开)建议使用专门的 SMTP 服务商,因为它比您自己服务器的邮件函数更可靠。典型的配置如下:

  1. 选择一家事务性邮件服务商,并在该服务商处验证您的域名。服务商会提供需要发布的 DKIM 记录和 SPF include。
  2. 通过 SMTP 或 API 插件把 WordPress 连接到该服务商。
  3. 在 WooCommerce > 设置 > 电子邮件(WooCommerce > Settings > Emails)中,把 发件人地址(From address)设为您自己域名下的地址。WooCommerce 提醒,使用公共邮箱地址(例如 Gmail 或 Yahoo 邮箱)发信,邮件很可能进入垃圾箱或被拦截。
  4. 在 _dmarc.yourdomain 发布一条 DMARC 记录。
  5. 打开 WooCommerce > 状态 > 日志(WooCommerce > Status > Logs),按 transactional-emails 来源筛选,查看哪些邮件已发出、哪些发送失败。

如果您的网站主机也以该域名发信,请为它配置身份验证或将其关闭。任何以您的域名发信、却没有对齐的 SPF 或 DKIM 的系统,都无法通过 DMARC。

什么是 SPF 10 次查询限制?如何不超限?

一次 SPF 检查最多只能使用 10 个需要 DNS 查询的项;再多一个,结果就是 permerror,SPF 也就无法通过。

RFC 7208 第 4.6.4 节 (在新标签页中打开)列出了计入限制的项:include、a、mx、ptr 和 exists 机制,以及 redirect 修饰符。ip4、ip6 和 all 机制不计入。嵌套在 include 里的 include 同样计入,因为这一限制适用于整个评估过程。该 RFC 还建议把“空查询”(没有返回结果的查询)限制在两次以内,并指出不应发布 ptr 机制。

控制在 10 次以内的方法:

  • 删除已不再使用的服务的 include。
  • 对您自己运行、地址固定的服务器,使用 ip4 或 ip6。
  • 把营销邮件迁移到 news.example.com 这样的子域名,它有自己的 SPF 记录,查询次数也单独计算。
  • 绝不要发布两条 SPF 记录。RFC 7208 禁止存在多条记录,评估时会返回 permerror。
example.com.        TXT  "v=spf1 include:_spf.google.com include:spf.example-esp.com ~all"
news.example.com.   TXT  "v=spf1 include:spf.example-marketing.com ~all"

spf.example-esp.com 和 spf.example-marketing.com 只是示例,请替换为您的服务商要求使用的值。

如何把 DMARC 从 p=none 升级到 p=reject?

先从带报告的 p=none 开始,修复报告中发现的每一个正当发信来源,然后再收紧策略。

阶段记录目标
1. 监控v=DMARC1; p=none; rua=mailto:dmarc@example.com收集汇总报告,了解哪些系统在以您的域名发信
2. 修复不做更改让每个正当的发信来源都通过对齐的 SPF 或 DKIM
3. 隔离v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com未通过验证的邮件进入垃圾箱
4. 拒收v=DMARC1; p=reject; rua=mailto:dmarc@example.com未通过验证的邮件被拒收

只有当报告显示您的网店平台、营销工具、客服系统和员工邮件全部通过时,才进入下一阶段。汇总报告由 RFC 9990 (在新标签页中打开) 定义。如果 rua 地址位于其他域名(例如某个报告服务),该域名必须发布一条授权接收这些报告的记录。

一些较早的指南建议用 pct=25 或 pct=50 分步推行。RFC 9989 删除了 pct(它的注册表条目现已标为“historic”,即历史状态),因为 0 和 100 以外的取值在实际中执行得并不一致。取而代之的是 t=y,它请求收件服务器执行低一级的策略,例如以隔离代替拒收。如果您想设置一个试行阶段,请使用 t=y,而不是部分百分比。

_dmarc.example.com.  TXT  "v=DMARC1; p=quarantine; t=y; rua=mailto:dmarc@example.com"
_dmarc.example.com.  TXT  "v=DMARC1; p=reject; sp=reject; rua=mailto:dmarc@example.com"

强制执行的策略还为 BIMI 创造了条件,BIMI 可以在支持它的收件箱中显示您的品牌徽标。Gmail 要求 DMARC 为 p=quarantine 或 p=reject,并且需要 Verified Mark Certificate 或 Common Mark Certificate(Google (在新标签页中打开))。对于发往您域名的入站邮件,MTA-STS(RFC 8461 (在新标签页中打开))可以让您告诉发信服务器:如果您的邮件服务器没有提供使用受信任证书的 TLS,就拒绝投递。

如何检查您店铺的记录?

用 dig 查询这三类记录,或者使用能替您读取记录的检测工具。

dig +short TXT example.com
dig +short TXT _dmarc.example.com
dig +short TXT selector._domainkey.example.com

DKIM 选择器(selector)由您的服务商提供,您也可以在自己发出的邮件中,从 DKIM-Signature 标头的 s= 值里找到它。邮件送达率报告会读取您的公开 DNS,统计 SPF 查询次数,尝试常见的 DKIM 选择器,并检查 DMARC 策略、rua、pct、BIMI 和 MTA-STS。正确的记录有帮助,但任何记录组合都不能保证邮件进入收件箱,因为邮箱服务商还会考量垃圾邮件投诉和发信行为。

常见问题

如果我的网店每天发送的邮件少于 5000 封,还需要 DMARC 吗?

Gmail 只要求批量发件人配置 DMARC,但 Shopify 指出,Gmail 和 Yahoo 要求使用品牌邮箱地址发信时必须具备经过验证的域名和 DMARC 记录。p=none 记录风险很低,还能为您提供报告,因此大多数网店都应该发布一条。

我的域名可以有两条 SPF 记录吗?

不可以。RFC 7208 规定一个域名不得有多条 SPF 记录,如果有,SPF 评估会返回 permerror。请把所有发信方合并到一条记录中。

p=reject 会拦截我的 Shopify 订单邮件吗?

只要 Shopify 的 CNAME 记录已配置到位,并且 DMARC 报告显示 Shopify 发出的邮件通过了对齐的 DKIM,就不会。在把策略升级到 p=none 以上之前先查看报告,并按照 Shopify 的建议保持宽松对齐。

DMARC 的 pct 标签还有效吗?

2026 年 5 月发布的 RFC 9989 删除了 pct,并引入 t=y 作为测试模式。Google 的 BIMI 指南仍然要求 pct=100,而不写该标签时默认值就是 100,因此新建记录时不写 pct 是最简单的选择。

SPF、DKIM 和 DMARC 都通过了,就能保证邮件进入收件箱吗?

不能。身份验证是必要条件,而不是保证。Gmail 和 Yahoo 还会考察垃圾邮件投诉率、退订处理情况和邮件格式。

参考资料