DKIMエラーの修正方法
DKIM認証を成功させるために、失敗原因を理解する
2024年3月27日
著者: Maitham Al Lawati
翻訳: 永 香奈子
この記事はPowerDMARCのブログ記事 How to Fix DKIM Failure の翻訳です。
Spelldataは、PowerDMARCの日本代理店です。
この記事は、PowerDMARCの許可を得て、翻訳しています。
ドメインのメッセージにおけるDKIMエラーは、DKIMプロトコルにおける識別子の整合性エラーやレコード設定の問題が原因である可能性があります。
今回は、DKIM仕様がどのようにドメインを認証するのか、メッセージでDKIMが失敗する理由、そしてDKIMを簡単に修正する方法について、ステップバイステップで解説します。
DKIMエラーとは何を意味するのか?
送信メールに対してDKIMが有効化されている場合、受信サーバは、メールの正当性を確認するためにDKIMの秘密鍵とDNSに公開されている公開鍵を照合します。
鍵が一致すれば、DKIM認証は成功(Pass)となり、一致しない場合は失敗(Fail)となります。
DKIMエラーとは、DKIM認証チェックが失敗した状態を指します。
これは、DKIM署名ヘッダに指定されたドメインとFromヘッダのドメインが一致しない、または鍵ペアの値に不整合がある場合に発生します。
DKIM失敗の一般的な理由
1.DKIMレコードの構文エラー
信頼性の高いDKIMレコード生成ツールを使用せず、手動でドメイン用のレコードを設定しようとすると、適切に実装できない可能性があります。
DNSレコードの構文エラーは、認証失敗の原因となることがあります。
2.DKIM整合性チェックの失敗
ドメインにDKIMに加えてDMARCを設定している場合、DKIMチェック中にメールヘッダ内のDKIM署名のd=フィールドのドメイン値が、Fromアドレスに記載されたドメインと一致する必要があります。
この整合性は、2つのドメインが完全に一致する「厳密な整合性」か、組織レベルでの一致を許容する「緩和された整合性」のいずれかでチェックされます。
DKIM署名ヘッダのドメインがFromヘッダに記載されたドメインと一致しない場合、DKIM認証が失敗する可能性があります。
これは、ドメインスプーフィングやなりすまし攻撃の典型的なケースである可能性があります。
3.サードパーティのメールベンダーに対するDKIM設定が未実施
組織名義でメールを送信する際に複数のサードパーティメールベンダーを利用している場合、それらのベンダーに連絡して、送信メール用のDKIMを有効化する手順を確認する必要があります。
カスタムドメインやサブドメインを使用して顧客にメールを送信する場合、ベンダーに依頼してDKIMを設定してもらうことを忘れないでください。
理想的には、サードパーティベンダーがメール送信を代行する場合、ベンダーはあなた専用のDKIMセレクタを使用して、彼らのDNS上にDKIMレコードを公開する形でドメインを設定します。
このプロセスには通常、あなたが直接介入する必要はありません。
または、あなた自身でDKIMキーのペアを生成し、プライベートキーをメールベンダーに提供し、パブリックキーを自分のDNSに公開する方法もあります。
ただし、これらの設定が誤っているとDKIM認証が失敗する原因になるため、DKIMの設定についてサービスプロバイダーと密接に連携することが重要です。
注意: 一部のサードパーティExchangeサーバーは、メッセージ本文にフォーマット済みのフッタを挿入することがあります。
これらのサーバーがメール転送プロセスにおける中間サーバーとして機能している場合、追加されたフッタがDKIM失敗の一因となる可能性があります。
4.サーバ間通信の問題
特定の状況では、DKIMが無効になっているサーバからメールが送信されることがあります。
このような場合、そのメールはDKIM認証に失敗します。
通信する両者がDKIMを正しく有効化していることを確認することが重要です。
5.メール転送エージェント(MTA)によるメッセージ本文の変更
SPFとは異なり、DKIMは送信者のIPアドレスやリターンパスを検証するのではなく、メッセージ内容が配送中に改ざんされていないことを確認します。
しかし、参加するMTAやメール転送エージェントが、行折りやコンテンツのフォーマット変更などでメッセージ本文を変更することがあり、それがDKIM認証失敗の原因となる場合があります。
メールの内容をフォーマットする作業は、通常、各受信者にとって読みやすい形にするための自動プロセスです。
6.DNS障害 / DNSダウンタイム
DNS障害は、DKIM認証失敗の一般的な原因の一つです。
DNS障害は、サービス拒否(DoS)攻撃などさまざまな理由で発生する可能性があります。
また、ネームサーバーの定期メンテナンスもDNSダウンタイムの原因となる場合があります。
この(通常は短い)期間中、受信サーバーはDNSクエリを実行できなくなります。
DKIMはDNS内にTXTまたはCNAMEレコードとして存在しており、認証時にクライアントサーバーが送信者のDNSから公開鍵を取得するためのルックアップを行います。
障害発生時にはこのプロセスが不可能となり、DKIM認証が失敗する可能性があります。
7.OpenDKIMの使用
OpenDKIMは、Gmail、Outlook、Yahooなどのメールプロバイダーが一般的に使用するオープンソースのDKIM実装です。
OpenDKIMは検証時にポート8891を介してサーバーと接続します。
時折、誤った権限設定が原因でサーバーがソケットに接続できなくなり、エラーを引き起こすことがあります。
ディレクトリを確認し、正しく権限を設定しているか、またはソケット用のディレクトリが設定されているか確認してください。
DKIM認証失敗の異なる結果
1.認証結果: dkim=neutral (bad format)
DKIMレコードの自動生成された改行が原因で、「dkim=neutral (bad format)」というエラーメッセージが表示されることがあります。
メール検証ツールが検証時にリソースレコードを結合する際、誤った値を生成することが原因です。
解決策として、1024ビットのDKIMキー(2048ビットではなく)を使用することで、255文字のDNS制限内に収めることが可能です。
2.認証結果: dkim=fail (bad signature)
DKIM認証失敗の結果は、メッセージ本文内のコンテンツが第三者によって改変された場合に発生する可能性があります。
これにより、DKIM署名ヘッダがメール本文と一致しなくなります。
3.認証結果: dkim=fail (DKIM-signature body hash not verified)
「DKIM署名本文ハッシュが検証されない」または「DKIM署名本文ハッシュが検証に失敗」という結果は、受信サーバが返すエラーの一種で、DKIM本文ハッシュ値(bh=タグ)が転送中に何らかの形で変更されたことを示しています。
DKIM鍵ペアが正しく設定され、公開鍵がDNSに正しく公開されていても、スペースや特殊文字の挿入など、ハッシュ値のわずかな変更によって本文ハッシュの検証が失敗することがあります。
bh= タグの値が変更される可能性のある理由は以下の通りです:
- 中間サーバーがメール内容を変更する場合。
- メールプロバイダーによるメールフッタの追加。
4.認証結果: dkim=fail (no key for signature)
このエラーは、DNSにおいて無効または欠落している公開鍵が原因で発生する可能性があります。
DKIM用の公開鍵と秘密鍵が一致しており、正しく設定されていることを確認することが非常に重要です。
DNSにDKIMレコードが公開されており、有効であるか確認していますか?
今すぐ無料のDKIMレコードチェッカーを使用して確認してください。
DKIM認証エラーを回避する方法
残念ながら、上記の問題すべてを回避することは不可能です。
しかし、DKIM失敗のリスクを最小限に抑えるための有用なヒントをいくつかまとめました。
DKIMの失敗を修正するにはどうすればよいですか?
- 正確な結果を得るために、信頼できる有名なジェネレーターツールを使用してDKIMレコードを生成し、常に値をコピーペーストしてエラーを回避してください。
- DKIMレコードにギャップやエラーがないか確認してください。
- ドメインのなりすましやなりすましに対するセキュリティの追加レイヤーとして、SPFとDMARCを実装してください。DMARCは、メッセージが検証に合格するためにSPFまたはDKIMのいずれかが合格する必要があります。そのため、DKIMが失敗し、SPFが合格した場合でも、メッセージはDMARCに合格し、配信されます。
- ドメインのDMARCレポートを有効にしてください。
- 専用のDMARCリーダーダッシュボードでDKIM失敗レポートと認証結果を監視してください。
- メールベンダーと詳細に話し合い、DKIM設定、プロトコルをサポートしているかどうか、およびその処理方法について確認してください。
- DMARCアナライザーの無料トライアルにサインアップして、DMARC専門家チームからメール認証設定に関する専門的なアドバイスを受けてください。
注意:
本記事では、一般的なDKIMエラーとその考えられる原因、およびその解決策について説明しました。
しかし、ドメインやサーバー固有のさまざまな根本的な理由により、本記事でカバーされていないエラーが発生する可能性があります。
認証プロトコルを組織に実装したり、ポリシーを施行する前に、十分な知識を身に付ける必要があります。
DKIM、SPF、DMARCの検証の失敗は、メールの配信性に影響を与える可能性があります。
メールの自動転送とDKIM vs SPF
自動転送されたメールでは、1つ以上の中間サーバーが関与するため、メールヘッダが変更されます。
転送されたメッセージは、このサードパーティの中間サーバーのヘッダ情報を引き継ぎます。
このサーバーは、元の送信者のSPFレコードに承認された送信元として含まれている場合もあれば、含まれていない場合もあります。
含まれていない場合、そのメッセージのSPFは失敗します。
DKIM署名はメール本文に含まれているため、転送はDKIMに影響を与えません。
そのため、既存のSPFポリシーの上にDKIMを設定することで、転送されたメッセージの不要な認証DKIMエラーを回避できます。
DKIMを使わずに問題を解決する
DKIMとSPFを一緒に設定することは推奨されていますが、必須ではありません。
- ドメインにDKIMを設定したくないが、転送されたメールのSPFエラーを解決したい場合は、メールのリダイレクトという方法を使用できます。メールをリダイレクトすると、メッセージの元のヘッダが保持されます。
- または、転送プロセスに関与するすべての中間サーバーのIPアドレスをドメインのSPFレコードに含めることもできます。
DKIMとは何か、なぜ設定する必要があるのか
DKIMは、メール送信元の正当性を検証し、メールの内容が配信プロセス全体を通じて変更されていないことを保証するメール認証システムです。
メールが詐欺行為の手段となり得ることを考えると、メールのDKIM設定の必要性について話す必要があります。
フィッシングからドメインのなりすまし、マルウェア感染に至るまで、さまざまななりすまし攻撃が偽のメールを通じて実行される可能性があります。
そのため、企業はメール送信者を認証するためのフィルタリングシステムを設定する必要があります。
これにより、自社の評判を守るだけでなく、何百万人ものユーザがメール詐欺の被害に遭うのを防ぐことができます。
以下で説明するように、DKIMエラーは、プライベートキーとパブリックキーが一致しない場合に発生します。
DKIMは、ハッシュ値(プライベートキー)を使用してメール情報を署名し、送信者のDNSに登録されたパブリックキーと照合するメール検証システムです。
DKIM署名でデジタル署名されたメールは、悪意のある第三者による改ざんに対して高いレベルの保護を受けています。
DKIMエラー FAQ
1.どのような送信者がDKIMに失敗していますか?
失敗する典型的な送信者は次のような場合です:
- プロトコルを正しく設定していない
- 非対応のメールプロバイダーに対して2048ビットの鍵を使用している
- メッセージ転送中にサードパーティの中間者によってメールの内容が変更された
2.DKIMが失敗してもDMARCはパスできますか?
はい、メールのSPFがパスしていれば可能です。
DMARCを設定し、メールをSPFとDKIMの両方のメカニズムに照合している場合、DMARCに合格するには、どちらか一方のチェック(SPFまたはDKIM)に合格するだけで済みます。
ただし、DMARCの整合性がDKIM認証のみに依存している場合、DMARCとDKIMの両方が失敗します。