DKIM记录该查哪个名字?先看selector,再区分TXT与验签结果
邮件服务商说DKIM已经启用,查询域名TXT却只看到SPF,通常是查错了记录名。DKIM公钥一般放在 selector._domainkey.签名域名 下,根域名TXT不是这个位置。检查前先准备选择器和签名域名,别只凭发件人地址猜。
记录名来自邮件签名
查看需要排查邮件的原始邮件头,找到 DKIM-Signature 中的 d= 与 s=。d= 是签名域名,s= 是selector。假设公开演示值为 d=gmail.com; s=20230601,查询名就是 20230601._domainkey.gmail.com,类型选TXT。这里仅演示记录名的组合,不代表某封当前邮件正在使用这个选择器。
在DNS测速中填入完整选择器名称,选择“TXT记录”,本次只选“港澳台、海外”组。提交后,当前工具返回“拨测目标域名无效”,没有形成这条名称的节点结果。它是本次工具的输入处理限制,不能据此断言公开DNS不存在这个名称,也不要把下划线删掉后再称作查到了同一条DKIM记录。

根域TXT只能作对照
接着把输入改为 gmail.com,仍查TXT。这个普通域名可以进入结果,本次节点列表完成44/44。它有助于确认TXT查询功能可用,但查的是根域记录,不是前面的选择器。

本次根域结果里包含 v=spf1 redirect=_spf.google.com,还显示其他公开验证文本。SPF与DKIM可以都使用TXT类型,但记录名、语法和用途不同。找到 v=spf1 只能说明读到了SPF策略,不能把整页TXT成功率当作DKIM验签成功率。

用独立DNS查询补充选择器结果
工具本次没有接受完整选择器,所以另外在本地命令行向公共递归解析器查询。下列命令不是平台节点结果,两种视角分别保留:
dig @1.1.1.1 20230601._domainkey.gmail.com TXT +noall +comments +answer
本次本地返回 NOERROR,答案中的TXT为:
v=DKIM1; k=rsa; p=
这条记录存在,但 p= 是空值。按DKIM规则,空公钥值表示该密钥已经撤销,不能用它验证签名。这正说明“查到TXT”与“有可用公钥”是两回事。公开示例会变化,实际排查应使用邮件头中那一条选择器,不应把本例复制到自己的DNS。
普通RSA DKIM记录里,k=rsa 指明密钥类型,非空的 p= 承载公钥材料。它是供收件方公开查询的公钥,不是邮件服务器用于签名的私钥;不要把私钥放进TXT记录,也不需要向查询工具上传私钥。选择器更换后,新旧邮件可能对应不同的记录名,核对时间与真实邮件头比只查一个固定名称更有用。
有些服务商会让选择器名称通过CNAME委派到它维护的记录。遇到这种配置,应按服务商给出的完整名称核对别名和最终TXT,不能因为最初看见的是CNAME就删除它。无论直接TXT还是委派,查询的起点都仍然来自邮件签名的selector与签名域名。
查到公钥以后,还缺哪一步
验签还要结合那封邮件的签名值、被签名的头字段、正文哈希和规范化方式,使用对应公钥验证。DNS里有公钥,不能单独证明邮件正文未改动、签名有效,更不能证明所有邮件服务都已完成发信配置。
判断一封实际邮件时,可继续核对收件系统写入的 Authentication-Results,确认其中的 dkim=pass 属于哪一个签名域名与selector,并结合可信收件端的日志。本文没有发送邮件或进行完整验签。当前工具的目标名称限制也应保留在排查记录中,避免将输入错误提示、根域TXT与独立命令的DKIM记录混为一个成功结论。