SPF・DKIM・DMARCの違いを1枚で理解する
なりすましメール対策の3つの設定、SPF・DKIM・DMARCは何を守り、何を守らないのか。役割の違い、設定する順番、自社ドメインで今すぐ確認する方法、制作会社への依頼文の例を整理します。
「SPFは入れてあるので、なりすまし対策はできています」——診断でよく聞く言葉ですが、多くの場合これは半分しか正しくありません。3つの設定は役割が違い、DMARCまで揃って初めて、受信側が偽メールを止める根拠になります。
3つの役割を1枚で
| SPF | DKIM | DMARC | |
|---|---|---|---|
| ひとことで | 送ってよいサーバーの一覧 | 改ざんされていない証明(電子署名) | 本物と確認できないメールの扱いの指示 |
| どこに書くか | ドメインのDNS(TXT) | 送信サービスが署名し、公開鍵をDNSに置く | _dmarc.ドメイン のTXT |
| 確認する人 | 受信側のメールサーバー | 受信側のメールサーバー | 受信側のメールサーバー |
| これだけで偽メールを止められるか | 止められない(扱いは受信側任せ) | 止められない(署名がないメールも届く) | SPFかDKIMと組み合わせて初めて止められる |
SPF:送ってよいサーバーの一覧
v=spf1 include:_spf.google.com include:配信サービス -all のように、自社ドメインのメールを送ってよいサーバーを並べます。末尾の -all は「一覧にないサーバーは本物ではない」、~all は「おそらく本物ではない」という意味です。
注意したいのは次の3点です。
- SPFのTXTレコードは1つだけ。2つあると両方とも無効として扱われます(RFC 7208)
- DNSの参照は10回まで。
includeを重ねすぎると、受信側でエラー(permerror)になります。整理の方法はSPFのDNS lookup 10回制限を超えたときの整理方法で説明しています +allは「誰が送っても本物」という意味になり、設定しないより危険です
DKIM:送信途中で改ざんされていない証明
送信サービスがメールに電子署名を付け、受信側はDNSに置かれた公開鍵で署名を確かめます。公開鍵の場所(セレクタ)はサービスごとに違い、外部からは名前を当てずっぽうで探すしかありません。そのためWebサイト診断では、DKIMを推測で「なし」と判定しません。セレクタを教えていただくか、テストメールで確認します。
DMARC:確認できなかったメールをどう扱うか
v=DMARC1; p=none; rua=mailto:... のように、SPFかDKIMで本物と確認できなかったメールの扱い(p=)と、集計レポートの送り先(rua=)を指定します。
p=none:何もしない(監視だけ)p=quarantine:迷惑メールフォルダへp=reject:受け取らない
DMARCの判定では、SPFやDKIMで確認したドメインと、受信者に見える差出人(From)のドメインが一致しているか(アライメント)も確認されます。SPFに合格していても、それが配信サービス側のドメインでの合格なら、DMARCの合格にはなりません。偽メールがどう作られ、DMARCがどこで止めるのかは自社ドメインがなりすましメールに使われる仕組みにまとめました。
よくある誤解
- 「SPFがあるから大丈夫」:SPFに合わないメールの扱いは受信側任せです。止めてほしいという意思表示はDMARCで行います
- 「DMARCは大企業向け」:2024年2月から、Gmailは個人のGmailアカウントへ1日5,000通以上を送る送信者にSPF・DKIM・DMARCのすべてを求めています。Yahooも大量送信者に同様の要件を示しています。少量の送信者にも、SPFかDKIMのどちらかは求められています。そもそも会社名をかたる請求書詐欺は、送信量に関係なく中小企業も対象です
- 「p=none を入れたので対策済み」:p=none は監視の段階です。レポートで正規の送信元を確認したら、quarantine → reject へ進めます。進め方はDMARC p=noneからrejectへ移行する前に確認することを参照してください
- 「メールを送らないドメインは関係ない」:送らないドメインも名前を使われます。送らない宣言(SPF
v=spf1 -all、DMARCp=reject)をしておくのが基本です
自社ドメインで確認する方法
Macのターミナルで、次のように調べられます。example.jp を自社ドメインに置き換えてください。
dig +short TXT example.jp
dig +short TXT _dmarc.example.jp
Windowsでは、コマンドプロンプトで nslookup -type=TXT example.jp、nslookup -type=TXT _dmarc.example.jp と入力すると同じ情報が見られます。見るところは次の3つです。
- SPF:
v=spf1で始まる行が1つだけあるか。末尾が-allか~allか - DMARC:
v=DMARC1で始まる行があり、p=が何になっているか - 集計レポート:
rua=の送り先に、実際にレポートが届いているか(設定だけして誰も読んでいない、という状態は珍しくありません)
Webサイト診断の診断ではこう判定します
なりすましメール対策診断は、DNSに公開されている設定だけで判定します。実際の送受信の状況や、メールサーバー内部の設定は見ていません。主な項目と配点は次のとおりです(全項目は採点基準のページで公開しています)。
| 項目 | 配点 | 満点の条件 |
|---|---|---|
| SPFの設定 | 15 | v=spf1 で始まるTXTがある |
| SPFが1つだけ | 5 | 1件(2件以上は無効扱いになるため0点) |
| SPFの参照回数 | 5 | DNS参照が10回以内 |
| SPFの末尾の指定 | 5 | -all(~all は4点、?all や指定なしは1点、+all は0点) |
| DMARCの設定 | 15 | _dmarc に v=DMARC1 のTXTがある |
| DMARCのポリシーの強さ | 15 | p=reject(quarantine は10点、none は3点) |
| DKIMの公開鍵 | 15 | 指定いただいたセレクタかテストメールで有効な署名を確認 |
このほか、適用率(pct)、集計レポートの送付先(rua)、サブドメインの扱い(sp)、MX、MTA-STS、TLS-RPT、DNSSEC、BIMIを確認します。さらに、DMARCが無い場合は点数の上限を50点、SPFが +all の場合は40点、SPFもDMARCも無い場合は20点としています。ほかの項目がよくても、偽メールを止める仕組みが無ければ高い点にはなりません。
設定する順番
- 自社ドメインでメールを送っているサービスを洗い出す(社内メール、Webサイトのフォーム、請求書・予約システム、メール配信サービス)
- SPFを1行にまとめる(参照回数10回以内)
- 各サービスでDKIMを有効にする(多くのサービスは管理画面に独自ドメインで署名する設定があります)
- DMARCを
p=noneとレポート送付先で始める - 2〜4週間レポートを確認し、正規の送信元がすべて合格していれば
p=quarantine、さらにp=rejectへ
制作会社・サーバー会社への依頼文の例
DNSを自社で触れない場合は、管理している会社にそのまま送れる形で依頼すると話が早く進みます。
件名:自社ドメインのメール認証設定(SPF・DKIM・DMARC)のご相談
いつもお世話になっております。
当社ドメイン(example.jp)について、なりすましメール対策のため
次の対応をお願いできますでしょうか。
1. 現在のSPFレコードの確認(1つにまとまっているか、DNS参照が10回以内か)
2. 当社が利用している送信サービス(社内メール、問い合わせフォーム、
請求書システム等)がSPFに含まれているかの確認
3. 各送信サービスでのDKIM署名の有効化
4. DMARCレコードの追加(まずは p=none、集計レポートの送付先あり)
作業前に、変更前と変更後のレコード内容を共有いただけると助かります。
費用とスケジュールの目安もお知らせください。
まずは現状を数秒で確認する
上の項目が自社で設定できているか分からない場合は、無料のご相談で確認します。設定を任せたい場合はなりすましメール対策 設定代行、p=none から reject までの段階導入とレポートの見守りはDMARC段階導入・監視、自社のメールが届かない・迷惑メールに入る場合はメールが届かない・迷惑メール扱いの改善で承っています。
よくある質問
SPFを設定していれば、なりすましメールは届かなくなりますか?
いいえ。SPFは送信サーバーの一覧を公開するだけで、合わなかったメールをどう扱うかは受信側に任されます。受信側に「止めてほしい」と伝えるのはDMARCです。
DMARCをいきなり p=reject にしても大丈夫ですか?
おすすめしません。請求書システムやメール配信サービスなど、SPFやDKIMの設定が漏れている正規の送信元があると、自社のメールまで届かなくなります。p=none で集計レポートを確認してから段階的に強めます。
メールを送っていないドメインでも設定は必要ですか?
必要です。使っていないドメインほど、名前を使われても気づきにくいためです。SPFを「v=spf1 -all」、DMARCを「p=reject」にして、このドメインからはメールを送らないと宣言しておきます。
参照資料
- RFC 7208 Sender Policy Framework (SPF)(2026.10.01 確認)
- RFC 6376 DomainKeys Identified Mail (DKIM) Signatures(2026.10.01 確認)
- RFC 7489 Domain-based Message Authentication, Reporting, and Conformance (DMARC)(2026.10.01 確認)
- Google Workspace 管理者ヘルプ:メール送信者のガイドライン(2026.10.01 確認)
- Yahoo Sender Hub:Best Practices(2026.10.01 確認)