Menu

BLOG ベアメールブログ

DMARC認証が失敗する原因は? DMARC failの修正方法を解説

Last Updated on 2024.08.6

DMARCを導入したもののDMARCの認証が失敗してしまい、その改善方法もわからずお困りのことはありませんか? DMARCの運用開始初期には、認証失敗が生じてしまうことが多くあります。本記事では、DMARC認証が失敗する原因とその確認方法、そして効果的な修正方法について解説します。

なぜDMARC認証が失敗するのか?

まずはDMARCの認証の仕組みと、考えられる認証失敗の原因について解説します。

DMARCとは

DMARC(Domain-based Message Authentication, Reporting, and Conformance)は、従来の送信ドメイン認証技術であるSPFやDKIMでは防ぐことが難しかった、ヘッダFromのなりすましを防ぐために考案されました。

SPFやDKIMはなりすまし対策として有効な技術ですが、認証した実際の送信者のドメインと、メールソフト上で表示される送信元ドメイン(ヘッダFrom)が一致するかまでは検証を行いません。そのため、スパマーがヘッダFromと異なるドメインでSPFやDKIM認証をPass(合格)させてしまうと、受信者は不正なメールとして検知できない可能性があるのです。

DMARCはこの弱点をカバーするためにヘッダFromを中心とした認証を行い、ヘッダFromのなりすましを防止します。加えて、DMARCポリシーによる認証失敗時のメール取扱いの指定と、DMARCレポートという認証結果に関するフィードバックレポートを受け取ることが可能です。

メッセージソースを確認すると、SPFとDKIMがPASSになっているが、ヘッダfromのドメインとは異なっていることがわかる説明図

DMARCの機能や導入方法について詳しく知りたい方は、こちらの記事をご参照ください。
DMARCとは? SPF・DKIMとの関係と仕組み、導入方法まで解説 | ベアメールブログ

DMARC認証の方法

DMARC認証のポイントは、メールソフト上で表示される送信元メールアドレスであるヘッダFromと、SPFやDKIMで認証したドメインが一致するかを確認する「アライメント」です。

  • SPFアライメント:ヘッダFromのアドレスが、SPFで認証したエンベロープFrom(=Return-Path)と一致するかチェック
  • DKIMアライメント:ヘッダFromのアドレスが、DKIM署名において「d=」で指定したドメインと一致するかチェック

DMARC認証に合格するには、

  • SPF認証に合格し、SPFアライメントにも合格する
  • DKIM認証に合格し、DKIMアライメントにも合格する

のいずれかを満たす必要があります。

SPF認証とDKIM認証両方に合格していても、どちらもアライメントに合格していなければDMARC認証はpassできません。また、アライメントがpassしていても、SPF認証やDKIM認証そのものが失敗していた場合も、DMARC認証はfail(失敗)となります。

DMARCのアライメントモードとは

DMARCにはアライメントモードという設定があり、アライメントをチェックする際の厳しさを2段階から選ぶことができます。

  • relaxed:ヘッダFromの組織ドメインと、SPFやDKIMで認証したドメインが同じであれば成功する。つまりサブドメインを利用していても一致とみなすことが可能
  • strict:relaxedよりも厳しく、ヘッダFromのFQDNがSPFアライメントの場合はReturn-Path(エンベロープFrom)と、DKIMアライメントの場合は署名ドメインが完全に一致する必要がある

いずれもDNSに登録するDMARCレコードで指定可能です。

DMARCのアライメントについて詳しく知りたい方は、こちらの記事もご参照ください。
DMARCのアライメントとは? SPF・DKIMアライメントをPassするためのポイント | ベアメールブログ

DMARCの認証結果の確認方法

DMARC認証結果を確認するには、メールヘッダの解析、DMARCのレポートの確認、そしてDMARC分析ツールの利用が有効です。

メールヘッダで確認

受信したメールのヘッダには、DMARC認証の結果が含まれています。メールヘッダを分析することで、メール配送のどの時点で、どの認証が失敗したのか確認することができます。

例えばGmailの場合、メールを開き、メール右上の縦三点ボタン(その他)をクリックし「メッセージのソースを表示」を押すと、メールヘッダの情報を確認することができます。

以下のように概要が表示されるため、DMARCの認証結果そのものは一目でわかります。(※そもそもDMARCを導入していない場合は表示されません)
もし”FAIL”となっている場合は失敗しているため、ヘッダ情報の詳細を確認し、もう少し詳しく調べることをお勧めします。

DMARC認証が失敗しているメールヘッダの例

ソースは読みづらいため、ブラウザの機能で「dmarc」と検索すれば該当箇所を素早く見つけることができます。

DMARC=failとなっているメールソースの例

Authentication-Resultsの「dmarc=******」となっている箇所が認証結果です。

DMARC認証結果のヘッダへの記載方法は、そのメールを受信したサーバーによって異なります。上記の例ではdmarc=fail(p=NONE sp=NONE dis=NONE)とありますが、これはDMARC認証に失敗したものの、DMARCポリシー(p=)がNONE、サブドメインのポリシー(sp=)がNONE、そしてメールの処置(dis=)もNONE(何もしない)という意味です。ポリシーが監視のみのため、DMARC認証に失敗しても隔離や拒否は行っていないということです。

Microsoft 365を利用している場合は、Microsoft独自の構文が使用されます。以下はMicrosoftが公開しているDMARCの認証結果のヘッダフィールドです。

【フォーマット】
dmarc=<pass | fail | bestguesspass | none> action=<permerror | temperror | oreject | pct.quarantine | pct.reject> header.from=<domain>

【例】
dmarc=pass action=none header.from=contoso.com
dmarc=bestguesspass action=none header.from=contoso.com
dmarc=fail action=none header.from=contoso.com
dmarc=fail action=oreject header.from=contoso.com

DMARCの認証結果のヘッダフィールドには、基本的に理由については記載されませんが、Microsoftは「compauth」という複合認証の結果を記載する場合があります。comauthはMicrosoft独自の認証で、SPF・DKIM・DMARCなどの複数の認証結果とメッセージのその他の部分を組み合わせて判定するものです。

【compauthの記載例】
dmarc=fail action=oreject compauth=fail reason=000

compauthが失敗した理由についてはreason=の後に続く3桁のコードで示され、000,001,002,010,1xx,2xx,3xx,4xx,6xx,7xx,9xxのコードごとに定義されています。

詳しくはMicrosoftの公式サイトをご参照ください。

Microsoft「Microsoft 365 のスパム対策メッセージ ヘッダ」https://learn.microsoft.com/ja-jp/defender-office-365/message-headers-eop-mdo#authentication-results-message-header

DMARCレポートの確認

DMARCレコードでレポートの送信先を指定することで、各メールサービスプロバイダからDMARCレポートを受け取ることができるようになります。DMARC集計レポート(ruaレポート)には、送信元IPアドレスの情報、送信通数、SPF・DKIM・各アライメントの認証結果や、メッセージに適用された結果など、詳細な情報を確認することができます。

DMARC集計レポートのサンプル

ただし、DMARC集計レポートはXML形式のファイルで各メールプロバイダから日々大量に送信されてくるため、その1つ1つを人力で確認していくのは現実的ではないでしょう。

DMARCレポートの詳しい確認方法は、こちらの記事をご参照ください。
DMARCレポートとは? 設定方法や集計レポートの読み方、解析ツールを解説 | ベアメールブログ

DMARC分析ツールの利用

DMARCレポート分析ツールは、各メールサービスプロバイダから送信されるXML形式のDMARCレポートを自動的に集計し、グラフや表として可視化します。これにより、自社の配信状況や認証状況を迅速に把握できます。認証に失敗しているメールとその送信環境を特定し、問題点を調査することで、対応策の実施も容易になります。

ただし、ほとんどのDMARC分析ツールは有償のため、導入には一定の投資が必要となります。

DMARC認証失敗のパターン

DMARC認証が失敗する原因としては以下が考えられます

SPF/DKIMの認証自体がfailした

SPFやDKIMのレコードが正しくないか、設定ミスがあるなどの理由で認証が失敗すると、DMARC認証もfailとなります。あるいは、メールが転送される過程でIPアドレスやヘッダ情報や件名などが変更されたことで、SPFやDKIMがfailとなってしまうこともあります。

DMARCアライメントがfailした

ヘッダFromのドメインとSPF/DKIMで認証したドメインが一致しない場合、アライメントが失敗し、DMARC認証がfailとなります。例えば外部のメール配信サービスを利用している場合など、自社ドメイン以外のドメインがエンベロープFromになっていたり、自社ドメイン以外のドメインでDKIM署名を行っている場合はアライメントに失敗します。

DMARCアライメントモードによる不一致

DMARCアライメントモードが厳格(strict)に設定されている場合、サブドメインは許容されず、ドメインが完全に一致していなければ認証が失敗します。

第三者がなりすましメールを送信している

DMARCレポートは、自社ドメインがヘッダFromに記載されたメールに関する情報を提供します。これには正当に送信されたメールだけでなく、第三者が自社ドメインを不正に使用して送信したメールの情報も含まれます。つまり、自社で管理していないIPアドレスから配信されているメールが認証に失敗していた場合、それは第三者によるなりすましメールの可能性が考えられます。第三者によるなりすましメールが認証に失敗するのは、DMARCが正しく機能している証拠です。

DMARC認証失敗の修正方法

前章で確認したDMARC認証失敗のパターンを踏まえ、ここではDMARC認証の失敗を修正する方法を解説します。

ポリシーをnoneにする

まず、DMARCポリシーがnoneに設定されていることを確認しましょう。ポリシーがquarantinerejectになっていると、正当なメールでも認証に失敗した場合に隔離または拒否されてしまいます。ポリシーがnoneであれば、認証失敗が発生してもメールは受信トレイに届き、認証状況の詳細はDMARCレポートで確認できるため、問題の原因を詳しく分析することができます。

DMARCポリシーはDMARCレコードの「p=」タグで指定します。
DMARCレコードの書き方について詳しくは以下のブログもご参照ください。
DMARCレコードの書き方は? 設定・確認方法や設定例も解説 | ベアメールブログ

SPF/DKIMの認証を有効にする

DMARCの認証を成功させるためには、SPFとDKIMが正しく設定され、有効である必要があります。SPFは送信メールサーバーのIPアドレスを認証し、DKIMは電子署名を使用してメールが送信時点から改ざんされていないことを保証します。SPFやDKIMの認証が失敗している場合、それぞれの設定を見直し、必要な調整を行います。
特に、DKIMの公開鍵と秘密鍵が正確に設定されているか、そしてSPFレコードにすべての送信元IPが含まれているかを確認してください。

DKIMの認証失敗の改善方法については、以下のブログもご参照ください。
DKIM認証が失敗する原因とは? DKIM failの修正方法 | ベアメールブログ

SPFの設定についてはこちらのブログで詳しく解説しています。
SPFレコードの書き方とは? 記述例を総まとめ | ベアメールブログ

SPFレコードのルックアップ回数制限がオーバーしている場合も、SPF認証がエラーになってしまうため注意が必要です。
SPFのDNSルックアップの回数制限とは? 確認方法や対策を解説 | ベアメールブログ

DMARCアライメントモードを変更する

DMARCポリシーで設定されるアライメントモードにはrelaxedstrictの二つがあります。strictモードではドメインが完全に一致する必要があり、少しの違いでも認証が失敗します。一方、relaxedモードでは、サブドメインを含むある程度の違いは許容されます。認証問題を解消するためには、必要に応じてこのモードを調整することが効果的です。

DMARCアライメントモードは、DMARCレコードの以下タグで指定します。

adkimr / sDKIMのアライメントチェックをどの程度厳密に行うか左の2つのオプションから指定します。 r=リラックスモード / s=ストリクトモード
aspfr / sSPFのアライメントチェックをどの程度厳密に行うか左の2つのオプションから指定します。 r=リラックスモード / s=ストリクトモード

DMARCアライメントを揃える

DMARCアライメントは、メールのヘッダFromのドメインとSPF・DKIMで認証したドメインが一致していることを確認します。DMARC認証がfailする主な原因は、これらのドメインが一致しないことです。この問題を解決するためには、以下の対応を行います。

SPFアライメント

送信メールのエンベロープFrom(Return-Path)のドメインを変更して、ヘッダFromのドメインと一致させます。

外部のメール配信サービスなどを利用していて、そのサービス事業者のドメインがReturn-Pathになっている場合は、自社ドメインをReturn-Pathに設定する必要があります。

Return-Pathについて詳しくはこちらの記事をご参照ください。
Return-Pathとは? 到達率との関係や設定方法について解説 | ベアメールブログ

DKIMアライメント

DKIM署名の「d=」で指定するドメインを変更して、ヘッダFromのドメインと一致させます。

外部のメール配信サービスなどを利用していて、そのサービス事業者のドメインでDKIM署名を行っている場合(第三者署名)は、自社ドメインでの署名(作成者署名)に切り替える必要があります。

ARCを設定する

メーリングリストや受信ゲートウェイなどを利用している場合、メールが転送される過程でSPFやDKIMの検証が失敗することがあります。DMARCはSPFとDKIMの認証結果を使用するため、それらが認証に失敗してしまえば当然DMARCも認証に失敗することになります。ARCは、メールが受信者に届くまでの間に中継された各サーバーにおける認証結果を保持することで、最終的な受信者がそのメールの信頼性を判断できるようにする仕組みです。

2024年2月から適用されたGmailの新しい送信者ガイドラインにおいても、メーリングリストや受信ゲートウェイを管理している場合はARCヘッダへの対応を推奨しています。

自社の環境で転送やメーリングリストの仕組みなどを使用している場合は、ARCに対応することでDMARC failを改善できる可能性があります。

ARCについて詳しくはこちらの記事で解説しています。
メールのARCとは? ARCの仕組み、設定が必要なケースを解説 | ベアメールブログ

ポリシーをquarantine/rejectに強化する

自社で配信しているメールは全て認証に成功していることが確認できたら、DMARCポリシーをquarantineまたはrejectに変更して、不正なメールを適切に処理するように設定します。quarantineはメールを隔離フォルダに移動させ、rejectはメールの受信を完全に拒否させます。これにより、ドメインの信頼性を保ち、第三者によるなりすましメールの送信を防ぐことができます。

DMARC failを改善したいなら

DMARCは設定して終わりではありません。継続的にレポートをウォッチし、正規のメールがSPF・DKIM・DMARCすべての認証に合格するように確認と修正を行い、DMARCポリシーをquarantineまたはrejectに変更することがひとまずの目標となります。
ここではDMARC failを効率的に改善するためのポイントを解説します。

送信環境の把握・管理

DMARC運用の鍵は「メール送信環境の管理」です。DMARCレポートを活用する上では、送信元IPアドレスがどこのメールサーバで利用されているものか把握・管理することが不可欠です。送信元IPアドレスを管理することで、正規のメールが認証に問題なく合格しているか、あるいは自社ドメインが「なりすまし」に悪用されている可能性がないか、速やかに判断することが可能になります。

DMARCレポートの監視と通知

DMARCレポートの分析ツールでは、自動でアラート通知をする機能が提供されているものがあります。DMARCのエラー率などに対して監視と通知の設定をすることで、毎日レポートや管理画面を確認しなくても、メール配信の異常を速やかに検知できるようになります。

外部専門家との協力

必要であれば、外部の専門家やセキュリティ会社などにDMARCの導入や運用についてコンサルティングやサポートを提供してもらうことも有効でしょう。最新の情報や、ナレッジや経験を活かしたアドバイスや技術的支援を受けることが可能です。

ベアメールが提供するDMARCレポート分析サービス

「ベアメール 迷惑メールスコアリング」では、DMARC分析機能を提供しています。メールプロバイダから日々大量に送られてくるDMARCレポートを自動的に集計し、グラフや表として可視化するだけでなく、DMARCポリシー強化に向けた具体的なアクションを推進するための機能を備えています。

ベアメールのDMARC分析機能のスクリーンショット

送信元IP管理

自社がメール送信に利用しているIPアドレスを登録し、タグを付与して管理できます。

分析

以下3つの切り口で、エラーが起きている送信環境や原因を深掘りすることができます。

  • エラーパターン分析
    DMARC認証がNGになる原因を4つのパターンに分類し、パターンごとにエラーの対処方法についてアドバイスを参照することができます。
  • タグ別エラー分析
    送信元IP管理機能で付与したタグごとにエラー傾向を分析することができます。
  • なりすまし可能性分析
    送信元IP管理機能に登録していない、自社で把握できていないIPアドレスについて分析できます。送信数が多い送信元IPを簡単に突き止めることができるため、把握できていない送信環境の調査が容易になります。

アラート通知

アラート通知を行う条件を設定することができます。毎日管理画面を確認しなくても、メール配信に異常が発生した際に速やかに検知することが可能になります。

プレミアムサポート

DMARCを導入したもののその後何をしたらいいかわからない場合や、改善のための支援が必要な場合は、オプションサービスとしてプレミアムサポートの提供が可能です。DMARCレポートを元にした課題の抽出、ポリシーを強化するための対策検討、お客さまが直面している課題に対する具体的なアクションの整理など、通常のユーザサポートよりも踏み込んだサポートを行います。

ベアメール迷惑メールスコアリングなら、DMARCレポートの分析を誰でも簡単に可能です。サービスの詳細はこちらをクリック

まとめ

本記事では、DMARC認証が失敗する原因とその確認方法、そして効果的な修正方法について解説しました。DMARCはポリシーをnoneで導入して終わりではなく、認証失敗を解消し、quarantineやrejectへポリシーを強化することが重要です。DMARCの運用や認証失敗についてお困りであれば、ぜひお気軽にベアメールまでご相談ください。