「DKIM Signature is Not Valid」というエラーの修正方法
DKIMのエラーの原因から修正方法を学ぶ
2025年1月17日
著者: Yunes Tarada
翻訳: 竹洞 陽一郎
この記事はPowerDMARCのブログ記事 How to Fix the “DKIM Signature is Not Valid” Error? の翻訳です。
Spelldataは、PowerDMARCの日本代理店です。
この記事は、PowerDMARCの許可を得て、翻訳しています。
「DKIM Signature is Not Valid」というエラーを受け取った場合、DKIMの設定に問題があるため、すぐに修正する必要があります。
このエラーは以下の原因で発生する可能性があります。
- DKIMのDNSレコードの設定ミス
- DNSの伝播遅延
- DKIM署名の検証中に発生したエラー
- メールの内容が変更された可能性 など
本ブログでは、「DKIM Signature is Not Valid」というエラーの一般的な原因と、その対処法について解説します。
重要なポイント
- 「DKIM Signature is Not Valid」というエラーは、DNSレコードの誤り、伝播の遅延、メールの改変などが原因で発生する可能性があります。
- DKIMの問題を診断するために、DKIMルックアップツールを使用してDNSエントリを確認することが重要です。
- DNSの伝播遅延は24~48時間かかることがあるため、設定変更後はしばらく待つ必要があります。
- 送信者のドメインとDKIM署名のドメインが一致しない場合、DKIMエラーが発生することがあります。
- 自動転送の問題に対処することでDKIM認証を改善でき、ARCプロトコルを使用することで影響を軽減できます。
DKIM署名について
DKIM(Domain Keys Identified Mail)は、メールの認証プロトコルです。
DKIMは、メールの転送中に内容が変更されていないことを保証し、不正な第三者や中間者攻撃による改竄を防ぎます。
DKIM署名は、メールのヘッダーに追加される情報で、受信側のメールサーバーが送信者のDKIMキーを確認することでメールの真正性を認証できます。
この仕組みは、暗号技術を活用したオンラインセキュリティに基づいています。
DKIM署名ヘッダーの主なタグは、以下の通りです。
- v(バージョン)
-
使用されているDKIMのバージョンを指定します。
例:「v=DKIM1」(DKIMバージョン1) - a(アルゴリズム)
-
署名の生成に使用された暗号アルゴリズムを示します。
例:「a=rsa-sha256」 - d(ドメイン)
-
署名の生成に使用されたDKIMキーを所有するドメインを指定します。
例:「d=example.com」 - s(セレクター)
-
DNSレコード内のDKIM公開鍵を特定するためのセレクターを示します。
例:「s=dkim2024」 - h(署名対象ヘッダー)
-
DKIM署名の計算に含まれたヘッダーをリストします。
これらのヘッダーが変更されると、署名の検証に失敗します。
例:「h=From:To:Subject:Date」 - b(署名): メール全体の暗号署名を含みます。
- 例:「b=AbCdEfGhIjKlMnOp…」
DKIMレコードの設定ミスや、必要なDKIMヘッダーの欠落があると、「DKIM Signature is Not Valid」というエラーが発生する可能性があります。
「DKIM Signature is Not Valid」エラーはいつ発生するのか?
DKIM認証チェックが失敗すると、「DKIM Signature is Not Valid」というエラーメッセージが表示されます。
以下は、一般的な原因です。
- DKIM署名のドメインと送信者のドメインが一致していない
- DNSに公開されているDKIM公開鍵レコードが正しくない
- DKIM公開鍵レコードがDNSに全く公開されていない
- サーバーが送信者のドメインのDNSゾーンにアクセスできない(低品質なホスティングプロバイダーではよく発生)
- DKIMキーの長さが不十分(1024ビットと2048ビットのキーが推奨されるが、ホスティングプロバイダーが短いキーを使用するとエラーが発生)
- メールの自動転送時に内容が変更された
上記の原因のうち、最後の「自動転送による変更」以外は技術的な問題であり、専門家によって修正可能です。
しかし、自動転送による変更は、受信者側のコンプライアンスフッターの追加などを制御できないため、完全に回避するのは現実的ではありません。
では、SPFとDKIMの両方に失敗し、DMARCポリシーが「reject」に設定されている場合、何が起こるのでしょうか?
以前は、受信サーバー側で、このような認証に失敗したが正当なメールを適切に処理するのが困難でした。
しかし現在では、主要なメールサービスプロバイダー(ESP)はAuthenticated Received Chain(ARC)プロトコルを採用しています。
このプロトコルにより、メールサーバーは以前にそのメールを処理したサーバーを特定し、どのような認証手順が適用されたかを把握できるようになります。
「DKIM Signature is Not Valid」エラーの修正方法
DKIMレコードを正しく設定しても、「DKIM Signature is Not Valid」というエラーが表示されることがあります。
ここでは、考えられる原因とその解決策を紹介します。
1. DKIMのDNSレコード設定ミスを修正する
DKIMのTXTレコードを作成し、DNS設定ファイルに追加した後にエラーが発生する場合、以下の手順で問題を特定し修正できます。
- DKIMレコードのエラーを確認する方法
-
- PowerDMARCに登録し、「DKIMルックアップツール」にアクセス
- ドメイン名とセレクターを入力(または空欄のままにすると、自動検出される)
- 「Lookup」ボタンをクリックし、DKIM DNSエントリを分析
- レコードの構文エラーがあれば、ツールが指摘
- DNSのエラー修正手順
-
- cPanelやDNS管理コンソールにログイン
- 「Advanced DNS Zone Editor」または「DNS設定」に移動
- 該当ドメインを選択
- 「DNSレコードの編集」に進む
- DKIMレコードの値を正しいものに修正
- 「保存」をクリック
2. DNSの伝播遅延が解消するまで待つ
DNS設定を変更したにもかかわらずエラーが続く場合、DNSの伝播遅延が原因の可能性があります。
通常、DNSの変更が完全に反映されるまで24~48時間かかります。
TTL(Time-To-Live)値によっては、それ以上かかることもあります。
このような場合、DNSが完全に伝播するまで3~4日待つことを推奨します。
その間に、DNS伝播ツールや解析ツールを使用して、ドメインのDNS伝播状況を確認することができます。
訳注: 全世界でのDNS伝播状況を解析するツールには、DNS Chekerがあります。
「DKIM-Signature Body Hash Not Verified」エラーが発生する理由
「DKIM-signature body hash not verified」というステータスが表示される場合、メールの本文のハッシュ値が「bh=」タグに記載されたハッシュ値と一致していないことを意味します。
これは、以下の理由で発生する可能性があります。
多くのビジネスメールサーバーは、受信メールの本文に署名やフッターを自動追加します。
この変更により、本文ハッシュが不一致となり、「DKIM-signature body hash not verified」エラーが発生します。
これにより、DKIM認証が失敗し、さらにDMARC認証も失敗する可能性があります。
悪意のある第三者がメールの内容を改竄した場合も、ハッシュ値が一致せず、エラーが発生します。
この場合、DKIMおよびDMARCの認証が失敗する可能性があります。
「DKIM=neutral (body hash did not verify)」エラーが発生する可能性のある他の要因には、以下のものがあります。
- メールの転送時に、転送サーバーやフィルタリングシステムが本文を変更した(例: フッターの追加、改行の変更)。
- DKIM署名の計算ミス(送信サーバーの設定ミスなど)。
- 攻撃者が正しい秘密鍵を持たずにメールをなりすまし、偽のDKIM署名を付与した。
- DKIM-Signatureヘッダーに指定された公開鍵が正しくない。
- 送信者がDNSに公開したDKIM公開鍵が誤っている。
このような問題が発生すると、DKIM認証が失敗し、結果的にDMARCポリシーに従ってメールが拒否されたり、迷惑メール扱いされたりする可能性があります。
どのように送信元を調査できますか?
DKIM署名のボディハッシュが検証されないエラーが発生した場合、メールの送信元を調査すると有益な場合があります。
- そのソースがドメインの送信元として許可されたリストに含まれているか確認してください。
- インターネット上でそのソースを検索してください。
- RBLブラックリストのWebサイトで、そのソースが掲載されていないか確認してください。
- DMARCのフォレンジックレポートを調査し、そのソースから送信されたメールの種類を確認してください。
- そのソースが有効である場合は、DMARCを正しく設定するためのドキュメントを探してください。
- そのソースに連絡を取ってください。
DKIMはメールをフィルタリングしますか?
DKIM自体はメールをフィルタリングしませんが、その検証結果は受信者のドメインで使用されるフィルタに影響を与えます。
そのため、信頼できるドメインからのメールがDKIM検証に合格すると、スパムスコアが下がる可能性があります。
逆に、DKIM検証に失敗した場合、そのメールはスパムとしてマークされるか、隔離されるか、件名にスパムタグが追加されることがあります。
「DKIM署名が無効」というエラーを修正しました。次に何をすればよいですか?
DKIMの適合性を強化するために、次のステップを実施できます。
- DKIM認証結果を監視するために、DKIMアナライザーに登録する。
- 追加のセキュリティ対策と正確な評価のために、SPFとDMARCを有効にする。
- 保護を強化するために、DKIMキーを定期的にローテーションする。
それでもエラーが解決しません
「DKIM Signature is Not Valid」というエラーが引き続き発生する場合は、メールサービスプロバイダーに問い合わせて指示を仰ぐか、メール認証に関する専門的なアドバイスを求めて当社にご連絡ください!