专项检查 · DKIM DKIM 检查:签名公钥发布了吗,够不够长?
DKIM 给每封邮件签名,收件方到 选择器._domainkey.域名 取公钥来验证。和 SPF、DMARC 不同,要知道选择器才能找到公钥。这里帮你查出来,顺着服务商的别名往下查,并检查密钥长度。
- 10 种记录类型
- 三家 DNS 对比
- 点了才发请求
检查 DKIM 公钥
选择器是你发出的邮件里 DKIM-Signature 头的 s= 值。服务商按钮填的是它们官方设置文档里写明的选择器。
dns.alidns.com)、Cloudflare(cloudflare-dns.com)或 Google(dns.google)——发送要查的名称和记录类型,不发别的。需要顺着查的检查(SPF 的 include、MX 主机)会把这些名称发给同一个服务。TapCub 的服务器不经手、不保存。子域名、_dmarc.example.com 这类带下划线的名称、中文域名都可以。
._domainkey 前面那一段。
在中国大陆网络下,Cloudflare 和 Google 可能连不上,选阿里云一般没问题。
v=DKIM1; k=rsa; p=…,在浏览器里检查。
密钥长度(位)
2,048
概况
- 正常2048 位 RSA 密钥:符合 RFC 8301 的建议。
- 说明示例结果:这是 2026-11-11 制作本页时实际查到的记录。点「查询」获取实时结果。
标签
| 标签 | 值 | 含义 |
|---|---|---|
v | DKIM1 | 版本 |
k | rsa | 密钥类型(默认 rsa) |
p | MIIBIjANBgkqhkiG9w0BAQEF…WcKDSiQlhwIDAQAB | 公钥(base64) |
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAj6T5sl/RwdSqGoYWaWaFbS2UAeyPrEmd0gogocmRfS441qwR8/0KB81Hw89P0l4YiFRrXYk7NVIGfyCRHAYYZUzCkGeOysI2EjgzLFhd/NEsbRzOEc/kWkK/RO6JFq/5lOn6M9AZw/ap9tds4JG9ApgNNdSpPxp9DmvpsOSgNMVflRxQFrk3kdS4RNAPKu/OPoA7dlR/A/pECryjRoYgENtDXzdnK70HgCekems6UDzxDj61cjyoKoXtEMF/QsaHEQ1Gjfv014rDJBsubk/kT5VqHkWHa/ia68Z5r228Ety/wFfQNjXTx/J7KGZ9GkZlKED659eiJcLnWcKDSiQlhwIDAQAB分享这组输入:数值写在链接的 # 后面,不会发到服务器。
https://tapcub.com/zh/tools/dns-lookup/dkim
版本 v1.0更新于 更新记录
DKIM 结果怎么看
公钥要么能验证签名,要么不能。
找到公钥
选择器名称下有一条带 p= 的 TXT 记录。Microsoft 365、SendGrid、Amazon SES 把公钥放在自己那边,让你添加 CNAME,工具会顺着查。
密钥长度
RFC 8301:收件方不得接受 1024 位以下的 RSA 密钥,签名方应使用至少 2048 位。Ed25519 密钥固定 256 位,发布起来短得多。
已撤销
p= 为空表示密钥被有意撤销,仍用它签名的邮件 DKIM 会失败。
没找到
多半是选择器不对,或者服务商后台生成了密钥、还没添加到你的 DNS 里。腾讯企业邮、阿里邮箱的 DKIM 记录要从管理后台复制。
公钥发布了,不代表邮件真的签了名。给自己发一封,用邮件头分析看 DKIM 结果。
三步
免注册,点一下才发请求。
-
1
输入名称
域名、子域名、网址、邮箱地址都行;粘贴 IP 地址就是反查。
-
2
选类型和解析服务
一般先用「常用全部」。改完解析之后选「三家一起对比」,看各家是否已经更新。
-
3
查询、复制
先看概况,再复制或下载区域文件格式的记录。邮件相关的记录用 MX、SPF、DMARC、DKIM 专项检查。
DKIM 公钥记录(RFC 6376 §3.6.1)
只有 p= 是必填的,其它都有默认值。
- 名称:
<选择器>._domainkey.<域名>,TXT;长密钥分成多段存储、读取时拼接 v=DKIM1可以不写,写了就必须放第一个k=为 rsa(默认)或 ed25519(RFC 8463);h=列出哈希算法,rsa-sha1 不得使用(RFC 8301)t=y表示测试密钥;s=必须包含 email 或 *
| 服务商 | 选择器 | 发布方式 |
|---|---|---|
| Google Workspace | google(默认,可改) | 你添加 TXT |
| Microsoft 365 | selector1、selector2 | CNAME 指向微软 |
| SendGrid | s1、s2 | CNAME 指向 SendGrid |
| 阿里邮箱 | default | 你添加 TXT(值从管理后台复制) |
github.com,选择器 google
2026-11-11 查询 google._domainkey.github.com。
| 标签 | 值 | 解读 |
|---|---|---|
| v | DKIM1 | 版本,按要求放在第一个 |
| k | rsa | RSA 密钥 |
| p | MIIBIjANBgkq…(392 个字符) | SubjectPublicKeyInfo 格式的 2048 位 RSA 公钥 |
同一天 gmail.com 的选择器 20230601 查到的是空的 p=:一把已撤销的密钥,留着是为了让旧签名明确失败。
DKIM 常见错误
多数时候记录本身没错,是别的地方卡住了。
粘贴公钥时引号或空格出错
有的 DNS 面板要求把公钥拆成 255 字符一段,有的会自动拆。p= 里混进多余的引号,公钥就读不出来了。
一直用 1024 位密钥
仍然能用,但低于 RFC 8301 的建议。多数服务商可以生成 2048 位密钥,换一个新选择器轮换。
靠猜选择器
DNS 里没有「列出所有选择器」的办法。直接看一封真实邮件的 DKIM-Signature 头里的 s=,别挨个试。
统计报表里哪里会碰到域名
DNS 能回答报表背后的几个实际问题:这些流量是谁带来的、爬虫来自哪个网络、统计脚本是怎么加载的。
DKIM 选择器在哪里看?
打开你发出的一封邮件,查看原始邮件头,找到 DKIM-Signature:s= 后面是选择器,d= 后面是域名。邮箱服务商的 DKIM 设置页也会显示。
1024 位的 DKIM 密钥还能用吗?
能验证:RFC 8301 只禁止 1024 位以下的密钥。但它建议签名方用 2048 位,Amazon SES 的 Easy DKIM 默认就生成 2048 位密钥。
为什么我的 DKIM 记录是 CNAME?
Microsoft 365、SendGrid、Amazon SES 等服务商把公钥放在自己的 DNS 里,方便随时轮换。你只发布一条 CNAME,工具会顺着它查到真正的公钥,并把两个名称都显示出来。
p= 为空是什么意思?
密钥已撤销。RFC 6376 规定空的 p= 表示「这把密钥不再有效」,用它做的签名都会失败。