送信ドメイン認証 SPF / DKIM / DMARC。なりすましメールを止める仕組みと段階導入
対象の目安: 情報システム・メール運用担当 / 実務

「取引先からの請求書メールだと思って開いたら、差出人をかたった偽物だった」。フィッシングやビジネスメール詐欺(BEC)の多くは、送信者を本物そっくりに見せかけることから始まります。やっかいなのは、メールの差出人欄は技術的に簡単に詐称できる、という事実です。差出人欄に取引先のドメインを表示させること自体は、攻撃者にとって難しくありません。
この「なりすませてしまう」問題に正面から取り組むのが、送信ドメイン認証と呼ばれる3つの仕組み、SPF・DKIM・DMARCです。これらは、フィッシング対策やBEC対策の華やかな検知技術ではなく、その手前にある「そもそも怪しいなりすましメールを受信側に弾いてもらう」ための土台にあたります。2024年からはGmailやYahooの送信者ガイドラインで一定規模以上の送信者に事実上必須となり、いまや「設定していて当たり前」のインフラになりつつあります。
この記事では、なぜ送信者がなりすませるのかという根本から出発し、SPF・DKIM・DMARCそれぞれの役割を表で整理したうえで、DMARCのアライメントとポリシー(none/quarantine/reject)、無理のない段階導入の手順、レポート運用、そして現場でつまずきやすい失敗までを、メール運用の実務担当者に向けて整理します。
なぜ送信者は簡単になりすませるのか
そもそもの原因は、メールを運ぶ仕組みであるSMTP(Simple Mail Transfer Protocol)が、その名のとおり非常にシンプル(素朴)に設計されている点にあります。SMTPは1980年代に、相互に信頼し合う限られた組織間でメールをやりとりすることを前提に作られました。そのため、メールを送る側が名乗る「差出人」が本物かどうかを検証する仕組みが、もともと組み込まれていません。
さらにややこしいのは、メールには「From」が2種類あることです。
- エンベロープFrom(MAIL FROMコマンドで指定する送信元。Return-Pathとも呼ばれ、配送や不達通知の宛先に使われる。受信者には通常見えない)
- ヘッダFrom(メール本文のヘッダにある差出人欄。メールソフトに表示され、受信者が「誰から来たか」と認識するのはこちら)
攻撃者は、このヘッダFromに取引先や有名サービスのドメインを書くだけで、受信者の画面上は本物のように見せかけられます。封筒(エンベロープ)の差出人と、便箋(ヘッダ)に書かれた差出人が食い違っていても、素のSMTPはそれを問題にしません。送信ドメイン認証は、この「名乗りが本物か」を受信側で機械的に検証できるようにするために生まれました。
自社ドメインをかたるフィッシングが出回っていると顧客から連絡があり、調べたら自社のメールは送信ドメイン認証をほとんど設定していませんでした。受信側は本物か偽物か判定する材料を持っていなかったわけです。まずSPFとDKIMを整え、DMARCをp=noneで入れてレポートを見るところから始めました。
SPF・DKIM・DMARCそれぞれの役割
3つの仕組みは、それぞれ別の角度からなりすましに対抗します。役割を取り違えると設定もちぐはぐになるため、まず違いを押さえます。
| 仕組み | 標準 | 何を検証するか | 検証の対象となるFrom |
|---|---|---|---|
| SPF | RFC 7208 | 送信元のIPアドレスが、そのドメインの許可リスト(SPFレコード)に載っているか | エンベロープFrom(MAIL FROM) |
| DKIM | RFC 6376(RFC 8301等で更新) | メールに付いた電子署名が正しいか(送信途中で改ざんされていないか、署名ドメインが本物か) | 署名で指定されたドメイン(d=タグ) |
| DMARC | RFC 9989(旧RFC 7489を置換) | SPF/DKIMの結果が、受信者に見えるヘッダFromのドメインと一致(アライメント)しているか。違反時にどう扱うか | ヘッダFrom(受信者に見える差出人欄) |
SPF: 送信元IPの認可リスト
SPF(Sender Policy Framework)は、「このドメインのメールは、これらのIPアドレスから送られる」という許可リストをDNSに公開する仕組みです。ドメイン所有者がSPFレコード(TXTレコード)に自社のメールサーバーや利用中のメール配信サービスのIP範囲を書いておき、受信側は届いたメールの送信元IPがそのリストに含まれるかを照合します。RFC 7208が定める仕様で、検証対象はエンベロープFrom(MAIL FROM)のドメインです。
SPFは「正しいサーバーから出たか」は確認できますが、メール本文やヘッダFromの中身までは見ません。そのため単体ではヘッダFromのなりすましを直接は防げません。ここがDMARCで補われるポイントです。
DKIM: 電子署名による改ざん・なりすまし検出
DKIM(DomainKeys Identified Mail)は、送信時にメールへ電子署名(デジタル署名)を付け、受信側がその署名を検証する仕組みです。RFC 6376が仕様で、送信側は秘密鍵で署名し、DKIM-Signatureヘッダに署名値(b=)と署名ドメイン(d=)、セレクタ(s=)を入れます。受信側は、署名ドメインのDNSに公開された公開鍵を取得して署名を検証します。
検証に成功すれば、「そのドメインがこのメールに責任を持って署名したこと」と「署名後にメールが改ざんされていないこと」が確認できます。SPFと違い送信経路(IP)に依存しないため、メールが転送されても署名さえ壊れなければ検証が通る、という利点があります。
DMARC: 差出人ドメインとの突き合わせと違反時の指示
DMARC(Domain-based Message Authentication, Reporting, and Conformance)は、SPFとDKIMを束ねて、受信者に見えるヘッダFromのドメインを守る仕組みです。仕様は長らくRFC 7489(2015年、Informational)でしたが、2026年5月にIETFの標準(Proposed Standard)としてRFC 9989(本体)・RFC 9990(集計レポート)・RFC 9991(失敗レポート)へ置き換えられました(俗にDMARCbisと呼ばれた改訂で、組織ドメインの判定が静的なPublic Suffix ListからDNS Tree Walkアルゴリズムへ変更されています)。基本的な仕組みは変わらず、ドメイン所有者がDNSにDMARCレコードを公開し、(1)SPF/DKIMの結果をヘッダFromと突き合わせる基準(アライメント)と、(2)突き合わせに失敗したメールをどう扱ってほしいか(ポリシー)と、(3)結果のレポートをどこへ送ってほしいか、を受信側に伝えます。
重要なのは、SPFもDKIMも単体ではヘッダFromを守らない、という点です。DMARCがあって初めて、受信者が実際に目にする差出人欄のなりすましに対処できます。
DMARCの肝はアライメント
DMARCを理解するうえで最も大事な概念がアライメント(alignment、整合)です。SPFやDKIMが「合格」しただけでは、DMARCは合格になりません。SPF/DKIMで認証されたドメインが、受信者に見えるヘッダFromのドメインと一致して初めて、DMARCに合格します。
なぜこれが必要なのでしょうか。SPFやDKIMは、それぞれ別のドメインに対しても成立してしまうからです。たとえば攻撃者が、自分が正規に管理する attacker.example というドメインでSPFやDKIMをきちんと設定したメールを送り、ヘッダFromだけを bank.example に偽装したとします。このとき、SPFやDKIMは attacker.example に対しては合格してしまいます。アライメントがなければ、「どこかのドメインで認証は通っている」という理由で、なりすましを見逃しかねません。
DMARCは、認証が通ったドメインと、受信者が見るヘッダFromのドメインが揃っているかを必ず確認します。
- SPFアライメント: SPFが合格し、かつエンベロープFromのドメインがヘッダFromのドメインと揃っている
- DKIMアライメント: DKIMが合格し、かつ署名ドメイン(d=)がヘッダFromのドメインと揃っている
DMARCは、このSPFアライメントとDKIMアライメントのどちらか一方でも成立すれば合格とします。逆に、両方とも成立しなかったときに初めて、後述のポリシー(quarantine/reject)が適用されます。なお、ドメインの揃え方には、完全一致を求めるstrict(厳格)モードと、組織ドメイン単位(サブドメインの違いを許容)でよしとするrelaxed(緩和)モードがあり、既定はrelaxedです。
メモ
「SPFもDKIMも設定したのにDMARCが失敗する」という相談の多くは、このアライメント不一致が原因です。たとえば外部のメール配信サービスを使うと、SPFは配信サービス側のドメインで通る一方、ヘッダFromは自社ドメインのまま、というずれが起きがちです。DMARCを通すには、配信サービス側で自社ドメインのDKIM署名(カスタムドメイン署名)を設定し、署名ドメインをヘッダFromと揃えるのが定石です。
DMARCポリシー: none / quarantine / reject
DMARCレコードのp=タグで指定するポリシーは、アライメントに失敗したメールを受信側にどう扱ってほしいかの指示です。3段階あります。
| ポリシー | 受信側の挙動 | 主な用途 |
|---|---|---|
| p=none | 何もしない(通常どおり配送)。ただしレポートは送ってもらう | 監視・観測モード。まず実態を把握するための入口 |
| p=quarantine | 疑わしいものとして隔離する(迷惑メールフォルダ行きなど) | 誤検知のリスクを抑えつつ、なりすましを段階的に締める中間段階 |
| p=reject | 受信側に拒否を要請する。対応受信側では受信者に届かない(迷惑メールフォルダにも入らない) | なりすまし対策の最終形。最も強い保護(実際の挙動は受信側の実装・ポリシーに依存) |
p=noneは「監視のみ」で、なりすまし自体は止めません。あくまで、自ドメインを名乗って送られているメールの全体像と、SPF/DKIMの設定漏れを把握するための段階です。なりすましを実際に止める効果が出るのはquarantine以降であり、最終的にp=rejectまで到達して初めて、対応する受信側の多くがなりすましメールを拒否してくれる状態になります(ただし最終的な受信可否は各受信側の実装に依存します)。
裏を返せば、p=noneのまま放置すると「DMARCを入れているのに、なりすましは素通り」という状態になります。フィッシング対策協議会の報告書でも、日本企業はp=none(監視のみ)の比率が高く、rejectまで進んでいる割合が低い点が課題として指摘されています。導入したら終わりではなく、rejectを目標に段階的に強化していくことが肝心です。
2024年以降のGmail/Yahoo送信者ガイドラインという転機
送信ドメイン認証が一気に「設定して当たり前」へと進んだ大きな契機が、GoogleとYahooが2024年から適用を始めた送信者ガイドラインです。Gmailの公式ヘルプ(Email sender guidelines)によれば、1日あたり5,000通以上をGmail宛てに送る一括送信者には、おおむね次が求められます。
- 送信ドメインにSPFとDKIMの両方を設定すること
- 送信ドメインにDMARCを設定すること(ポリシーは最低限p=noneでよい)
- マーケティングメールや購読メールにワンクリックでの登録解除(List-Unsubscribeヘッダ等)を備えること
- 迷惑メール報告率を低く保つこと(Postmaster Tools上で0.3%未満、推奨は0.1%未満)
- 正引き・逆引きのDNSレコード(PTR)を整備し、送信時にTLSを使うこと
ポイントは、SPF「または」DKIMではなく「両方」が求められ、さらにDMARCの設定(最低p=none)まで必須化された点です。これにより、大量送信を行う事業者は送信ドメイン認証を整えないとGmail/Yahooに安定して届かなくなりました。なお、この5,000通という基準はGmailが「個人のGmailアカウント宛てに1日5,000通超を送る送信者」を一括送信者と定義したものです。Yahooは公式FAQで明確な通数のしきい値を示さず「相当量を送る送信者(significant volume)」に同等の要件を求めるとしており、しきい値の有無は両社で異なります。いずれにせよ、これ未満でもSPF/DKIM/DMARCの整備は強く推奨されます。
なりすまし対策としての送信ドメイン認証は、こうした受信側の要件と、フィッシング・BECという脅威の両面から重要性が増しています。フィッシングの手口や利用者側の対策の全体像は あわせて読みたい フィッシングの手口と対策の基本。個人と組織でできることを徹底解説 あわせて読みたい ビジネスメール詐欺(BEC)の手口と組織的対策。送金プロセスを統制で守る
段階導入の手順: p=none で観測してから締める
DMARCは、いきなりp=rejectにすると、設定漏れのある正規メール(配信サービス・社内システムからの自動メールなど)まで届かなくなる恐れがあります。そのため、レポートで実態を把握しながら、p=none -> quarantine -> reject と段階的に締めていくのが鉄則です。
- 1
SPFとDKIMを正しく整える
まず自ドメインから送るすべての経路(自社メールサーバー、外部のメール配信サービス、業務システムの通知メール等)を洗い出し、それぞれでSPFレコードへのIP追加とDKIM署名を整えます。ここが抜けていると、後段でDMARCを締めたときに正規メールが落ちます。
- 2
p=none でDMARCを公開し、レポートを受け取る
DMARCレコードをp=noneで公開し、rua(集計レポート)の送付先を設定します。数週間から数か月、レポートを集めて「自ドメインを名乗るメールがどこから出ているか」「SPF/DKIMアライメントが通っているか」を観測します。ここで未知の正規送信元や設定漏れを発見・修正します。
- 3
p=quarantine へ引き上げる
レポート上で正規メールがおおむねアライメント合格になったら、ポリシーをquarantineへ。pct(適用割合)タグで一部から適用し、影響を見ながら割合を上げる慎重な進め方もできます。アライメントに失敗したなりすましは隔離されるようになります。
- 4
p=reject まで到達させる
quarantineで誤検知(正規メールの隔離)が起きないことを十分に確認できたら、最終形のp=rejectへ。これで対応する受信側の多くがなりすましメールを拒否するようになります。ただし、メーリングリストやメール転送ではSPF/DKIMが壊れてDMARCに失敗することがあり、rejectだと正規メールまで弾かれ得ます(ARCなどの緩和策がある)。到達後もレポート監視は続け、新しい送信経路の追加時に設定漏れがないか見張ります。
ヒント
全工程を一気に進めず、各段階でレポートを必ず確認してから次へ進むのがコツです。とくにp=noneでの観測を省くと、どこに正規の送信経路があるか分からないままrejectして正規メールを止めてしまいます。総務省のガイドラインでも、レポートを活用しながら段階的にポリシーを強化する進め方が示されています。
レポート運用: rua と ruf
DMARCのもう一つの柱が、受信側から送られてくるレポートです。DMARC仕様(集計レポートはRFC 9990、失敗レポートはRFC 9991)は2種類を定めています。
- aggregate report(集計レポート / ruaタグで送付先指定): 一定期間ごとに、どの送信元IPから自ドメインを名乗るメールがどれだけ届き、SPF/DKIM/DMARCの結果がどうだったかをXML形式でまとめた統計。日々の運用の主役で、設定漏れの発見や正規送信元の棚卸しに使う
- failure report(失敗レポート、forensic report / rufタグで送付先指定): アライメントに失敗した個別メールについて、ほぼ即時に送られる詳細な情報。原因調査に役立つが、メール内容を含みうるためプライバシーへの配慮が必要で、送らない受信側も多い
実務上は、まずruaを確実に受け取れるようにし、レポートを可視化するツール(DMARCレポート分析サービスなど)で読み解くのが現実的です。生のXMLは量も多く人手で追うのは大変なため、可視化の仕組みを用意することが段階導入を回す鍵になります。
よくある失敗
送信ドメイン認証は、設定の細部でつまずくと「正規メールが届かない」「いつまでも認証が通らない」といった事故につながります。代表的な失敗を押さえておきましょう。
SPFの10ルックアップ超過(PermError)
SPFには、評価の過程でDNS参照を伴う項目(include / a / mx / ptr / exists / redirect)の合計が10を超えてはならない、という上限があります。RFC 7208はこれを超えた場合にPermErrorを返すと定めており、PermErrorになるとSPFは合格扱いになりません。複数のメール配信サービスをincludeで積み重ねていくと、この10ルックアップ上限を簡単に超えてしまうのが、最もよくある失敗です。対策は、不要なincludeの整理や、複数のSPFレコードを一つに平坦化(フラット化)して参照数を抑える運用です。
転送でSPFが壊れる
メールが転送されると、転送サーバーのIPから再送出されるため、元のドメインのSPF許可リストに転送サーバーが載っておらず、SPFが失敗することがあります。これがDMARCに効いてくると、正規メールがアライメント失敗で落ちかねません。SPFは経路(IP)に依存するためこの弱点を持ちます。一方、DKIM署名は経路に依存しないため、転送されても署名さえ壊れなければアライメントが通ります。SPFとDKIMの両方を整え、DKIM側でアライメントを担保しておくことが、転送に強い構成になります。
サブドメインの設定漏れ
DMARCは組織ドメイン(例: example.com)に設定すると、原則としてサブドメインにも適用されます(sp=タグで別指定も可能)。ところが、サブドメインから送る業務システムのメールでSPF/DKIMが未整備だと、組織ドメインのDMARCを締めた途端にそれらが落ちます。使っていない・送信に使わないドメインにも、なりすまし防止のためにp=rejectのDMARCを置いておく(送らないドメインからの送信をすべて拒否させる)対策もあわせて検討します。
DKIMの鍵運用の放置
DKIMの公開鍵はDNSに置きますが、セレクタや鍵の更新(ローテーション)を放置すると、鍵漏洩時のリスクが残ります。鍵は定期的にローテーションする運用を組み込んでおくのが望ましい姿です。
なりすましメールは、人をだますソーシャルエンジニアリングの入口でもあります。技術的な認証で「届かせない」ことと、利用者が手口を知って「だまされない」ことは両輪です。手口の心理面と組織での備えは あわせて読みたい ソーシャルエンジニアリングの手口と対策。なりすまし・プリテキスティング・テールゲーティングを原理から理解する
まとめ
送信ドメイン認証 導入・運用チェックリスト
- 自ドメインから送るすべての送信経路(自社サーバー・配信サービス・業務システム)を洗い出したか
- SPFレコードに正規の送信元IPを過不足なく登録し、10ルックアップ上限を超えていないか
- 外部配信サービスでも自社ドメインのDKIM署名を設定し、ヘッダFromとアライメントが揃っているか
- DMARCをまずp=noneで公開し、rua(集計レポート)の送付先を設定して実態を観測したか
- レポートで正規メールの認証通過を確認しながら、quarantine -> reject へ段階的に強化しているか
- 送信に使わないドメイン・サブドメインにもなりすまし防止のDMARC(p=reject等)を置いているか
- DKIM鍵のローテーションやレポートの定期確認など、入れて終わりにしない運用を組み込んだか
送信ドメイン認証は、SMTPがもともと送信者を検証しないという根本のすき間を、SPF・DKIM・DMARCの3点セットで塞ぐ仕組みです。SPFで送信元IPを、DKIMで電子署名を整え、DMARCでそれらを受信者に見える差出人ドメインと突き合わせ、違反したなりすましを段階的に締め上げていく。p=noneで実態を観測し、レポートを見ながらquarantine、rejectへと進めるのが、正規メールを止めずに守りを固める王道です。フィッシングやBECが自社ドメインのなりすましから始まる以上、送信側でこの土台を整えることは、自社の信頼と取引先・顧客を守るための、地味だが効果の大きい一手になります。
出典・参考
- Email sender guidelines(Gmail Help / Google)
- RFC 9989 - Domain-based Message Authentication, Reporting, and Conformance (DMARC)
- RFC 9990 - DMARC Aggregate Reporting
- RFC 6376 - DomainKeys Identified Mail (DKIM) Signatures(RFC 8301等で更新)
- RFC 7208 - Sender Policy Framework (SPF) Version 1
- 送信ドメイン認証技術「DMARC」の導入状況と必要性について(フィッシング対策協議会)
- DMARC等のメール認証技術に関するガイドライン(総務省)
関連する記事
フィッシングの手口と対策の基本。個人と組織でできることを徹底解説
依然として被害が絶えないフィッシング詐欺について、典型的な手口とその進化、見破り方、個人と組織それぞれでできる対策、そして万一被害に遭ったときの対応までを、専門知識がなくても分かるように網羅的に解説します。
ビジネスメール詐欺(BEC)の手口と組織的対策。送金プロセスを統制で守る
経営層や取引先になりすまし、正規の業務メールに紛れて送金させるビジネスメール詐欺(BEC)。手口の原理から、なぜ気づきにくいのか、そして送金プロセスの統制と二重確認による組織的な防ぎ方までを実務目線で解説します。
ソーシャルエンジニアリングの手口と対策。なりすまし・プリテキスティング・テールゲーティングを原理から理解する
技術の脆弱性ではなく人の心理を突くソーシャルエンジニアリング。なりすまし、プリテキスティング、テールゲーティングといった代表的な手口の原理と成立条件、個人と組織でできる対策を、専門知識がなくても分かるように実務目線で解説します。


