エラーメッセージ
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` になります。
このエラーの意味
メッセージにはセレクター `s=` とドメイン `d=` の DKIM 署名が付いていますが、TXT レコード `<selector>._domainkey.<domain>` が存在しないため、受信側は何も検証できません。OpenDKIM はこれを、この理由とともに `dkim=fail` として報告します。ほかの検証者は同じ状態を異なる形で分類し、mailauth は `dkim=neutral (no key)`、一部の検証者は `dkim=permerror` とします。DMARC では、いずれも DKIM の pass としては扱われません。
発生する理由
セレクターのレコードが作成されていない
よくある新しい署名鍵(または新しいメールプロバイダー)が、TXT レコードが追加される前にそのセレクターで署名を始めています。Google Workspace、Microsoft 365、SendGrid などの ESP は、レコードが存在して初めて正しく署名するようになります。
レコードがわずかに異なる名前で存在する
よくあるゾーン名を自動で付け加える DNS の管理画面では、`s2026._domainkey.example.com.example.com` ができてしまいます。また、サブドメインが別の場所に委任されているのに親ゾーンで作成したレコードも見つかりません。
CNAME の参照先または分割されたレコードが壊れている
ときどき自社の鍵レコードへの CNAME を使うプロバイダー(`s1._domainkey → s1.domainkey.u123.wl.sendgrid.net`)では、CNAME がないか、削除された参照先を指していると失敗します。
まだメールで使われている鍵が削除された
ときどきローテーションの直後に古いセレクターを削除すると、まだキューにあるメッセージや、後で再検証されるメッセージ(転送、ARC)が検証できなくなります。
修正方法
- 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.
鍵を公開し、古いセレクターをしばらく残す
新しいセレクターで署名する前にそのセレクターを公開し、切り替え後も以前のセレクターを数日間残してください。
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..." )
関連するエラー
dkim=fail reason="signature verification failed"OpenDKIM (Authentication-Results header added by the opendkim milter); mailauth reports the same as "bad signature"dkim=permerrorOpenDKIM (Authentication-Results); mailauth reports syntax errors as dkim=neutraldkim=fail (body hash did not verify)DKIM verifiers (Gmail, mailauth, Rspamd…)