新しいガイド:評判を損なわずに専用IPをウォームアップする方法。 続きを読む →
MigoSMTP
ドメインとDNS更新日 2026/10/16

DMARC集計レポートの読み方と、p=rejectへ安全に移行する方法

DMARC集計レポートは、各メールボックスプロバイダーから毎日届くXMLファイルで、お客様のドメインとして送信されたすべての送信元と、SPF、DKIM、アラインメントを通過したかどうかが記載されています。本ガイドでは、レポートの読み方、送信元を正当なもの・設定不備・不正に分類する方法、アラインメント失敗の修正方法、そして正当なメールをブロックせずにp=noneからquarantine、rejectへ移行する手順を解説します。

IR
執筆 Ishita Rao
Email Authentication Engineer
レビュー Amara Okafor
  • 公開済み2026/03/17
  • 読了時間3 分
  • 文字数495 語
このガイドを共有

DMARC集計レポートは、メールボックスプロバイダーが通常1日1回お送りするXMLファイルで、お客様のドメインを名乗って送信されたすべての送信元と、それぞれがSPF、DKIM、アラインメントを通過したかどうかが記載されています。これを読むことで、正当な送信元をすべて把握し、失敗しているものを修正し、なりすましている相手を発見できるため、正当なメールをブロックすることなくp=noneからp=rejectへ移行できます。

毎日プロバイダーがレポートを送る頻度
2〜4週間適用前にレポートを収集する期間
3段階none、quarantine、reject

最初にご確認ください。本ガイドは、すでにDMARCレコードを公開していることを前提としています。まだの場合は、先に送信ドメインの認証のガイドに従い、レポートが届き始めてからこのガイドに戻ってください。

要点まとめ

  1. レポートを要求する。ポリシーがp=noneのうちに、DMARCレコードにruaアドレスを追加します。
  2. 待って収集する。月次の送信を含め、2〜4週間分のレポートを集めます。
  3. 送信元を分類する。各送信元IPを、正当でアラインしているもの、正当だが失敗しているもの、不明なものに分けます。
  4. 失敗を修正する。正当な各サービスに、アラインしたDKIM署名またはReturn-Pathを設定します。
  5. 段階的に適用する。低い割合でquarantineを始め、割合を上げてから、rejectに移行します。

レポートを要求するDMARCレコード

_dmarc.example.com.  3600  IN  TXT  "v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com; adkim=r; aspf=r"
タグ意味
p失敗したメールに対するポリシー:none(監視)、quarantine、reject
rua集計レポートの送信先。1つ以上のmailto:アドレスで指定
adkim, aspfアラインメントモード:r はリラックス(サブドメインも一致可)、s はストリクト(完全一致)
sppと異なる場合のサブドメイン用ポリシー
pctポリシーを適用する、失敗したメールの割合

専用のメールボックスを使ってください。レポートは数が多く、サイズも大きくなります。個人ではなく、専用のアドレスまたはレポート処理サービスに送るようにしてください。

別のドメインにレポートを送る

ruaアドレスが、レポート対象のドメインとは別のドメインにある場合、その別のドメインが受信を許可するレコードを公開している必要があります。そうでないと、プロバイダーはレポートを送信しません。example.comに関するレポートをreports.example.netに送る場合は次のとおりです。

example.com._report._dmarc.reports.example.net.  3600  IN  TXT  "v=DMARC1"

レポートの中身

レポートは、通常gzipまたはzipで圧縮された添付ファイルとして届きます。開くと、レポートの送信者に関する情報、プロバイダーが確認したポリシー、そして送信元IPと結果の組み合わせごとに1行ずつの一覧という3つの部分があります。

<feedback>
  <report_metadata>
    <org_name>google.com</org_name>
    <report_id>1234567890</report_id>
    <date_range><begin>1759708800</begin><end>1759795199</end></date_range>
  </report_metadata>
  <policy_published>
    <domain>example.com</domain><adkim>r</adkim><aspf>r</aspf><p>none</p><pct>100</pct>
  </policy_published>
  <record>
    <row>
      <source_ip>203.0.113.10</source_ip>
      <count>1250</count>
      <policy_evaluated><disposition>none</disposition><dkim>pass</dkim><spf>pass</spf></policy_evaluated>
    </row>
    <identifiers><header_from>example.com</header_from></identifiers>
    <auth_results>
      <dkim><domain>example.com</domain><selector>mail1</selector><result>pass</result></dkim>
      <spf><domain>bounce.example.com</domain><result>pass</result></spf>
    </auth_results>
  </record>
</feedback>
フィールド分かること
org_nameレポートを送ったメールボックスプロバイダー
date_range対象期間(Unixタイムスタンプ)
policy_publishedプロバイダーが確認したDMARCポリシー。レコードが有効になっているかの確認に使える
source_ip と count送信元サーバーと、その期間に送信したメッセージ数
policy_evaluatedDMARCで重要となる結果。ここでのdkimとspfは、アラインした上での通過または失敗を意味する
auth_resultsSPFとDKIMの生の結果と、認証されたドメイン(Fromドメインとは異なる場合がある)
header_from表示上のFromアドレスのドメイン

2種類の異なる結果があります。policy_evaluatedのpassは、チェックを通過し、かつアラインしていることを意味します。auth_resultsのpassは、使用されたドメインに対してチェックを通過したことだけを意味します。送信元がauth_resultsでは通過してもpolicy_evaluatedでは失敗することがあります。その差がアラインメントの問題です。

すべての送信元を3つのグループに分類する

グループ見え方対処
正当でアラインしている既知のサービスで、policy_evaluatedでDKIMまたはSPFがアラインしている何もしない。その状態を維持する
正当だが失敗している既知のサービスで、auth_resultsは通過するがpolicy_evaluatedは失敗するそのサービスにアラインしたDKIMまたは独自のReturn-Pathを設定する
不明見覚えのないIPで、多くの場合、失敗が多数ある調査する:忘れられたシステム、転送元、またはなりすまし。正体が分かるまで承認しない

送信元の特定方法

  • 逆引きDNS:dig -x 203.0.113.10 +shortで、プロバイダー名が分かることが多くあります。
  • 認証ドメイン:auth_resultsにあるSPFとDKIMのドメインから、サービスが分かる場合がほとんどです。
  • 自社の一覧:お客様のドメインとして送信するすべてのツール(マーケティングプラットフォーム、ヘルプデスク、CRM、請求システム、Webフォーム、人事ツール、サーバー)を一覧にします。
  • 送信量とパターン:既知のサービスからの少量で安定した件数は正常です。不明なIPからの突然の急増は疑わしいといえます。

短いスクリプトでレポートを集計する

展開済みレポートが入ったフォルダーを最初に確認するには、次のスクリプトで、送信元IPとDMARCの結果ごとにメッセージ数を集計できます。

import glob
import xml.etree.ElementTree as ET
from collections import defaultdict

totals = defaultdict(int)
for path in glob.glob("reports/*.xml"):
    for rec in ET.parse(path).getroot().iter("record"):
        row = rec.find("row")
        ip = row.findtext("source_ip")
        ev = row.find("policy_evaluated")
        key = (ip, ev.findtext("dkim"), ev.findtext("spf"))
        totals[key] += int(row.findtext("count"))

for (ip, dkim, spf), n in sorted(totals.items(), key=lambda x: -x[1]):
    print(f"{ip:18} dkim={dkim:5} spf={spf:5} messages={n}")

アラインメント失敗の修正

レポートのパターン原因対処
SPFは通過するがDMARCは失敗するSPFが認証したのはプロバイダーのドメインで、お客様のドメインではないご自身のドメインで独自のReturn-Pathを使う
DKIMは通過するがDMARCは失敗する署名のd=にプロバイダーのドメインが使われているご自身のドメインで署名する:そのサービス用のDKIMセレクターを公開する
既知のサービスで両方とも失敗するそのサービスがお客様のドメイン用に設定されていないドメイン認証を完了する
転送元経由でのみ失敗する転送によりSPFが壊れ、DKIMが改変された少数の失敗は残るものと考える。DKIMが存在し、本文に署名していることを確認する
サブドメインで失敗するサブドメインに専用のレコードがないそのサブドメイン用にSPFとDKIMを公開する

段階的に適用を強める

正当な送信元がアラインし、失敗するのが不明な送信元だけになったら、ポリシーを徐々に引き上げます。各段階で少なくとも1週間待ち、レポートを確認してから次に進んでください。

ステップレコード動作
1p=none監視のみ。レポートを収集する
2p=quarantine; pct=10失敗したメールのうち10%のメッセージが迷惑メールに振り分けられる
3p=quarantine; pct=50失敗したメールの半分が隔離される
4p=quarantine失敗したメールがすべて隔離される
5p=reject; pct=25失敗したメールの4分の1が拒否される
6p=reject失敗したメールがすべて拒否される。ruaアドレスは残しておく

p=noneで止まらないでください。p=noneは、Gmail、Yahoo、Outlook.comの大量送信者向けの最低限のルールを満たしますが、なりすましは防げません。ドメインと受信者を守るのは、ポリシーの適用です。

p=reject後も監視を続ける

  • 最初は毎週確認し、その後は毎月確認します。お客様のドメインとして送信する新しいツールは、失敗として現れます。
  • オンボーディングに手順を追加する:お客様のドメインとしてメールを送る新しいシステムは、稼働前に認証を行います。
  • 未使用ドメインを保護する:送信に使わないドメインには、p=rejectと空のSPFレコードを公開します。
  • BIMIへの準備に注意する:将来、受信箱にロゴを表示したい場合、DMARCポリシーの適用が前提条件となります。

レポートについてセカンドオピニオンが必要ですか?サンプルレポートと、お客様のドメインとして送信しているサービスの一覧をお送りください。修正すべき点の整理をお手伝いします。

サポートに問い合わせる

参考資料と出典

よくある質問

DMARC集計レポートとは何ですか?

メールボックスプロバイダーが、DMARCレコードのruaアドレス宛に、通常は1日1回送信するXMLファイル(通常は圧縮済み)です。お客様のドメインを名乗るメールとしてプロバイダーが確認した内容(送信元IP、メッセージ数、SPF、DKIM、DMARCの通過可否)をまとめたもので、メッセージの内容は含まれません。

DMARCレポートが届かないのはなぜですか?

ruaアドレスが正しく、mailto: の接頭辞付きで記述されていること、メールボックスが大きな添付ファイルを受け付けること、少なくとも1日待ったことを確認してください。レポートの宛先が別のドメインにある場合は、そのドメインが承認レコードを公開している必要があります。すべてのプロバイダーがレポートを送るわけではなく、小規模なドメインに届くレポートは少ないこともあります。

ruaとrufの違いは何ですか?

ruaタグは、概要である集計レポートを要求します。rufタグは、失敗した個々のメッセージについてのフォレンジック(失敗)レポートを要求します。個人データを含む可能性があるため、大手プロバイダーの多くはフォレンジックレポートを送信しません。集計レポートを前提に計画してください。

ツールなしでDMARCレポートを読めますか?

数ファイル程度であれば、プレーンなXMLなので可能です。それ以上の量になる場合は、レポート処理サービスや短いスクリプトを使って送信元ごとに結果を集計してください。小規模なドメインでも、1日に数十件のレポートが届くことがあるためです。

アラインメントの失敗とは何を意味しますか?

DMARCが通過するのは、SPFまたはDKIMが通過し、かつ認証されたドメインが表示上のFromドメインと一致する場合のみです。送信元がサービスプロバイダーのドメインでSPFを通過していても、Fromドメインが異なれば、SPFが通過していてもDMARCは失敗します。解決策は、独自のReturn-Pathや、ご自身のドメインを使ったDKIM署名によって、ご自身のドメインで認証することです。

p=noneにはどれくらいの期間とどまるべきですか?

すべての正当な送信元を確認できるまでで、通常は2〜4週間です。請求書のように月次で送るメールがある場合は、月末の送信サイクルも含めてください。p=noneのままでは何も保護されないため、移行する期日を決めましょう。

pctタグは何をしますか?

pctタグは、ポリシーを失敗したメッセージの一定割合にのみ適用します(例:pct=25)。quarantineやrejectを段階的に展開できます。対応は一般的ですが普遍的ではないため、ゆるやかな制御と考え、レポートの確認を続けてください。

p=rejectでメールが届かなくなりませんか?

DMARCに失敗したメッセージはすべてブロックされます。それが目的です。正当なメールが届かなくなるのは、本物の送信元が認証・アラインされていない場合だけです。だからこそ、先にレポートを収集し、正当な送信元をすべて修正してから、段階的に移行します。

転送されたメールやメーリングリストはどうなりますか?

転送元がお客様のレコードに含まれていないため、転送はSPFを壊すことがよくあります。また、リストがメッセージを変更してDKIMを壊すこともあります。維持されるDKIM署名と、転送元が追加するARCヘッダーは、受信側の判断に役立ちます。健全な環境でも、転送による少数の失敗は残るものと考えてください。

サブドメインにも専用のDMARCレコードが必要ですか?

メインドメインのDMARCレコードは、上書きしない限りサブドメインにも適用されます。spタグでサブドメイン用のポリシーを設定でき、サブドメインにレコードを置くと両方が上書きされます。使っていないサブドメインはなりすましの標的になるため、それらに厳格なポリシーを設定するのは手軽で効果的な対策です。

トピック#DMARC#rua#集計レポート#p=reject#アラインメント#メール認証
このガイドは役に立ちましたか?いただいたご回答は、ドキュメントの改善に役立てます。

関連記事

ドメインとDNSメール用DNSレコードのトラブルシューティング:TXTの長さ、TTL、伝播、レジストラ固有の癖メール認証の失敗の多くは、公開しようとしたレコード自体の誤りではなく、DNS管理画面がレコードを保存する際の癖が原因です。分割されていない長いDKIM鍵、二重に追加されたドメイン名、値に貼り付けられた引用符、2つ目のSPFレコード、有効になったプロキシ、古いキャッシュなどが典型です。本ガイドでは、それぞれの見つけ方と直し方を解説します。ガイドを読む →ドメインとDNSBIMI設定ガイド:受信箱にブランドロゴを表示する(要件と手順)BIMIを使うと、メールボックスプロバイダーが検証済みのブランドロゴをメッセージの横に表示できます。必要なのは、強制ポリシーのDMARC、正しく準備したSVGロゴ、そしてほとんどのプロバイダーでは証明書です。本ガイドでは、各要件を順に追いながら、正確なDNSレコード、テスト方法、各メールボックスプロバイダーに期待できる対応を解説します。ガイドを読む →ドメインとDNSカスタムReturn-Pathとトラッキングドメイン:設定、アライメント、HTTPSカスタムReturn-Pathドメインを使うと、SPFをFromドメインにアライメントさせることができ、カスタムトラッキングドメインを使うと、リンクを自社ブランドにできます。このガイドでは、両者の仕組み、DMARCにおいてアライメントが重要な理由、公開すべきDNSレコード、トラッキングドメインにHTTPSが必要な理由、そしてそれぞれのテストとトラブルシューティングの方法を説明します。ガイドを読む →

数分で送信を始めましょう。

アカウントを作成し、ドメインを追加して、最初のメールを送信します。

無料で始める 営業に相談