BLOG ベアメールブログ
最終更新日:2026.05.12
DKIMは送信ドメイン認証の一つで、メールに電子署名を付与することで、改ざんされていないことを検証する技術です。メールの信頼性を担保するために重要な仕組みですが、「正しく設定したはずなのに認証が失敗する」といったケースに直面することもあるでしょう。本記事では、DKIMの基本的な仕組みから認証結果の見方、認証に失敗する主な原因と確認ポイントまで詳しく解説します。

目次
DKIMとは
DKIMは「DomainKeys Identified Mail」の略称で、電子メールにおける送信ドメイン認証技術の一つです。メールに電子署名を付与し、送信途中で内容が改ざんされていないかを検証します。
DKIMの概要や導入方法については、以下の記事で詳しく解説しています。
DKIMとは? 仕組みから導入方法までわかる入門ガイド|ベアメールブログ
DKIMの仕組み
DKIMでは、送信側がメールに電子署名を付与し、受信側が署名を検証することで認証が行われます。具体的な流れは、以下の通りです。
- 送信側:DKIMに使用する秘密鍵を送信メールサーバーに登録する。
- 送信側:対応する公開鍵を、送信ドメインのDNSサーバー(TXTレコード)に登録する。
- 送信側:メール送信時に、メールのヘッダと本文からハッシュを生成し、秘密鍵で署名を行う。その結果を、DKIM-Signatureとしてメールヘッダに付与する。
- 受信側:受信したメールのヘッダと本文を基に、ハッシュ値を再計算する。DNSから取得した公開鍵を用いて電子署名を検証し、署名時のハッシュ値と照合することで、メールが改ざんされていないことを確認する。

DKIM認証結果の確認方法と意味
DKIMを設定していても、正しく認証されるとは限りません。まずはメールヘッダを確認し、DKIM認証の結果を把握することが重要です。本章では、認証結果の確認方法と、その種類や意味について解説します。
認証結果の確認方法
DKIMの認証結果は、メールヘッダから確認できます。
例えばGmailでは、メールを開いて右上のメニューから「メッセージのソースを表示」をクリックすると、「PASS」「FAIL」などの認証結果の概要が表示されます。

より詳細な情報を確認したい場合は、メールヘッダ内の「Authentication-Results」を確認します。「dkim=******」となっている箇所が認証結果を示しています。ブラウザの機能で「dkim」と検索すると、該当箇所を見つけやすくなります。

メールヘッダの内容や確認方法については、以下の記事で詳しく解説しています。
メールヘッダの解析方法とは? 各項目の見方とツール活用法を徹底解説|ベアメールブログ
認証結果の一覧
メールヘッダのAuthentication-Resultsで表示されるDKIMの認証結果は、以下の通りです。
認証結果 意味 考えられる要因 Pass 認証に合格した – None DKIM署名がない DKIMを導入していない、DKIM-Signatureが付与されていない Fail 署名の検証に失敗した メール本文やヘッダが配送途中で変更された、公開鍵と秘密鍵が一致していないなどの可能性 Neutral DKIM署名は存在するが、認証結果を判定できなかった 署名の形式に問題がある、または検証に必要な情報が不足している可能性 Temperror DKIM認証において一時的なエラーが発生した 何らかの理由でDNSから公開鍵を入手できなかったなど、一時的と考えられる不具合 Permerror DKIM認証において永続的なエラーが発生した 認証に必要なDKIM-Signatureのフィールドが欠落しているなど、永続的な不具合 Policy(※一部の受信環境で表示される可能性がある) DKIM署名は存在するが、受信側のローカルポリシーにより無効と判断された 受信側のローカルポリシー(鍵長の制限など)によって検証が拒否された
なお、認証結果は検証を行う受信メールサーバーのポリシーによって異なる場合があり、ある受信サーバーでは「Fail」と判定されたメールが、別の受信サーバーでは「Neutral」として扱われるといったケースもあります。
認証結果に追記されるメッセージの例
Authentication-ResultsのDKIM認証結果の後には、()やreason=の形式で補足情報が付与されることがあります。認証に失敗した場合は、これらの情報から原因の手がかりを把握することができます。
主なメッセージの例は以下の通りです。
メッセージ 意味 dkim=fail(signature did not verify) 署名の検証に失敗した dkim=fail(body hash did not verify) ボディハッシュが一致しない(本文が改変されている可能性) dkim=neutral(bad version) DNSのバージョン(v=タグ)が不正 dkim=temperror(dns unavailable) DNSに接続できない dkim=temperror(key query timeout) 公開鍵の取得時にDNSクエリがタイムアウトした dkim=permerror(no key for signature) DNSに公開鍵が存在しない dkim=permerror(invalid public key) 公開鍵の形式が不正 dkim=permerror(bad key) 公開鍵の内容が不正 dkim=permerror(0-bit key) 公開鍵の鍵長が0など異常な値 dkim=permerror(key too long) 公開鍵データが長すぎる dkim=permerror(signature syntax error) 署名の構文に誤りがある dkim=permerror(signing time is in the future) 署名時刻(t=タグ)が未来
DKIM認証に失敗する原因
DKIM認証に失敗している場合は、原因を特定して適切に対処する必要があります。認証エラーが続くと、受信側で迷惑メールと判定されたり、拒否されたりする可能性があります。
本章では、DKIM認証に失敗する主な原因を解説します。
DKIM署名がメールに付与されていない
メールヘッダの認証結果に「dkim=none」と表示されている場合、そのメールにはDKIM署名が付与されていないか、検証対象の署名が存在しないことを意味します。主な原因は、送信側でDKIM署名が有効になっていないことです。
よくある原因
- 送信メールサーバーでDKIMが有効化されていない
- メール配信サービス側でDKIMが設定されていない
- サブドメインから送信しているが、該当ドメインのDKIM設定を行っていない
- 複数の送信経路を利用しており、一部の送信経路でDKIM設定が漏れている
DKIMレコードの設定ミス
DKIMレコードの設定に不備があると、受信側サーバーが公開鍵を正しく取得できず、認証エラーとなります。
よくある設定ミス
- DKIMレコードを設定するFQDN(Fully Qualified Domain Name:完全修飾ドメイン名)の形式に誤りがある
- 公開鍵(p=)の欠落やフォーマットエラー(不要なスペースや改行など)
- タグの記載に誤りがある(値が空になっている、セミコロン(;)が欠けているなど)
- 使用するDNSサービスが公開鍵の長さに対応していない(※一部のDNSサービスでは、2048ビット鍵の登録に制限があります)
公開鍵と秘密鍵が一致していない
送信側で使用している秘密鍵と、DNSに公開されている公開鍵が一致しない場合、署名の検証結果が不一致となり、認証に失敗します。秘密鍵や公開鍵の一部が欠落していたり、設定に誤りがあったりするケースが考えられます。
よくある原因
- 送信サーバー側の秘密鍵を変更したが、DNSの公開鍵を更新していない
- DNSの公開鍵を変更したが、送信サーバー側の秘密鍵を更新していない
- セレクタ名を変更したが、送信側の設定が旧セレクタのままになっている
- 複数のメールサーバーを使用しており、一部のサーバーで古い鍵を使用している
DNSサーバーに接続できない
DNSサーバーに接続できない、または応答が得られない場合、DKIM認証に必要な公開鍵を受信側が取得することができず、認証ができません。このケースでは、認証結果は「dkim=temperror」などとして表示されます。DNSサーバーのメンテナンスや障害、外部からの攻撃など、様々な原因が考えられます。
メール送信後に内容が変更されている
メール配送途中に内容が変更されると、受信側でDKIM署名の検証に失敗します。この場合、メールヘッダのDKIM認証結果に「body hash did not verify」などと表示されます。
よくある原因
- メールサーバー(MTA)によって、本文の改行や空白、エンコード形式などが変更された
- 迷惑メールフィルター(スパムフィルター)によって、ヘッダや本文が書き換えられた
DKIM認証に失敗したときの確認ポイント
DKIM認証に失敗した場合は、設定や配信環境に問題がないかを確認し、適切に対処することが重要です。本章では、押さえておきたい主な確認ポイントを解説します。
DKIM署名がメールに付与されているか
まず、メールにDKIM署名が正しく付与されているかを確認します。メールヘッダの認証結果が「dkim=none」となっている場合、署名自体が付与されていない可能性があります。
送信メールサーバーやメール配信サービスでDKIMが有効化されているか、サブドメインを含め設定漏れがないかを確認しましょう。複数の送信経路を利用している場合は、それぞれの経路でDKIMが有効になっているかを確認することも重要です。
DKIMレコードが正しく取得できるか
DNSに登録したDKIMレコード(公開鍵)が正しく取得できるかを確認します。MX toolboxのDKIM Record Lookup(https://mxtoolbox.com/dkim.aspx)などのツールを利用すると確認できます。レコードのFQDNやタグの記述に誤りがないか、公開鍵(p=)が正しく設定されているかをチェックしましょう。
また、2048ビットのDKIM鍵を使用している場合は、TXTレコードの文字数制限(1つの文字列あたり255文字)により値を分割して登録する必要があります。分割時は、各文字列を引用符(””)で囲み、順番に連結して設定します。
DKIMレコードの書き方については、以下の記事で詳しく解説しています。
DKIMレコードの書き方は? 設定・確認方法や失敗例も解説|ベアメールブログ
秘密鍵と公開鍵が一致しているか
送信側で使用している秘密鍵と、DNSに公開されている公開鍵が一致しているかを確認します。一致しない場合、認証結果は「dkim=fail」となります。
鍵を変更した際に秘密鍵と公開鍵のいずれかのみが更新されていないケースや、セレクタの設定が一致していないケースがないかを確認しましょう。複数の送信サーバーを利用している場合は、すべてのサーバーで同じ鍵が使用されているかを確認することも重要です。
DKIM-Signatureの内容が正しいか
DKIM-Signatureヘッダの内容に誤りがないかを確認します。署名が付与されていても、フォーマットや値に不備があると検証エラーの原因になります。送信メールサーバーで署名を行うDKIMソフトウェア(OpenDKIMなど)の設定や動作状況を確認しましょう。
確認すべきポイントは以下の通りです。
- タグ=値の形式に誤りがないか(例:タグ名や値の記述ミスなど)
- 値が空になっているタグがないか
- 不要な空白や改行、無効な文字が含まれていないか
- DKIM署名を行うソフトウェアとMTAの連携が正しく行われているか
DKIM-Signatureには、主に以下のタグが含まれます。これらの値に誤りがないか確認しましょう。
タグ 値の例 説明 v= 1 DKIMのバージョン d= sample.com 署名に使用するドメイン名 a= rsa-sha256 署名アルゴリズム s= selector DKIMセレクタ名 h= From:To:Subject:Date: 署名対象のヘッダ b= ausD31EomLFAwdDvBK2O… 電子署名データ(Base64) bh= 3a98jY=;BKusD3oAMdDvM… 本文のハッシュ値(Base64)
メールの内容が配送途中で変更されていないか
メールヘッダのDKIM認証結果に「body hash did not verify」と表示されている場合、配送途中で本文やヘッダが変更されている可能性があります。
中継サーバーやセキュリティ製品、スパムフィルターなどによってメールが書き換えられていないかを確認しましょう。メールヘッダをチェックすることで、どの時点で変更が発生しているかを特定できます。
DNSサーバーの応答に問題がないか
DNSサーバーに接続できない、または応答が得られない場合、公開鍵を取得できず、DKIM認証は一時的に失敗(temperror)となります。
DNSサーバーの障害やメンテナンスの影響が出ていないかを確認し、必要に応じて冗長化や信頼性の高いDNSサービスの利用を検討しましょう。
DKIM認証結果や迷惑メール判定リスクをまとめて確認するには
ベアメールの「迷惑メールスコアリング」では、テストメールを送信するだけで、DKIMをはじめSPF・DMARCの認証結果を確認できます。
さらに、送信元IPアドレスの評価、ブラックリストの登録状況、メール本文の内容、キャリアごとの到達度なども総合的に分析し、迷惑メールと判定されるリスクを可視化することが可能です。
メールの認証状況や配信環境の状態をひと目で確認できるため、認証エラーの原因特定や改善ポイントの把握に役立ちます。
「DKIM認証がエラーになる原因を知りたい」「メールの配信状況を確認したい」といった場合は、ぜひお気軽にご相談ください。
まとめ
DKIM認証に失敗する原因は、署名の未付与やDNS設定ミス、鍵の不一致、配信途中の改変など様々です。認証エラーが発生した場合は、本記事で紹介した確認ポイントを参考に、設定や配信環境を見直してみてください。