2.0 KiB
2.0 KiB
SPF(Sender Policy Framework)
SPF(Sender Policy Framework)は、送信ドメインがDNSのTXTレコードでメールの送信を許可するIPアドレスを公開し、受信側のSMTPサーバが送信元IPアドレスの正当性を検証する仕組み
検証の流れ
- メールの送信 ... 送信側のSMTPサーバが、受信側のSMTPサーバにメールを送信
- 送信元ドメインの取得 ... 受信側のSMTPサーバが、エンベロープFrom(MAIL FROM)から送信元ドメインを取得
- SPFレコードの取得 ... 送信元ドメインのDNSに問い合わせ、SPFレコード(TXTレコード)を取得
- IPアドレスの照合 ... 実際に接続してきた送信側SMTPサーバのIPアドレスが、SPFレコードで許可されているかを確認
- 検証結果の判定 ... 照合結果に応じて、pass(認証成功)やfail(認証失敗)などの結果を返す
SPFレコードの設定例
特定のIPv4アドレスのみ許可する:
v=spf1 ip4:192.0.2.1 -all
- IPアドレスで指定する場合、
ip4:もしくはip6:をプレフィックスに用いる
複数のIPv4アドレスを許可する:
v=spf1 ip4:192.0.2.1 ip4:192:.0.0.2 -all
Aレコードに登録されたIPアドレスを許可する:
v=spf1 a -all
v=spf1 a:mail.example.com -all
MXレコードが指すIPアドレスを許可する:
v=spf1 mx -all
外部のメール送信サービスを利用する場合:
v=spf1 include:_spf.example.com -all
補足:SPFレコードの識別
素朴な疑問:
SPFレコードってただのTXTレコードだから、複数のTXTレコードがあっても大丈夫なのだろうか
複数のTXTレコードが登録されている場合:
example.com. IN TXT "v=spf1 ip4:192.0.2.1 -all"
example.com. IN TXT "google-site-verification=xxxxxxxx"
example.com. IN TXT "example-verification=yyyyyyyy"
v=spf1で始まるレコードがSPFレコードとして識別される- SPFレコードが複数存在する場合はNG