SPF・DKIM・DMARCとは?メールの送信者認証をまとめてみた

こんにちは!クララテクニカルサポートです!

SPF・DKIM・DMARCの説明を読んでみたものの、 正直「なりすまし対策」というくくりで全部同じに考えてしまっていませんか?
今回は、この3つの役割の違いを、郵便物にたとえながら整理してみます。

こんな方におすすめ

  • SPF・DKIM・DMARCの3つの違いがいまいち掴めていない方
  • なりすましメール対策の全体像をざっくり把握したい方
  • 送信したメールが迷惑メール扱いされる、その原因を知りたい方

送信者認証・メール運用に関するご相談
「SPF/DKIM/DMARCの正しい設定方法が分からない」「取引先にメールが届かず困っている」といったお悩みはありませんか?
👉無料のご相談はこちらから

目次

送信ドメイン認証とは

そもそも、メールの「差出人」欄は自己申告でしかありません。
封筒の差出人欄を自分で自由に書けてしまうのと同じで、 メールの送信者情報も、受信側が何もしなければ簡単になりすませてしまいます。
SPF・DKIM・DMARCは、この「本当にその差出人から送られたのか」を確認するための 仕組みで、なりすましメール対策の一部にあたります。
ただ、それぞれ担当している役割が 違うので、まずは郵便物に例えて全体像をつかんでみます。

  • SPF =「この住所から出す郵便物は、このポストからしか出しません」という宣言
  • DKIM = 封筒に押す「本人確認済み」の印鑑(中身が改ざんされていないかの証明)
  • DMARC =「宣言や印鑑がなかった(=おかしい)郵便物をどう扱うか」という、受け取り側のルール

こう並べると、SPFとDKIMが「送信元の正しさをそれぞれ別の方法で証明する仕組み」で、 DMARCが「その証明に失敗したときどうするかを決める仕組み」、という役割分担が見えてきます。

SPFとは

SPF(Sender Policy Framework)は、先ほどの「このポストからしか出しません」という宣言を、 DNSに登録しておく仕組みです。
ドメインの管理者は、自分のドメインからメールを送信できる サーバのIPアドレスや、利用している外部サービスのドメインをDNSに公開しておきます。

受信側のメールサーバは、メールが届くと送信元ドメインのSPFの情報をDNSに問い合わせます。
ドメインが指定されている場合は、そのドメインのSPFレコードもさらに辿り、 最終的に許可されたIPアドレスの範囲を洗い出します。そのうえで、実際にメールを 送ってきたサーバのIPアドレスが、その範囲に含まれるかを照合します。
含まれなければ、なりすましの疑いがあるとして、警告表示や迷惑メール判定の対象になります。

SPFが照合しているのは、メールソフトの画面に表示される 「From」欄のドメインではなく、配送情報として使われる別のドメイン(エンベロープFrom)です。

DKIMとは

DKIM(DomainKeys Identified Mail)は、封筒に押す「本人確認済み」の印鑑にあたる仕組みです。
送信側はメールに電子署名を付けて送り、受信側はその署名を検証することで、 「本当にそのドメインから送られたか」「途中で内容が改ざんされていないか」を確認できます。

仕組みとしては、送信側があらかじめ「秘密鍵」と「公開鍵」のペアを用意し、 公開鍵の方をDNSに登録しておきます。メールを送信するときは、本文やヘッダーの情報をもとに 秘密鍵で電子署名を作り、メールに添付します。

受信側は、DNSに登録されている公開鍵を使ってこの署名を検証し、送信時に計算された ハッシュ値と、現在のメールから計算したハッシュ値が一致するかを確認します。
一致すれば「このドメインから送られた、改ざんされていないメール」と判定できます。
途中で本文が書き換えられていると、この検証に失敗します。

DMARCとは

ここまでのSPFとDKIMは、あくまで「検証する仕組み」でしかありません。
検証に失敗したメールを実際にどう扱うかを決めるのが、DMARC(Domain-based Message Authentication, Reporting and Conformance)です。
DMARCも、認証失敗時の扱い方を DNSに登録しておく形で設定します。

DMARCが「合格」と判定する条件は、少し込み入っています。
「SPFかDKIMのどちらかが認証成功していればOK」という単純な話ではなく、SPFとDKIMそれぞれについて、「認証成功」と「アライメント(Fromとのドメイン一致)」の両方が揃っているかどうかを見ます。

アライメントとは、その認証で使われたドメインと、実際にメールの「From」欄に表示されているドメインが一致しているかどうかのチェックのことです。
SPFやDKIMの認証自体に成功していても、認証対象のドメインと、画面に表示されている差出人のドメインが違っていれば、その認証は「アライメントしていない」として扱われます。

そのうえでDMARCは、次のどちらかが成立していれば合格と判定します。

  • SPFが認証成功 かつ アライメントも一致している
  • または、DKIMが認証成功 かつ アライメントも一致している

つまり、「認証成功」と「アライメント」はセットで1つの合否を作り、その合否がSPF側・DKIM側のどちらか一方で成立していればよい、という構造です。
片方が認証に失敗していても、もう片方が「認証成功+アライメント一致」を満たしていれば、DMARCとしては合格になります。

実は、SPFとDKIMを設定しただけでは「認証に失敗したメールをどうするか」までは決まりません。
DMARCのポリシーを「何もしない」「隔離する」「拒否する」のどれかに指定して初めて、 失敗したメールへの対応が動き出します。
いきなり「拒否する」にすると正規のメールまで 届かなくなるリスクがあるため、最初は「何もしない」でレポートだけ集めて実態を見てから、 段階的に強めていくのが定石です。

まとめ

3つの関係を整理すると、次のようになります。

仕組み目的検証の対象単体での弱点
SPF送信元IPアドレスが正当かを確認するメール送信サーバのIPアドレスFromアドレスの偽装や本文の改ざんは検出できない
DKIMメールが改ざんされていないかを検証する電子署名と、対応する本文・ヘッダー送信元ドメインは検証できても、Fromとの一致までは保証しない
DMARCSPF・DKIMの結果をもとに、失敗したメールの扱いを決めるFromアドレスの正当性(アライメント)と、SPF・DKIMの結果SPF or DKIMが正しく設定されていないと機能しない

SPFとDKIMのどちらか一方だけ、あるいは両方設定してもDMARCがない、 という状態だと片手落ちになりがちです。
3つセットで初めて、 なりすまし対策として機能する仕組みだと覚えておくと理解しやすいと思います。

Contact

まずはお気軽にご相談ください

  • ブログに関するご質問・ご感想
  • お困りの課題のご相談・お見積り依頼
  • 各種サービスの導入方法・料金について
お問い合わせフォームはこちら
よかったらシェアしてね!
目次