SPFレコード
送信メールサーバーを承認します。
「SPFレコード」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。
SPFが解決する問題
SPF(Sender Policy Framework)を使うと、ドメイン所有者は、そのドメインに代わってメールを送信することを認可したメールサーバーの一覧を公開できます。受信サーバーはこの一覧を確認して、偽装された送信者を検知します。
SPFが答えるのは、次の1つの質問です。このメッセージを配信したサーバーは、このドメインのメールを送信することを認可されていますか。認可されていなければ、そのメッセージは不審なものです。
DNS TXTレコードとして公開
SPFポリシーは、ドメインのDNSにTXTレコードとして公開します。1つのドメインにつき、SPFレコードは必ず1つだけ存在する必要があります。
基本的な例を示します。
; DNS TXT record for company.com
company.com. IN TXT "v=spf1 ip4:198.51.100.4 include:_spf.google.com -all"受信側によるSPFチェック
受信サーバーはメッセージを受け取ると、次の手順でSPFチェックを実行します。
- エンベロープMAIL FROMドメイン(Return-Path)を読み取ります
- DNSで、そのドメインのSPF TXTレコードを検索します
- 接続元サーバーのIPアドレスを認可済みリストと比較します
- pass、fail、softfail、neutral、noneのいずれかの結果を返します
SPFが確認するのは表示されるFromヘッダーではなくエンベロープ送信者である点に注意してください。これは、後で説明する重要な制限事項です。
SPFメカニズム
SPFレコードは、許可された送信元を記述するメカニズムで構成されます。
ip4:198.51.100.4 authorize a single IPv4 address
ip4:198.51.100.0/24 authorize an IPv4 range
ip6:2001:db8::/32 authorize an IPv6 range
a authorize the domain's A record IP
mx authorize the domain's MX servers
include:_spf.vendor include another domain's SPF (vendors)
all matches everything (use with a qualifier)修飾子とallメカニズム
各メカニズムには、一致した場合の結果を設定する修飾子を付けられます。
+ Pass (default if omitted)
- Fail (hard fail - reject)
~ SoftFail (mark suspicious, usually accept)
? Neutral (no policy stated)
Endings:
-all reject anything not listed (strict, recommended)
~all soft-fail unlisted senders (monitoring / rollout)
+all allow everyone (NEVER use - defeats SPF)ベンダー向けincludeメカニズム
多くの組織は、Google Workspace、Microsoft 365、マーケティングプラットフォーム、チケット管理システムなどのサードパーティーサービスを通じてメールを送信します。includeメカニズムを使うと、これらのベンダー独自のSPFレコードに処理を委任できます。
たとえば、include:_spf.google.comを指定すると、Googleが許可しているIPレンジを取り込めます。これによりレコードを保守しやすくなります。ベンダーがIPレンジを更新するため、ユーザー側で更新する必要はありません。
正当な送信サービスはすべて含める必要があります。含めない場合、そのサービスからのメールはSPFに失敗します。
DNSルックアップの10回制限
SPFには厳格な制限があります。レコードの評価で発生するDNSルックアップは最大10回です。include、a、mxなどのメカニズムはそれぞれルックアップを消費し、入れ子になったincludeがあるとすぐに上限に達します。
上限を超えるとpermerrorが発生し、SPFチェックは実質的に失敗します。対策は次のとおりです。
- 使っていないincludeを削除します
- SPFフラットニングを使って、includeを実際のIPレンジに置き換えます
- 送信サービスを統合します
SPFと転送による破綻
SPFにはよく知られた弱点があります。転送によって破綻することです。メッセージが自動転送されると、転送サーバーが新しい接続元IPになります。このIPは、元のドメインのSPFレコードに含まれていません。
その結果、完全に正当なメッセージでもSPFに失敗します。これが、SPFだけでは不十分であり、転送後も有効なDKIMとDMARCのアライメントが併せて必要になる主な理由です。
SPFがチェックするのはエンベロープのみ
重要な制限として、SPFが検証するのはエンベロープのMAIL FROMドメインであり、ユーザーに表示されるFromヘッダーではありません。
攻撃者はエンベロープで自分のドメインのSPFに合格しながら、Fromヘッダーにはあなたのドメインを表示できます。SPFだけでは、読者から見ればなりすましであるにもかかわらず、「pass」と判定されます。
DMARCは、エンベロープのドメインまたはDKIMドメインが表示されるFromとアライメントすることを要求して、この抜け穴を防ぎます。
安全なSPFの導入
正当なメールをブロックしないよう、SPFは慎重に導入します。
- ドメイン名を使ってメールを送信するすべてのサービスを洗い出します
- 必要なincludeをすべて含めてレコードを作成します
~all(softfail)から始め、見落としていた送信元がないか監視します- 問題がないことを確認したら、
-all(hardfail)に厳格化します - DNSルックアップを10回未満に抑えます
変更の前後にメールテスターでテストします。誤ったSPFレコードを設定すると、自分のメールが気付かないうちに迷惑メールに振り分けられる可能性があります。
実際的なSPFレコード
Google Workspaceに加えて、マーケティングベンダーとサポートベンダーを利用している組織のレコードを見てみましょう。
company.com. IN TXT "v=spf1 \
include:_spf.google.com \
include:sendgrid.net \
include:_spf.supportvendor.com \
ip4:198.51.100.4 \
-all"
; Listed senders pass; everything else hard-fails.理解度チェック
SPFについての理解度を確認しましょう。
まとめ
SPFの仕組みについて学びました。
- SPFは、ドメインに代わって送信することを許可されたサーバーを一覧にしたDNS TXTレコードを公開します
- 受信側は、エンベロープのMAIL FROMドメインと接続元IPを照合します
- メカニズム(ip4、a、mx、include)と修飾子で構成され、
-allまたは~allで終わります - 10回のルックアップ制限、転送による破綻、そしてSPFが表示されるFromではなくエンベロープだけをチェックする点に注意が必要です
- ソフトフェイルで導入し、監視してからハードフェイルに厳格化します
次は、DKIMがメッセージに暗号学的な署名を付ける仕組みを学びます。
AI チューターと学ぶ Cyber Security Academy — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 76
- レッスン
- 303
よくある質問
「SPFレコード」レッスンは無料ですか?
はい。「SPFレコード」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。
「SPFレコード」で何を学びますか?
送信メールサーバーを承認します。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cyber Security Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「SPFレコード」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCyber Security Academyレッスンでコードを書いて実行できますか?
はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。