跳到主要内容
ecdsa.com
OpenDKIM (Authentication-Results); mailauth reports it as dkim=neutral (no key)DKIM

错误信息

dkim=fail reason="key not found in DNS"

也可能输出为

  • dkim=neutral (no key)

不同验证方的归类不同(OpenDKIM 为 `fail`,mailauth 为 `neutral (no key)`,两者均已复现),因此同一封邮件在你自己服务器的邮件头中和在大型邮箱服务商那里看起来可能不一样;Gmail 的邮件头通常写作 `dkim=neutral (no key for signature)`,这是线上服务的措辞,无法在容器中复现。如果不是记录缺失而是 DNS 超时,结果则是 `dkim=temperror`。

含义

邮件中的 DKIM 签名指定了选择器 `s=` 和域名 `d=`,但 TXT 记录 `<selector>._domainkey.<domain>` 并不存在,因此接收方无法做任何验证。OpenDKIM 把这种情况报告为 `dkim=fail` 并附上这条原因;其他验证方对同一情况的归类不同——mailauth 报告为 `dkim=neutral (no key)`,有些则报告为 `dkim=permerror`。对 DMARC 来说,这些结果都不算 DKIM 通过。

原因

修复方法

  1. 1.

    查询准确的记录名称

    用签名头中的 `s=` 和 `d=` 拼出记录名称,然后从你的网络外部查询。

    bash
    # s= and d= from the DKIM-Signature header name the record: <s>._domainkey.<d>
    dig +short TXT s2026._domainkey.example.com
    dig +short TXT s2026._domainkey.example.com @1.1.1.1   # bypass local caches
  2. 2.

    发布密钥,并将旧选择器保留一段时间

    先发布新选择器,再用它签名;切换后把之前的选择器再保留几天。

    text
    ; zone example.com - long keys are split into several quoted strings of at most 255 characters
    s2026._domainkey  IN TXT ( "v=DKIM1; k=rsa; "
                               "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..." )

相关错误

浏览完整的签名错误库