この記事は「エンジニアが知っておくべき メール送信・運用ノウハウ、メールの認証技術やセキュリティについて投稿しよう! by blastengine Advent Calendar 2024」の19日目の記事です
この違いをずっと調べていてどう設定しようかを他社のレコードを引きながら考えている。とりあえず調べた結果などをまとめた記事です。
メールの送信元を検証するための仕組みである SPF(Sender Policy Framework) は、メールスプーフィングやフィッシング攻撃を防ぐ重要なセキュリティ対策です。 SPFには、メールサーバが検証結果をどう処理するかを示すポリシーが含まれています。その中でも「Soft Fail」と「Hard Fail」はよく混同されがちな概念です。この記事では、この2つの違いを解説します。
SPFとは
SPFは、送信元のIPアドレスが正当なメール送信者であるかを確認するための仕組みです。DNSに「SPFレコード」という形式で、どのサーバがそのドメインからメールを送信できるかを定義します。
v=spf1 ip4:192.0.2.1 -all
このレコードは、「192.0.2.1」から送信されるメールのみが正当で、それ以外は拒否するべきだと定義しています。
soft failとhard fail
SPFのFailは、送信元IPが許可されていない場合の動作を指します。Failには以下の2種類があります。
あるあるなのが「SPFの設定を初めて導入する際に利用」とは言いつつもずっとそのまま運用してしているパターン。私もこれまで何個か設定を見てますがずっとSoft Failから変えずに設定しているのがほとんでした。
SPFレコード例
Soft Fail: v=spf1 ip4:192.0.2.1 ~all Hard Fail: v=spf1 ip4:192.0.2.1 -all
結局どっちが良いのか
DMARCレポートをきちんと見て設定不備がないことを確認次第-all
を設定すべきだと思います。~all
はあくまでも検証目的の設定であって常用すべきではなさそうです。仮に自分たちが-all
で運用していてもinclude先が~all
だとsoft failになるのもあるのでやはりhard failに設定を変えていく必要があります。
今も結構な数のドメインを見ていたりするのでこの辺は少しずつやっていきます。(とりあえず影響範囲が少ないドメインを一つ-all
に変えました)