SPF与DMARC检测

Test a domain's email authentication: SPF, DKIM and DMARC records are checked for syntax, lookup limits and policy strength, with plain-English fixes.

github.com 的邮件认证

SPF有效,但有警告
DKIM找到 5 个密钥
DMARCp=quarantine

SPF (Sender Policy Framework)

10/10 次 DNS 查询
v=spf1 ip4:192.30.252.0/22 include:spf.protection.outlook.com include:_netblocks.google.com include:_netblocks2.google.com include:mail.zendesk.com include:_spf.salesforce.com include:servers.mcsv.net include:mktomail.com include:sendgrid.net ip4:62.253.227.114 ip4:166.78.69.169 ip4:166.78.69.170 ip4:166.78.71.131 ~all
  • 该记录已使用 10 次允许 DNS 查询中的 10 次,已接近上限。
  • 该记录超过 255 个字符,因此在 DNS 中必须拆分为多个字符串。

DKIM (DomainKeys Identified Mail)

选择器 google

v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAj6T5sl/RwdSqGoYWaWaFbS2UAeyPrEmd0gogocmRfS441qwR8/0KB81Hw89P0l4YiFRrXYk7NVIGfyCRHAYYZUzCkGeOysI2EjgzLFhd/NEsbRzOEc/kWkK/RO6JFq/5lOn6M9AZw/ap9tds4JG9ApgNNdSpPxp9DmvpsOSgNMVflRxQFrk3kdS4RNAPKu/OPoA7dlR/A/pECryjRoYgENtDXzdnK70HgCekems6UDzxDj61cjyoKoXtEMF/QsaHEQ1Gjfv014rDJBsubk/kT5VqHkWHa/ia68Z5r228Ety/wFfQNjXTx/J7KGZ9GkZlKED659eiJcLnWcK...

选择器 selector1 (通过 CNAME selector1-github-com._domainkey.microsoft.onmicrosoft.com)

v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxZC/z2cK+2s1f/ktzSDSeFzkfIHrjwtGFsfKMAYvKaXjPVNzKykpbXBkX5nB7dVUTFttda7aROr2iSrIseQ27Ui+4rUZVzgFanE8RaXhYM9n5wPKNv8GtLJk7JgcsYZ7ErgID4uW2sEYyV/dnRYw6rDzOaeRKkKELTUfJI5ebLQIDAQAB;

选择器 k1 (通过 CNAME dkim.mcsv.net)

k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDbNrX2cY/GUKIFx2G/1I00ftdAj713WP9AQ1xir85i89sA2guU0ta4UX1Xzm06XIU6iBP41VwmPwBGRNofhBVR+e6WHUoNyIR4Bn84LVcfZE20rmDeXQblIupNWBqLXM1Q+VieI/eZu/7k9/vOkLSaQQdml4Cv8lb3PcnluMVIhQIDAQAB;

选择器 s1 (通过 CNAME s1.domainkey.u51742174.wl175.sendgrid.net)

k=rsa; t=s; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyn3fMCVpb7ryIRKOGXhXVGYmsWUitNlSckqGHOwNFZgFadplOrD+Qzf1XQkP7MH/VB/97DsAAJGtEXW1Uq71Hjnfr/DuBN/YfjF/gU70qEFb7q1sdIiNtjFL2TkOpoW+X/bhhPNheW/fYwyFb6ZHFM6LTgXyuimWRHTOUP3VjZzhNVda79nt+2WZYbS4l8HdMgWpTNHjpVw5PtXESA9KBg/evSRk5fIaXIX5eRXW3baoV9yVzD8O29/IL/DiSk+yNvaO0EHL5c4yGuZJhGzvpiznb2IDVdemJK4Dqzdy5FTN/SGYZhAEr7MguG3Z314hMS2scgMsOMgB64uj/6+...

选择器 s2 (通过 CNAME s2.domainkey.u51742174.wl175.sendgrid.net)

k=rsa; t=s; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnNt2/H6bKs99C6DAaokPp62KN9mKaD20D1PBakkObejkJvzM6Un/fKHPeI2/qXdvFFBPQE3mxMNoe+hwBVDgMgCuZEn8J6gZYI4amITure9/ny6+GaNVRoH2m6xAtWwKINkKxMayGiehkWlRVb7D23F0U8y+VDHKQFz1bnXA5jDpcDiMXy8i2lV5vEys+qt+1WGhDKCAwamT8c3xkZz8aXMJaXYCiN2HMgHDU81+mVCk4+u6mY+a98APVfFhsQ0KCq/mVZXaXTV06QrG9M5PtBHUFW7VtwXKp+AFrAut0KW1NnwaA5IGA5sc+n9dma7bSqdfGS+ixdSmJ69NwmY...

DMARC

v=DMARC1; p=quarantine; sp=reject; pct=100; rua=mailto:dmarc@github.com; ruf=mailto:dmarc@github.com; fo=1
策略(p)
quarantine
子域名策略(sp)
reject
汇总报告(rua)
mailto:dmarc@github.com
百分比(pct)
100%
对齐方式
DKIM: R, SPF: R (R = 宽松,S = 严格)
  • DMARC 已以 p=quarantine 强制执行,并已启用报告。

查看 github.com 的 MX 记录(邮件由 Microsoft 365 处理)。

为什么 SPF、DKIM 和 DMARC 很重要

电子邮件在设计之初没有发件人验证,因此任何人都可以把您的域名写进“发件人”一栏。三项基于 DNS 的标准解决了这个问题。自 2024 年 2 月起,Google 和 Yahoo 要求批量发件人必须配置它们,缺少这些记录如今已成为正常邮件被判为垃圾邮件的常见原因。

  • SPF 在以 v=spf1 开头的 TXT 记录中,列出允许代表您的域名发送邮件的服务器。
  • DKIM 为每封邮件添加加密签名;收件方使用发布在 selector._domainkey.yourdomain 的公钥进行验证。
  • DMARC(位于 _dmarc.yourdomain)告诉收件方:当 SPF 和 DKIM 与发件人域名不一致时该怎么办(none、quarantine 或 reject),以及把报告发送到哪里。

本检测工具测试什么

  • SPF 是否存在、是否只有一条记录、是否以 ~all 或 -all 结尾(绝不能是 +all),以及包含嵌套 include: 机制在内的 DNS 查询总次数是否在 RFC 7208 规定的 10 次上限之内。
  • DKIM 密钥:针对您提供的选择器,或针对 Google Workspace、Microsoft 365 和常见发信服务所使用的十几个常用选择器。
  • DMARC 是否存在、策略是否有效、是否适用于 100% 的邮件,以及是否发送汇总报告,让您能看到谁在以您的名义发信。

记录示例

example.com.         TXT  "v=spf1 include:_spf.example.net ip4:192.0.2.0/24 -all"
_dmarc.example.com.  TXT  "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; adkim=s"
s1._domainkey.example.com. TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqh…"

推荐的部署步骤

  1. 发布 SPF,涵盖所有代表您发信的服务,并以 ~all 结尾。
  2. 在每个服务商中开启 DKIM 签名。
  3. 发布 p=none 的 DMARC 并设置 rua 地址,在两到四周内持续查看报告。
  4. 待所有合法邮件都能通过之后,改为 p=quarantine,再改为 p=reject。

完整讲解:SPF、DKIM 和 DMARC 详解。

常见问题

应该使用 ~all 还是 -all?

配置了 DMARC 的情况下,两者都可以;由 DMARC 决定结果。~all 是更稳妥的起点;一旦确信所有发件方都已列出,-all 则更严格。

“DNS 查询次数过多”是什么意思?

每个 include、a、mx、exists 和 redirect 都计一次查询,包括被引用记录内部的那些。超过 10 次,SPF 对所有人都会失败。请删除不用的服务,或用 ip4/ip6 地址段替换 include。

闲置域名也需要这些记录吗?

需要。对从不发送邮件的域名,请用 v=spf1 -all 和 v=DMARC1; p=reject 加以保护。

更新于

已复制到剪贴板