迷惑メール対策として、送信メールサーバーを認証する仕組みがSPF(Sender Policy Framework)です。
SPFでは、DNSサーバーに登録したSPFレコードを使って送信メールサーバーを認証します。
今回は、SPFの仕組みとSPFレコードの設定方法を紹介します。
SPFとは?
SPF(Sender Policy Framework)は、送信ドメイン認証技術の一つです。
簡単に言ってしまうと、「メールを送信したメールサーバーが正規のサーバーかどうか」をチェックできる仕組みです。
この仕組みにより、不正なメールサーバーがFROMアドレス(送信ドメイン)を偽装してメールを送信しても、受信側で正しいメールではないと判断できるようになります。
フィッシングメール対策の1つとして有効ですね。
SPFで送信ドメインを認証する流れ
SPFでは、次のようにDNSに登録されたSPFレコードを使って、送信メールサーバーのドメインを認証します。
- メールサーバーがメールを受信します。
- 受け取ったメールのFROMアドレスのドメインに対し、DNSサーバーからSPFレコードを取得します。
- 送信元メールサーバーがSPFで指定された情報と一致するかどうかをチェックします。
- メールを受信拒否するか、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に設定しましょう。