SPF(Sender Policy Framework)とは何か?導入の背景と仕組みを解説

SPF(Sender Policy Framework)とは

SPF(Sender Policy Framework)とは、メールの送信元(Sender)が正当かどうかを確認するための仕組みです。

メールの送信元は任意にドメインを偽装することが可能なため、たとえば送信元が〇〇社と記載されていたとしても、本当に〇〇社から送信されたものとは限りません。
SPFを正しく記載することで、自社から送信したメールがドメインを偽装した迷惑メールではないことを送信先が理解することができ、SPFに記載された内容と送信メールの情報に差異がある場合は、そのメールがなりすましメールの可能性があると判断することもできます。

SPFが登場した背景

迷惑メールは一般的に送信元アドレスを偽装して送信することが多く、送信元を偽り受信者が迷惑メールの送信元を突き止めることを困難にすることで、フィッシング詐欺などの様々な被害をもたらします。

インターネット上ではSMTP(Simple Mail Transfer Protocol)で電子メールの配送を行うことが一般的ですが、SMTP通信による電子メールの配送では、送信者のアドレスとSMTP通信用アドレスの2種類が割り振られる仕組みとなっており、この2つが同一でなくてはならないという規則はありません。そのため、任意のアドレスを指定することで送信者の偽装が簡単に行えてしまいます。

たとえば、大手ECサイトであるアマゾンや楽天からの迷惑メールを受け取ったことがある方は多いでしょう。
怪しいメールでありながらも、アドレスを見ると「amazon」や「rakuten」という文字があり、信じてしまった方もいるのではないでしょうか。
迷惑メールであるのに、amazonやrakutenの文字が入ったアドレスが使われているのは、SMTP通信による電子メールでは任意のアドレス、つまり好きなアドレスを使えてしまうからです。

しかし、SMTP通信においてSPFの仕組みを利用すると、メールを受信した際、本当にそのメールの送信者であるとされているメールアドレス(エンベロープ送信者)のドメインから送られてきたものかどうかを確認することが可能となりますので、迷惑メール対策を行いやすくなります。

SPFの仕組み

送信側は、予め自分のドメインの権威DNS(Domain Name System)サーバ上に自分のドメインの送信者がメールを外部に向けて送信する可能性のあるIPアドレスの一覧を公開します。

この宣言を行うDNSリソースレコードが「SPFレコード」です。
受信者はメールを受信する際、送信者として指定されたメールアドレスのドメイン部分に表示されるSPFレコードをDNSより取得し、SMTP接続先のIPアドレスが取得したSPFレコードと一致するかを確認することで、送信者のドメイン認証を実施します。

SPFレコードでは、自分のドメインに属するアドレスを送信者とするメールを、ドメイン外に送信するメール配送エージェント(MTA:Mail Transfer Agent)のIPアドレスリストを記述します。

SPFレコードの簡単な記述例は以下の通りです。

test.jp. IN TXT "v=spf1 +ip4:192.168.100.0/24 ~all"

上のコードは、IPアドレスが「192.168.100.0/24」に該当するメールサーバーを「正当なメールサーバー」として指定します。

test.jp. IN TXT "v=spf1 include:example.net ~all"

上のコードはexample.netのSPFレコードに記載されたメールサーバーを「正当なメールサーバー」として指定します。

SPFレコードの内容

SPFレコードは様々な機構(mechanism)の組合せによって構成されており、各機構は左側に記載されているものから順に評価されます。主な機構例は以下の通りです。

INCLUDE

INCLUDE機構はドメイン名を引数とします。
INCLUDE先ドメインのSPFレコードで認証処理が許可されれば認証を通します。INCLUDE先で更にINCLUDE機構がある場合は、再帰的に評価を行います。

A

A機構はドメイン名を引数とします。
送信サーバのIPアドレスが与えられたドメインのAレコード、もしくはAAAAレコードで解決される場合は認証を通します。

MX

MX機構はドメイン名を引数とします。
送信サーバのIPアドレスが与えられたドメインのMXレコードで解決される場合は認証を通します。

IP4、IP6

IP4機構とIP6機構はIPアドレスを引数とします。
CIDR記法によるブロック指定(例:192.168.100.0/24)も可能です。送信サーバのIPアドレスが、与えられたIPアドレスに含まれる場合は認証を通します。

ALL

ALL機構は引数を必要とせず、常に認証を通します。
SPFレコードの末尾で使うことが一般的であり、認証結果を失敗にする検証子(qualifier)と組み合わせた「-all」では、「これまでの機構によって認証が通らなかったIPアドレスは全て認証を通さない」ということを意味します。

REDIRECT

REDIRECTは正確には機構ではなく変更子(modifier)となります。
REDIRECT先ドメインのSPFレコードを使用して認証処理を行います。REDIRECT変更子を使用する場合は、REDIRECT先ドメインのSPFレコードとの競合が発生するため、他の機構は使わないようにしましょう。
使用例は以下の通りです。

v=spf1 redirect:example.com

機構の内、include、a、mx、exists、redirectは、DNSへの問い合わせが必要になるため、1つのSPFレコード内での使用は10回以下にしなければならないという制限があります。10回までであれば十分な余裕があるように見えますが、INCLUDE機構は再帰的に評価が行われるため、INCLUDE先のSPFレコードが更にINCLUDE機構を含んでいた場合は注意が必要です。

情報処理技術者試験でも出題されるSPF

SPFは迷惑メール対策としてIT担当者であれば知っておきたい技術であるため、IPAの情報処理技術者試験でもしばしば出題されます。
たとえば、令和4年度秋期の応用情報技術者試験では、以下の問題が出題されました。

SPF(Sender Policy Framework)の仕組みはどれか。

ア)電子メールを受信するサーバが、電子メールに付与されているデジタル署名を使って、送信元ドメインの詐称がないことを確認する。
イ)電子メールを受信するサーバが、電子メールの送信元のドメイン情報と、電子メールを送信したサーバのIPアドレスから、ドメインの詐称がないことを確認する。
ウ)電子メールを送信するサーバが、電子メールの宛先のドメインや送信者のメールアドレスを問わず,全ての電子メールをアーカイブする。
エ)電子メールを送信するサーバが、電子メールの送信者の上司からの承認が得られるまで,一時的に電子メールの送信を保留する。

応用情報技術者令和4年秋期 午前問44

これまで見てきたように、SPFとは電子メールの送信元のドメイン情報と、電子メールを送信したサーバのIPアドレスから、ドメインの詐称がないことを確認する技術であるため、答えは(イ)です。

参考