本文へスキップ
>_ITDITDセキュリティ対策プラットフォーム
用語辞典11分で読める

SPF / DKIM / DMARC とは:自分のドメインをなりすましメールから守る3つのDNS設定

SPF・DKIM・DMARC は、あなたのドメインから送られたメールが“本物か”を受信側が検証できるようにする3つのDNS設定です。これが無いと、あなたの名を騙るフィッシングメールを止められません。それぞれの役割の図解と、安全に設定する手順(DMARCはp=noneから始める)を、やさしく解説します。

公開日
更新日

自分のドメインの名前で、知らないフィッシングメールが送られることがあります。これを止めるのが SPF / DKIM / DMARC です。3つの役割と、安全な設定手順をやさしく解説します。

3つの役割

設定役割(ひとことで)
SPF「このドメインのメールを送ってよいサーバーはこれ」とDNSで宣言
DKIMメールに電子署名を付け、「途中で改ざんされていない・正規の送信元」を証明
DMARCSPF/DKIMが失敗したらどう扱うかの方針を宣言し、レポートも受け取る(3つをまとめる中心の設定)

どれもDNSに置くテキスト(TXTレコード)です。example.com の場合、次のような形になります(値は例です)。

設定置く場所値の例
SPFexample.comv=spf1 include:_spf.mail-service.example ~all
DKIMセレクタ名._domainkey.example.comv=DKIM1; k=rsa; p=(送信サービスが発行する公開鍵)
DMARC_dmarc.example.comv=DMARC1; p=none; rua=mailto:dmarc@example.com

SPFの include: には、利用しているメール送信サービスが案内する値を入れます。DKIMの公開鍵も送信サービスが発行するので、自分で作る必要はありません。

どう検証されるのか(仕組み)

受信側(Gmail等)は、届いたメールに対して SPF と DKIM をチェックし、その結果を DMARCの方針 に照らして「通す/隔離する/拒否する」を決めます。

届いたメール(あなたのドメイン名義)
↓ 受信側が検証
SPF:送信元サーバーは許可済み?
DKIM:署名は正しい?改ざんなし?
↓ 結果を DMARC 方針に照合
DMARC:失敗なら 通す / 隔離(quarantine) / 拒否(reject)
受信側がSPF/DKIMを確認し、DMARCの方針で最終判断する。3つがそろって初めて効果が出る。

つまり **SPFとDKIMだけでは“判定はするが何もしない”**ことがあり、DMARCの方針があって初めて「なりすましを止める」効力が出ます。

見落としやすい「ドメインの一致(アラインメント)」

DMARCの判定で大事なのが、ドメインの一致です。受信者がメールソフトで目にする差出人(ヘッダの From)のドメインと、SPF または DKIM で確認されたドメインが一致して、初めて DMARC は合格になります。

SPFが確認するのは、目に見える差出人ではなく、配送の裏側で使われる送信元アドレスのドメインです。そのため、攻撃者が自分のドメインでSPFを通したうえで、差出人欄にだけあなたのドメインを書くことができます。SPFが合格でも、差出人のドメインと一致せず、DKIMでも一致が確認できなければ、DMARCは不合格と判定します。DMARCが差出人のなりすましを止められるのは、この一致を確かめるからです。

安全な設定手順

1

SPF を1本だけ正しく

送信に使う正規サーバー(自社・メール配信サービス等)を漏れなく許可。SPFレコードはドメインに1本にまとめる(複数あると無効になりやすい)。

2

DKIM 署名を有効化

利用しているメール送信基盤でDKIMを有効にし、公開鍵をDNSに登録。正規メールに署名が付く状態にする。

3

DMARC は p=none から始める

いきなり拒否にしない。まず p=none(監視のみ)+レポート受信で、正規メールが落ちないかを確認する。

4

段階的に強める

レポートで正規配信の漏れを潰したら、p=quarantine → p=reject へ。最終的に「なりすましは拒否」を達成する。

手順1の「1本だけ」には仕様上の理由があります。SPFの仕様(RFC 7208)は、1つのドメインにSPFレコードが複数あると、判定を permerror(恒久的なエラー)にすると定めています。同じ仕様は、include などによるDNSの参照を評価全体で10回までに制限していて、超えた場合も permerror です。メール配信サービスを追加するたびに、別のレコードを足すのではなく、既存の1本に追記します。

よくある設定ミス

ミス起きること直し方
SPFレコードが2本あるSPFが permerror になる1本にまとめる
include の重ねすぎDNSの参照が10回を超えて permerror使っていないサービスの include を外す
配信サービスでDKIMを有効にしていないそのサービスから送ったメールがDMARCで不合格になるサービス側でDKIMを有効にし、DNSに登録する
DMARCを p=none のまま放置なりすましは届き続けるレポートを確認して reject まで上げる
メールを送らないドメインに何も設定しない使っていないドメイン名義のなりすましを止められないv=spf1 -all と DMARC の p=reject を置く

自分のドメインで確認する方法

  1. SPF / DKIM / DMARC チェッカーにドメインを入れ、3つのレコードの有無と問題点を確認する
  2. コマンドで直接見る場合は dig +short TXT example.com(SPF)と dig +short TXT _dmarc.example.com(DMARC)を実行する
  3. 自分のドメインから Gmail 宛てにメールを送り、Gmail の「メッセージのソースを表示」で SPF・DKIM・DMARC がすべて PASS になっているかを見る
  4. DMARCのレポート(rua)が届き始めたら、心当たりのない送信元がないかを週に一度見る

所有を確認したサイトなら、サイト総合セキュリティ診断でもWeb側の設定とあわせて点検できます。

具体例:自分のアドレスから届くなりすましメール

「自分のアドレスから自分宛てに脅迫メールが届いた」という相談は、IPAなどが注意喚起している典型的な例です。多くはアカウントの乗っ取りではなく、差出人欄を書き換えただけのなりすましです。差出人欄は送る側が自由に書けるため、DMARCを reject まで上げていないドメインでは、こうしたメールが受信箱まで届くことがあります。見分け方と対応は次の記事で解説しています。

仕様の更新(2026年5月)

DMARCの仕様は、2026年5月に RFC 9989 として改訂されました(それまでの RFC 7489 は廃止)。p=none・p=quarantine・p=reject の3つの方針はそのままです。変わった点は、適用する割合を指定する pct タグがなくなり、代わりにテスト中かどうかを示す t タグができたこと、存在しないサブドメインへの方針を指定する np タグが加わったことです。すでに設定済みのレコードがすぐ使えなくなる変更ではありませんが、新しく書くときは pct を使わないようにします。

当サイトの視点:守るのは“あなたの利用者”でもある

SPF/DKIM/DMARC は自分のメールが届くためだけでなく、あなたのドメインを騙るフィッシングから“あなたの利用者”を守る仕組みでもあります。フィッシングは結局、認証情報や鍵を盗むための手段です。多くのドメインがSPF/DKIMだけで止まり、DMARCを強制(reject)まで上げていないのが実情です。p=none で満足せず、レポートを見て段階的に reject まで上げてこそ効果が出ます。

出典(一次情報)

  • IETF RFC 7208「Sender Policy Framework (SPF)」 — datatracker.ietf.org(レコードは1本、DNS参照は10回まで)
  • IETF RFC 6376「DomainKeys Identified Mail (DKIM) Signatures」 — datatracker.ietf.org
  • IETF RFC 9989「Domain-Based Message Authentication, Reporting, and Conformance (DMARC)」(2026年5月、RFC 7489 を廃止) — datatracker.ietf.org
  • Google「メール送信者のガイドライン」 — support.google.com(2024年2月1日からの要件、1日5,000通以上の送信者の要件)

次に読む

分類番号

CWE は脆弱性の原因となる弱点の種類を、MITRE ATT&CK は攻撃者の手口を分類した番号体系です。どちらも MITRE が管理し、脆弱性情報や検知ルールの分類に広く使われています。

© 2026 The MITRE Corporation. This work is reproduced and distributed with the permission of The MITRE Corporation. MITRE ATT&CK and ATT&CK are registered trademarks of The MITRE Corporation. The MITRE Corporation (MITRE) hereby grants you a non-exclusive, royalty-free license to use ATT&CK® for research, development, and commercial purposes. Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ATT&CK Terms of Use

よくある質問

QSPF / DKIM / DMARC は何のため?
A

あなたのドメインから送られたメールが“本物か”を受信側(Gmail等)が検証できるようにするためです。これが無いと、第三者があなたの名を騙るなりすましメール(フィッシング)を送っても止められず、ドメインの信頼も傷つきます。

Q3つの違いは?
A

SPFは『このドメインのメールを送ってよいサーバー』を宣言、DKIMは『改ざんされていない証拠の電子署名』、DMARCは『SPF/DKIMが失敗したらどう扱うかの方針+レポート受信』です。DMARCがSPF/DKIMの結果をまとめて、実際の効果を持たせます。

Q設定で気をつけることは?
A

正規の配信(メール配信サービス等)を漏らさず許可してから強めること。とくにDMARCは、いきなり拒否(p=reject)にすると正規メールも弾く恐れがあるため、まず p=none(監視のみ)でレポートを見て、p=quarantine→p=reject と段階的に上げます。

QDMARCの p=none とは?
A

認証に失敗したメールも、受信側に特別な扱いを求めない設定です。なりすましを止める効果はありませんが、レポート(rua)を受け取って、自分のドメイン名義で誰がメールを送っているかを把握できます。正規の送信元をすべて確認したら、p=quarantine(迷惑メールフォルダへ)、p=reject(受け取り拒否)へ上げます。

QSPFの「-all」と「~all」の違いは?
A

どちらもSPFレコードの最後に置き、列挙したサーバー以外から送られたメールの扱いを示します。-all は「認めない(fail)」、~all は「おそらく認めない(softfail)」です。DMARCを使うなら、最終的な扱いはDMARCの方針で決まるため、正規の送信元を確認するまでは ~all で始めても構いません。

QSPFの「DNS参照10回まで」の制限とは?
A

SPFの仕様(RFC 7208)は、include・a・mx・ptr・exists と redirect による DNS の参照を、評価全体で10回までに制限しています。超えると判定は permerror(恒久的なエラー)になり、SPFが失敗扱いになります。複数のメール配信サービスを include で並べると超えやすいので、使っていないサービスの include を外して数を減らします。

QGmailは SPF・DKIM・DMARC を必須にしている?
A

Googleは2024年2月1日から、個人のGmailアカウントにメールを送るすべての送信者に SPF か DKIM の設定を求めています。1日に5,000通以上送る送信者には、SPF と DKIM の両方、DMARC(方針は p=none でもよい)、送信者アドレスのドメインと SPF か DKIM のドメインの一致を求めています。