概要
電子メールの送信元ドメインが詐称されていないかを検証する送信ドメイン認証(Sender Domain Authentication)。
本記事は、SPF認証についてまとめたものです。
SPF、DKIM、DMARC、ARC、BIMIといった送信ドメイン認証を俯瞰的にまとめた記事はこちらです。
本記事の目的
※本記事では、整理しておきたいポイントを中心に記載しています。ネット上に解説記事が多そうな内容については省略している場合があります。
目次
基本
SPFの認証対象と認証成否
- メール送信元ホストのIPアドレスを認証します。
- メール送信時のエンベロープFrom(SMTPのMAIL FROMコマンド)のドメインのDNSに登録されたSPFレコードに基づいてメール送信元ホストのIPアドレスを検証し、正しいものであると判断できれば認証成功です。
- SPFレコードを保有するDNSドメインの管理元により、「そのIPアドレスが、該当ドメインをエンベロープFromドメインとして使用することを許可されている」という点が担保されます。
認証時の動作
SPF対応に必要な設定
- DNSレコード登録のみです。
認証結果
- SPFの認証結果は、大きく"Pass"か、"Pass以外"("Fail"等)に分類できます。種類は以下の通りです。
- None
- Neutral
- Pass
- Fail
- Softfail
- TempError
- PermError
- 認証結果は、送信ドメイン認証において共通的に使用されるAuthentication-Results(AR)ヘッダに記録されます。ARヘッダの詳細は別記事にまとめる予定です。
詳細
導入ステップや運用ポリシーに応じた調整のポイント
- allの修飾子(qualifier)
- デフォルトの認証結果(all)に対する修飾子の指定において、自ドメインからのメールを受信する側のSPF認証時、明示されていないホスト(IPアドレス)からメールが送信された場合に、どの程度厳しく判定して欲しいかを示すことができます。
修飾子は、"+"(Pass)、"-"(Fail)、"~"(Softfail)、"?"(Neutral)を使用できます。 - 例えば、以下のようなSPFレコードがあるとします。
v=spf1 +ip4:xxx.xxx.xxx.xxx +ip4:yyy.yyy.yyy.yyy –all
- よって、SPF対応の初期段階等で様子を見たい場合には、"-all"でなく、"?all"や"~all"を指定する方法が考えられます。
"?all"(Neutral)は"all"省略時のデフォルトです。送信元ドメインとして、"all"がメール送信を許可しているかどうかを表明していない、ということを示す設定ですので、"all"に該当するホストがSPF認証により受信拒否されることはありません(もちろんSPF認証以外の理由で拒否されることはあり得ます)。 - 合わせて、DMARCレポートを受け取る設定にしておくと、自ドメインから送信されたメールに対するSPF認証結果を含む集計情報を得られるので、SPFの"all"に対する修飾子の指定をより厳しいものに変更できるかどうかを検討しやすくなります。
- なお、修飾子の指定を省略した場合はデフォルト"+"として扱われます。
- デフォルトの認証結果(all)に対する修飾子の指定において、自ドメインからのメールを受信する側のSPF認証時、明示されていないホスト(IPアドレス)からメールが送信された場合に、どの程度厳しく判定して欲しいかを示すことができます。