SPFレコードとは?迷惑メール対策として必須!

DNS

迷惑メール対策として、送信メールサーバーを認証する仕組みがSPF(Sender Policy Framework)です。

SPFでは、DNSサーバーに登録したSPFレコードを使って送信メールサーバーを認証します。

今回は、SPFの仕組みとSPFレコードの設定方法を紹介します。

SPFとは?

SPF(Sender Policy Framework)は、送信ドメイン認証技術の一つです。

簡単に言ってしまうと、「メールを送信したメールサーバーが正規のサーバーかどうか」をチェックできる仕組みです。

この仕組みにより、不正なメールサーバーがFROMアドレス(送信ドメイン)を偽装してメールを送信しても、受信側で正しいメールではないと判断できるようになります。

フィッシングメール対策の1つとして有効ですね。

SPFで送信ドメインを認証する流れ

SPFでは、次のようにDNSに登録されたSPFレコードを使って、送信メールサーバーのドメインを認証します。

  1. メールサーバーがメールを受信します。
  2. 受け取ったメールのFROMアドレスのドメインに対し、DNSサーバーからSPFレコードを取得します。
  3. 送信元メールサーバーがSPFで指定された情報と一致するかどうかをチェックします。
  4. メールを受信拒否するか、Authentication-Resultsヘッダに結果を記録します。

このように、SPFが正しく機能するためには、DNSサーバーにSPFレコードを正しく設定する必要があります。

SPFレコードの書式

SPFレコードは、DNSサーバーにTXTレコードとして登録します。

example.com.  IN   TXT    "v=spf1 ip4:xxx.xxx.xxx.xxx ~all"

または、DNSサーバーのレコード種別をSPFにすることもできます。

example.com.  IN   SPF    "v=spf1 ip4:xxx.xxx.xxx.xxx ~all"

正規メールサーバーは、「IPアドレス」「ホスト名」「指定したドメインのMXレコード」「指定したドメインのSPFレコード」のいずれかの方法で指定します。

正規メールサーバーをIPアドレスで指定する

SPFで正規の送信メールサーバーをIPアドレスで指定するには、「ip4:」に続けてIPv4アドレスを指定します。

example.com.  IN   TXT    "v=spf1 ip4:xxx.xxx.xxx.xxx ~all"

または、「ip6:」に続けてIPv6アドレスを指定します。

example.com.  IN   TXT    "v=spf1 ip6:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx ~all"

IPv4アドレスもIPv6アドレスも、ネットワークアドレスに対応しています。

example.com.  IN   TXT    "v=spf1 ip4:xxx.xxx.xxx.xxx/28 ~all"

正規メールサーバーをホスト名で指定する

SPFでは、正規メールサーバーをホスト名で指定することもできます。「a:」に続けて、送信メールサーバーのホスト名を指定します。

example.com.  IN   TXT    "v=spf1 a:xxxxx.xxxxxx.com ~all"

正規メールサーバーを指定したドメインのMXレコードで指定する

ドメインのMXレコードで指定されているメールサーバーを正規のメールサーバーとすることもできます。

example.com.  IN   TXT    "v=spf1 mx:xxxxxxx.com ~all"

ただし、受信メールサーバーと送信メールサーバーが同一のときしか使えません。

正規メールサーバーを他ドメインのSPFレコードで指定する

Google Workspaceや、メルマガ配信システムを利用するときによく使われる設定です。

送信メールサーバーの情報は、サービス事業者のドメインから利用します。

example.com.  IN   TXT    "v=spf1 include:xxx.xxxxxxx.com ~all"

正規メールサーバーが複数あるとき

正規の送信メールサーバーが2台以上あるときは、「ip4:IPv4アドレス」「ip6:IPv6アドレス」「a:ホスト名」「mx:ドメイン名」「include:ドメイン名」をスペース区切りで指定します。

example.com.  IN   TXT    "v=spf1 ip4:xxx.xxx.xxx.xxx ip4:xxx.xxx.xxx.xxx ip6:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx include:xxx.xxxxxx.com ~all"

SPFレコードの設定例

SPFレコードの設定例を紹介します。

例えば、当サイトのドメインegatech.netがGoogle Workspaceを使っていて、Webサイトの問い合わせ返信メールはegatech.netのWebサーバーから送信しているものとします。

その場合のDNSレコード設定は、次のようになります。

egatech.net.  IN   TXT    "v=spf1 include:_spf.google.com a:egatech.net ~all"

SPF設定の動作確認

送信ドメイン認証が正しく機能しているかどうかは、該当のメールサーバーから実際にメールを送信してみると分かります。

受信したメールのメールヘッダから、Authentication-Resultsと書かれた部分を探してみてください。

Authentication-Results: mx.google.com;
       dkim=pass header.i=@example.jp header.s=mmmg header.b=AE4SRUVw;
       spf=pass (google.com: domain of mmerror@example.jp designates 123.45.67.89 as permitted sender) 

spf=passという表記があれば、SPFによる送信ドメイン認証に合格しています。

次のように、spf=failやspf=softfailという表記があれば、送信ドメイン認証に失敗しています。

Authentication-Results: mx.google.com;
       spf=fail (google.com: domain of info@example.jp does not designate 123.45.67.89 as permitted sender) 

エラーメッセージを参考に、SPFレコードを見直しましょう。

まとめ

SPFレコードは、迷惑メール対策として重視される設定です。

Gmailでも、SPFで送信ドメインを判定した結果が失敗(Authentication-Resultsがfail)のときは、迷惑メールフォルダにメールが届いてしまう可能性が高いです。

重要な設定なので、Webサイトセットアップ時には忘れずにDNSに設定しましょう。