【メール送信元認証】SPFとは何かを実用的なレベルでまとめる

SECURITY

情報処理安全確保支援士の試験に出てくるSPF(Sender Policy Framework)について、分かりやすく、実務的にも過不足ない程度に説明してみようと思います。

SPFとは

電子メール送信元の情報は自由に設定できてしまうため「なりすまし」が可能です。それを検出する技術の1つがSPF(Sender Policy Framework)です。

送信元詐称はどのように行われるか

電子メールの送信元アドレスは実は2種類あります。

  • Envelope From
  • Header From

まず、下のHeader Fromはクライアントのメーラー(OutlookとかmacOSのMailとか)の差出人欄に表示されるアドレスを意味します。では、Envelope Fromは何に使用するかと言うと、メールサーバー同士での送受信に使用されるもので、誤送信された際の返信先に使用されます。これは、ユーザーが通常は意識することはありません。

ただ、実際の送信元を意味するEnvelope Fromは偽装が可能で、メールを受け取った人のメールソフトの表示では差出人が「Aさん」と表示されながらも、実際に送信したのは「Xさん」で送信元が偽装されていたという「なりすまし」が可能です。

SPFは、この「なりすまし」を検出します

SPFの仕組み

Envelope Fromに記載されたドメインを管理するDNSサーバー(要はメール送信元であるはずの組織が管理するDNSサーバー)に、送信元メールサーバーのIPアドレスが登録されているかどうかを問合せ、それにより、なりすましを検知します。

簡単に図示すると、以下の通り。

これは問題なく送信された場合。
受取先メールサーバー(右の緑色の枠内の方)は、受信したメールにあるEnvelope FromのドメインのDNSサーバーに問合せ、送信元メールサーバーのIPアドレスが真正かを確認します。真正であれば、正常に宛先に届きます。

以下の図は、「なりすまし」が行われた場合。
MAIL FROM」はSMTPのコマンドで、これで指定したアドレスがEnvelope Fromになります(ちなみに、Header Fromは「DATA」コマンドで指定します。これはメール本文を指定するもの)。
受取先メールサーバーは、送信元であるはずのドメインのDNSサーバーに問い合わせますが、実際には存在しませんので、存在しない旨の結果を受け取ります。これで「なりすまし」が検知できる、というものです。

ただ、SPFを使うには実装が必要です。

送信元メールサーバーで必要となる実装作業

送信元はDNSサーバーにSPFレコードを追加し、そのレコードに送信元メールサーバーのIPアドレスを入れる必要があります。

SPFレコードは、具体的には、DNSのTXTレコード(様々な目的に使用するためのレコード)として定義します。実例は、以下。

example.co.jp. IN TXT “v=spf1 ip4:x1.y2.w3.1 -all”

レコードは「ドメイン名△IN△タイプ△リソースデータ」という書式で定義します。
v=spf1はバージョンを表します。
ip4:…はドメイン名のIPアドレスですね。
-allは、設定されたアドレス以外は該当ドメインとして認めない、という意味です。

受信先メールサーバーで必要となる作業

Envelope Fromの送信元が真正であるか、記載されたアドレスのドメインのDNSサーバーに問い合わせる、という動作を受信側メールサーバーが実施する必要があります。

要するに、受信側・送信側のメールサーバーがSPFに対応していないといけません。

SPFが利用できないケース

もうほとんど説明していますが

  • 送信元ドメインのDNSサーバーにSPFレコードが定義されていない場合
  • 受信先メールサーバーがSPF検証の動作をしていない場合

です。

受信先・送信元、この両方がSPFの実装を行っている必要があります。

SPFでは防げないケース

やや重箱の隅をつつくようですが、SPFが防げないケースもあります。

差出元ドメインのPCが乗っ取られてメール送信された場合

SPFの仕組み自体の問題ではありませんが、まぁ実際あり得ますので、脅威と言えば脅威です。
情報処理安全確保支援士の令和元年度秋期試験の午後1にも出てきました。

また、アカウントだけを詐称した場合(@の左側だけ)も不正とはみなされません(メールサーバーのIPアドレスしか検証しないので)。

そもそも差出人のドメインを詐称していないメール

送信元を詐称していない迷惑メールなどがこれにあたると思います。
例えば、メールクライアントに明らかにAppleのアドレスではないものが表示されているのにApppleを名乗っているメール、などです。
そりゃそうですね。SPFは送信元メールサーバーの「なりすまし」を検出できるのみです。
迷惑メール送信元がDNSのサーバーも立てていれば自分でSPFレコードを追加できるのですから、真正な送信元になります。

SPF以外の送信元詐称を検証する技術

送信元詐称を検証する技術としては、他にも電子署名を使用するDKIM(Domain Keys Identified Mail)があります。

また、関連する技術しててDMARC(Domain-based Message Authenticastion, Reporting and Conformance)があります。

これらは、また別記事で説明するとしましょう。

参考サイト

SPF関連