Sender Policy Framework(SPF)
あらかじめ発信元ドメインの DNS サーバに正当な SMTP サーバの IP アドレス(SPF レコード) を登録しておくことによって、発信元の SMTP サーバを認証する仕組み
- メールを受信した受信側ドメインの SMTP サーバは、発信元の DNS サーバに問い合わせ、エンベロープ(SMTP プロトコルの MAIL FROM) のメールアドレスのドメインの正当性を検証
- 上記によって発信元の SMTP サーバの正当性が確認された場合のみメールを受け入れ、それ以外のメールは排除する
SPF レコードの定義
- SPF レコードの定義には「+mx」や「+ip4:xxx.xxx.xxx.xxx」のように、メールを送信する可能性のあるサーバの条件を記述するディレクティブか、「redirect」や「explanation」などのモディファイヤを指定できる
- ディレクティブはメカニズムとクオリファイヤで構成
メカニズムには対象となるホストのパターン
クオリファイヤにはパターンにマッチするホストの扱いについて指定
例
- +ip4:xxx.xxx.xxx.xxx
- 「+」がクオリファイヤ
- 「ip4:xxx.xxx.xxx.xxx」がメカニズム
- +ip4:xxx.xxx.xxx.xxx
受信側の認証処理では、メールを送信してくるホストの IP アドレスがメカニズムの定義にマッチするかどうかをチェックし、マッチした場合はクオリファイヤに示される値を認証結果とする
クオリファイヤは省略可能であり省略時は「+」になる。クオリファイヤには次のものがある。
item contents + Pass
認証成功- Fail
認証失敗
この定義にマッチするホストからはメールが送信されることはない~ SoftFail
認証情報を公開しているが、場合によっては認証できないメールも存在する? Neutral
認証情報を公開しない
例
shoeisha.co.jp ドメインからはメールを送信しない場合
shoeisha.co.jp IN TXT "v=spf1 -all"
-all
にすると左に一致する IP アドレスがなければ、そのメールは拒否すべきであることを示す
MX レコードに指定したホストからのみメールを送信する場合
shoeisha.co.jp IN TXT "v=spf1 mx -all"
メールを送信するホストを IP アドレスで指定する場合
shoeisha.co.jp IN TXT "v=spf1 ip4:192.168.1.5 ip4:192.168.1.12 -all"
メール転送問題の解決案
認証結果
None
- SPF レコード自体が未公開
fail
- 認証失敗(-)
softfail
- 弱い認証失敗(~)
Neutral
- 中立(?)
pass
- 認証成功(+)