SPF
送信ドメイン認証の方式の1つ。ドメインの管理者が、そのドメインのメールを送信してよいメールサーバのIPアドレスを、DNSにSPFレコードとして公開しておき、受信側がそれと照合して、なりすましを検出する。
イマシルちゃんの解説
手紙の差出人の欄には、誰でも好きな名前を書けちゃうよね。メールも同じで、送信者のアドレスはかんたんに偽れちゃうんだ。
そこでSPFでは、ドメインの持ち主が「うちのメールは、このサーバからしか出しませんよ」っていうリストを、インターネット上に公開しておくんだ。
メールを受け取った側は、そのリストを見て、
「このメール、リストにないサーバから来てる!なりすましかも?」って見破れるんだよ!
より深い解説
定義
SPF(Sender Policy Framework)は、RFC 7208で定められた送信ドメイン認証の技術である。メールの送信元のドメインの管理者が、そのドメインのメールを送信する正規のメールサーバのIPアドレスを、DNSのTXTレコード(SPFレコード)に記述して公開する。受信側のメールサーバは、メールを送ってきたサーバのIPアドレスが、そのリストに含まれているかを確認する。
仕組み
- 送信側のドメインの管理者が、DNSにSPFレコードを登録する
- メールを受信したサーバは、SMTPのMAIL FROMコマンドで示された送信者(エンベロープの送信者)のドメインを取り出す
- そのドメインのSPFレコードを、DNSに問い合わせる
- メールを送ってきたサーバ(SMTPの接続元)のIPアドレスが、SPFレコードに含まれているかを照合する
SPFレコードの例
example.jp. IN TXT "v=spf1 ip4:192.0.2.10 include:_spf.mail.example.net -all"
| 記述 | 意味 |
|---|---|
| v=spf1 | SPFのバージョン |
| ip4:192.0.2.10 | このIPアドレスからの送信を認める |
| include:… | 指定したドメインのSPFレコードの内容も含める(外部のメール配信サービスを使う場合など) |
| -all | それ以外からの送信は認めない(fail) |
| ~all | それ以外は、認めないが受け取りはする(softfail) |
認証の結果
| 結果 | 意味 |
|---|---|
| pass | 正規のサーバから送られた |
| fail | 正規のサーバではない(なりすましの可能性が高い) |
| softfail | 正規のサーバではないが、厳密には判断しない |
| none | SPFレコードがない |
結果をどう扱うか(拒否、隔離、受信して印を付けるなど)は、受信側が決める。この扱いを送信側が指定できるようにしたのがDMARCである。
SPFの弱点
| 弱点 | 内容 |
|---|---|
| 転送に弱い | メールが転送されると、転送したサーバのIPアドレスから送られるため、認証に失敗する |
| ヘッダーの送信者は確認しない | SPFが確認するのはエンベロープの送信者で、利用者が画面で見るヘッダーのFromは確認しない |
| 改ざんは検出できない | 送信元のサーバを確認するだけで、メールの内容の改ざんは検出できない |
これらを補うため、DKIM(電子署名による認証)やDMARC(ヘッダーのFromとの整合の確認)と組み合わせて使う。
送信ドメイン認証の比較
| 技術 | 確認の方法 | 確認するドメイン |
|---|---|---|
| SPF | 送信元サーバのIPアドレス | エンベロープの送信者(MAIL FROM) |
| DKIM | 電子署名 | 署名に記載されたドメイン(d=) |
| DMARC | SPFとDKIMの結果と、ヘッダーのFromとの一致 | ヘッダーのFrom |