DKIM 如何查找密钥
邮件中的 DKIM 签名会指定域名(d=)和 selector(s=)。接收方将它们组合成 selector._domainkey.domain,读取该位置的 TXT 记录,并使用其 p= 标签中的公钥验证签名。一个域名可以发布任意数量的 selector,因此每个发信服务都可以使用自己的密钥,也可以在不中断服务的情况下轮换密钥。
检测工具需要 selector,因为 DNS 无法列出一个域名拥有的 selector。没有可供扫描的列表,selector 来自真实邮件的签名。
哪些情况会导致密钥强度不足或失效
RFC 8301 规定 RSA 密钥必须至少为 1024 位,建议使用 2048 位。验证方可以忽略更短的密钥,我们的检查器也会这样做,因此 512 位密钥等同于完全没有签名。Ed25519 密钥(RFC 8463)按设计就是短密钥,同时具有很高的强度,但目前并非所有接收方都能验证,因此通常会与 RSA 密钥一起发布,而不是取代 RSA 密钥。
检查器会完整解码密钥,因为如果一条记录被错误地拆分到多个 TXT 字符串中,或者 base64 无法解码,那么任何接收方都无法使用该密钥。空的 p= 表示该密钥已被主动撤销。t=y 表示域名仍处于测试阶段,RFC 6376 §3.6.1 要求验证方将其邮件完全视为未签名邮件。