Cyber Security Academy · レッスン

SPFレコード

送信メールサーバーを承認します。

レッスン 2/413 ステップ

「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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. メールスプーフィングの仕組み
  2. SPFレコード
  3. DKIM署名
  4. DMARCポリシーとレポート
← Cyber Security Academyに戻る