2024年に、Gmailで受信するメールのセキュリティ要件が厳しくなった。
その対策の中のひとつに送信元メアドはDNSレコードにSPFレコードを設定しなさいというのがあった。
SPFレコードとは
SPFレコード(Sender Policy Frameworkレコード)は、メール送信元の正当性を検証するためにDNSに登録されるTXTレコード。送信元ドメインが詐称されていないかを確認する仕組みを提供する。
SPFレコードの役割
- 送信元の認証: メールを受信したサーバーが、送信元のIPアドレスがそのドメインに許可されたものかどうかを確認。
- なりすまし防止: ドメインを偽装したスパムやフィッシングメールの送信を防ぐ。
- 信頼性向上: 正規のメールサーバーから送信されたメールであることを証明し、迷惑メール判定を回避。
仕組み
- メールサーバーがメールを受け取ると、送信元ドメイン(例: example.com)のDNSに問い合わせてSPFレコードを取得。
- SPFレコードには、そのドメインからメールを送信することが許可されているサーバー(IPアドレスやホスト名)が記載されている。
- 受信サーバーは、実際の送信元IPアドレスとSPFレコードの情報を照らし合わせ、一致すれば認証成功(PASS)、一致しなければ失敗(FAIL)と判断。
記述例
以下はSPFレコードの例:
v=spf1 ip4:192.0.2.0/24 include:_spf.example.com ~all
v=spf1
: SPFのバージョン(現在は「spf1」のみ)。ip4:192.0.2.0/24
: このIPv4アドレス範囲からの送信を許可。include:_spf.example.com
: 他のSPF設定(_spf.example.com)を参照。~all
: 上記以外から送られた場合はSoftFail(認証失敗だが受け入れる)。
注意点
- DNSルックアップ制限: SPFでは最大10回までのDNSルックアップが許可されている。これを超えると認証エラー(PermError)が発生。
- 書式エラー: SPFレコードが正しく設定されていない場合、意図しない結果になる可能性あり。
- DMARCとの併用: SPFだけでは完全な認証はできないため、DKIMやDMARCと併用することが推奨される。
- いちおう、5000件/日未満の送信数だったらDKIMは必須とされていない。
SPFは、メールセキュリティの基本的な仕組みとして広く利用されている。
+aとaの違い。+ip4とip4の違い
- +a や a
- +ip4 や ip4
みたいに、「+」がついてたりついてなかったりする記述があるが、
結論から言うと、どちらも同じ動作をする。
「+」というのは、認証結果を「PASS」とすることを意味する。SPFの設定は「PASS」になればオッケー。
「+」を省略したとて、デフォルトで「+」(PASS)が適用される。
spfがちゃんと設定できているかチェックできるサイト
MXToolBoxってサイトにspfに設定したドメインを入力すると、spfがちゃんと設定できているかチェックできる。
include: とは
SPFレコードの中に記述されることがある、
- include: ドメイン
の記述は、
どのドメインの中に更にSPFレコードを記述しているもの。
SPFは最終的にIPアドレスで登録する必要があるため、include: ドメイン1の中を見て、(nslookup -type=txt ドメイン1)include: ドメイン2 と記述があれば、さらにドメイン2の中を見て、、というように
lookup回数の考え方。includeの中でinculeやっている場合は?
LookupとはDNSを参照した数。
SPFはlookupの回数が合計で10回を超えると受信側によってはスパム判定する場合がある。DNSの負担軽減の為らしい。
includeの中でinculeやっている場合は? → カウントする。
例えば、
v=spf1 ip4:192.0.2.0/24 include:_spf.example.com ~all
というのがあって、include:_spf.example.com をnslookupで確認すると、
さらに
v=spf1 include:_spf2.example.com ~all
みたいに記述してあると、
最初の
- include:_spf.example.com
と、そこから呼ばれている
- include:_spf2.example.com
で、合わせて2回Lookupが発生したことになる。
Lookupにカウントするもの
繰り返しになるが、LookupとはDNSを参照した数なので、Lookupにカウントするものは、
- include:
- a
- mx
のような記述になる。
Lookupにカウントしないもの
- ip4:192.0.2.0/24
のような記述はLookupにカウントしない。
なぜならDNSを参照していないため。
CIDR形式であろうがなかろうが、DNSを参照していないため、Lookupの回数にはカウントされない。
コメント