DMARCの設定方法とp=noneから段階的に強化する手順

公開日: 2026-07-25

DMARCとは

DMARC(Domain-based Message Authentication, Reporting, and Conformance)は、SPFとDKIMの 認証結果を束ね、認証に失敗したメールを受信側にどう扱ってほしいかを宣言する仕組みです。 _dmarc.<ドメイン> のTXTレコードとして設定します。

DMARCが担うのは次の2つです。

  1. ポリシーの宣言 — 認証に失敗したメールを「何もしない/隔離する/拒否する」のどれで 扱ってほしいかを指示します。
  2. フィードバックの受信 — 「誰が自ドメインを騙って送信しているか」「正規の送信元で 認証に失敗しているものはないか」を集約レポートとして受け取れます。

SPF・DKIMだけでは足りない理由

SPFが検証するのはエンベロープの送信元ドメイン(Return-Path)であり、受信者がメールソフトで 目にするFromヘッダーのドメインではありません。攻撃者は自分が管理するドメインでSPFを 合格させたうえで、Fromヘッダーだけをあなたのドメインに偽装できます。

DMARCはここに**アラインメント(識別子の整合)**という条件を加えます。「SPFまたはDKIMに 合格していること」に加えて「その認証されたドメインがFromヘッダーのドメインと整合していること」を 要求するため、Fromの偽装が通らなくなります。

SPF側の設定については SPFレコードの書き方と設定方法 を参照してください。

DMARCレコードの書き方

_dmarc.example.com.  IN  TXT  "v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com"

ホスト名の先頭に _dmarc. が付く点に注意してください。SPFのスペース区切りとは異なり、 DMARCはセミコロン区切りです。

主なタグ

タグ 意味 既定値
v バージョン。DMARC1 固定で、必ず先頭に書く 必須
p ポリシー。none / quarantine / reject 必須
sp サブドメイン向けポリシー 未指定なら p を継承
rua 集約レポートの送信先(カンマ区切りで複数可) なし
ruf 失敗レポートの送信先 なし
pct ポリシーを適用する割合(0〜100) 100
adkim DKIMのアラインメント。r(緩和)/ s(厳密) r
aspf SPFのアラインメント。r(緩和)/ s(厳密) r

p は必須タグです。欠けているレコードは無効として扱われ、DMARCが設定されていないのと 同じ状態になります。

アラインメントの rs

  • relaxed(r、既定):組織ドメインが一致していれば整合とみなします。Fromが example.com で、SPFの認証ドメインが mail.example.com でも合格します。
  • strict(s):完全一致を要求します。上の例は不合格になります。

サブドメインを使い分けて送信する一般的な構成では relaxed が適切です。特別な理由がなければ 既定のままで問題ありません。

導入手順:必ず p=none から始める

いきなり p=reject を設定すると、SPF・DKIMの設定漏れがあった送信元からの正規のメールが 拒否されます。次の順で段階的に進めてください。

段階1: p=none で観測する

_dmarc.example.com.  IN  TXT  "v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com"

p=none は「認証に失敗しても特別な処理はせず、レポートだけ送ってほしい」という意味で、 配送への影響はありません。この段階でやることは観測だけです。

rua のレポートは受信事業者ごとに1日1通程度、XML形式で届きます。送信量が多いドメインでは 通数も増えるため、個人の業務用アドレスではなく専用のアドレスか、DMARCレポート解析サービスの 受信先を指定することを推奨します。

別ドメインのアドレスへ送る場合は、受信側ドメインに許可レコードが必要です。 example.com のレポートを analyzer.example で受け取るなら、analyzer.example 側に次の レコードが要ります(解析サービス利用時はサービス側の手順に従ってください)。

example.com._report._dmarc.analyzer.example.  IN  TXT  "v=DMARC1"

段階2: レポートを数週間確認する

集約レポートから次を確認します。

  • レポートに現れる送信元IP・ドメインをすべて洗い出す
  • 正規の送信元がSPFまたはDKIMで合格しているか
  • 認証に失敗している正規の送信元があれば、先にSPFへの追加やDKIMの設定を行う

転送メール(メーリングリスト等)はSPFが失敗しやすいという性質があります。転送されても 壊れにくいDKIM側の合格状況もあわせて確認してください。

**この確認を飛ばして次へ進むと、正規のメールが届かなくなります。**最低でも数週間、 月次の定期送信がある場合はそれを1周分含む期間を観測してください。

段階3: quarantine へ

_dmarc.example.com.  IN  TXT  "v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@example.com"

認証に失敗したメールを迷惑メールフォルダへ隔離するよう指示します。ここでも数週間、 問い合わせと集約レポートの両方を注視してください。

不安がある場合は pct で適用割合を絞り、段階的に上げる方法もあります。

"v=DMARC1; p=quarantine; pct=10; rua=mailto:dmarc-reports@example.com"

10 → 25 → 50 → 100 と上げていき、最終的に pct タグ自体を削除します(未指定時の既定値が 100のため、削除すれば全件適用になります)。

段階4: reject へ

_dmarc.example.com.  IN  TXT  "v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com"

認証に失敗したメールを受信側で拒否させます。なりすまし対策としてはここが到達点です。

この状態では、SPF・DKIMに登録し忘れた送信元からのメールが届かなくなります。新しい配信 サービスを導入するときは、先にSPF・DKIMを設定してから送信を開始する運用を徹底してください。

よくある失敗

DMARCレコードが複数ある

v=DMARC1 で始まるTXTレコードが _dmarc に2件以上あると、RFC 7489は「そのドメインには DMARCが設定されていないものとして扱う」と定めています。ポリシーも適用されず、レポートも 届きません。設定変更時に既存レコードを置き換えず追加してしまうのが典型的な原因です。

p=none のまま放置している

p=none は導入の第一段階としては正しい設定ですが、そこに留まり続けると「DMARC設定済み」 でありながらなりすましメールの配送を止める効果はゼロという状態になります。レポートで 送信元の実態を把握できたら、必ず次の段階へ進めてください。

rua を設定していない

rua がないと、なりすましの発生状況も、正規送信元の認証失敗も観測できません。ポリシーを 強める判断材料が得られないため、p=none から先へ進めなくなります。DMARCを設定するなら rua は実質必須です。

sp=none でサブドメインだけ無防備

sp を指定しなければサブドメインには p の値が継承されます。つまり sp=none は 「サブドメインだけ意図的に保護を外す」という明示的な指定です。

親ドメインを p=reject で守っていても、invoice.example.com のような実在しない サブドメインを騙るメールは素通りします。攻撃者は受信者が見分けにくいサブドメインを 自由に作れるため、ここは実際に悪用されうる抜け道です。サブドメインからの送信の整備が 済んでいないなら、sp=quarantine を経由して段階的に強めてください。

構文の細かな誤り

  • 区切りはセミコロン(SPFのスペース区切りと混同しやすい)
  • v=DMARC1 は必ず先頭
  • rua の値は mailto: を含むURI形式(rua=admin@example.com は不正)
  • p の値は none / quarantine / reject のいずれか

これらの誤りがあるレコードは受信側に破棄され、DMARCが設定されていないのと同じ扱いに なります。

設定できているか確認する

dig TXT _dmarc.example.com +short

v=DMARC1 を含む行が1行だけ返ることを確認してください。

構文・ポリシーの強度・レポート設定・アラインメントまでまとめて確認したい場合は、 このページ下部の診断フォームにドメインを入力してください。SPFとあわせて診断します。

サブドメインを診断する場合の注意

本ツールは入力されたドメインの _dmarc レコードだけを確認します。実際の運用では、 サブドメインにDMARCレコードがなくても親ドメイン(組織ドメイン)のポリシーが継承されます。 サブドメインを診断して「未設定」と表示された場合は、親ドメインを診断して継承元の設定を 確認してください。

診断する

診断結果の取り扱いについては免責事項をご確認ください。