MailData

SPF構文:完全ガイド

SPF構文:完全ガイド

2024年4月22日
著者: Yunes Tarada
翻訳: 永 香奈子

この記事はPowerDMARCのブログ記事 SPF Syntax: A Complete Guide の翻訳です。
Spelldataは、PowerDMARCの日本代理店です。
この記事は、PowerDMARCの許可を得て、翻訳しています。


SPFの概念を学び、それを実装することは、技術主導の企業にとって重要です。
これにより、フィッシング、スパム、BEC攻撃などの潜在的なリスクから保護できます。
SPF(Sender Policy Framework)は、SPF構文を含むSPFレコードを使用して機能します。

本ブログでは、SPF構文表、SPFメカニズム、SPFクオリファイア、SPFモディファイアについて広く取り上げています。
これらはすべて、技術的なプロトコルを用いたメール認証の概念を深く理解するために必要です。

主なポイント

  1. SPFを理解することは、フィッシングやメールのなりすましから保護するために、技術主導の企業にとって不可欠です。
  2. SPFレコードは重要なDNSエントリであり、どのIPアドレスがドメインの代わりにメールを送信できるかを指定します。
  3. SPFレコードを作成し、定期的に確認することは、メール攻撃におけるドメインの不正使用を防ぐために重要です。
  4. SPFのメカニズム、修飾子、および修正子は、受信サーバがSPFレコードをどのように解釈するかを決定する重要な要素です。
  5. 単一の正しくフォーマットされたSPFレコードを維持することは、最適なメールセキュリティと到達率を確保するために必要です。

初心者向けSPF構文

SPFレコードは、DNSレコードの一種であり、公式ドメイン名を使用してメールを送信できる許可済みのIPアドレスを一覧にしたものです。
リストに含まれていないサーバーがそのドメインを使用してメールを送信すると、そのメールは未承認として扱われます。
その結果、受信者のメールボックスによって拒否されます。

これにより、ハッカーによる悪意のある活動に組織の名前が悪用されることを防ぐことができます。
企業は、自社のドメイン名を悪用したフィッシング攻撃を回避するために、SPFレコードを作成し、定期的に確認する必要があります。
2022年の上半期だけで、2億5,500万件以上のフィッシング攻撃が記録されました!

SPFを実装し、SPFの構文を理解することが、いかに重要になっているかが分かります。
SPFレコードには、受信者のサーバーが自社ドメインから送信されたメールを確認・認証するための指示が記載されています。
また、認証に失敗したメールをどのように処理するかも指定されています。

これらの指示は、特定のコンポーネントによって表されます。
SPF レコードの各要素を詳しく見ていきましょう。
以下に、SPF 構文の例を示します。


v=spf1 ip4:123.1.5.0 ip4:100.5.2.1 include:exampledomain.com ~all

各要素の機能は以下のとおりです。

高度なSPF構文

SPFの構文表は、単一のテキスト文字列を含むDNS TXTレコードとして定義されます。
これは常に、使用されるSPFバージョンを指定するv=要素から始まり、現在のところバージョンは1つだけです。
すべてのSPFレコードには、公式ドメインを使用してメッセージを送信できるホストを定義する特定のルールが含まれており、追加情報を表示することもあります。

高度なSPF構文では、次の3つの要素(SPFメカニズム、SPFクオリファイア、SPFモディファイア)に分解して説明します。

SPFメカニズム

ALL
これは常に一致し、SPFレコードの末尾に追加される最後のメカニズムです。
一致しないIPアドレスに対して、-allのようなデフォルトの結果を表示します。
A
これは、AAAAまたはAレコードを持つドメイン名を一致対象として指定するメカニズムです。
送信者のアドレスを照合するために使用されます。
このDNS SPFレコードの構文でドメインが指定されていない場合は、現在のドメインが使用されます。
ip4
SPFレコード内で指定されたIPv4アドレス範囲に送信者が接続されている場合、「正」となり一致します。
アドレス範囲を指定するプレフィックスとともに追加します。
プレフィックスが指定されていない場合、/32が使用されます。
ip6
指定されたIPv6アドレス範囲に送信者が関連付けられている場合、「正」となり一致します。
これはip4メカニズムとともに追加され、アドレス範囲を示すプレフィックスを持ちます。 プレフィックスが指定されていない場合、/128が使用されます。
MX
指定されたMXレコードに含まれるIPアドレスと同じIPアドレスを持つ送信者を許可します。
MXレコードには、各サーバがメッセージを受け入れるためのIPアドレスと優先値が含まれます。
PTR
IPアドレスをサブドメインまたはドメインに解決するために、認可されたドメインを指定します。
完全に一致するドメインやサブドメインに対して、正引きを行いIPアドレスを取得します。

尚、このメカニズムは複数のルックアップを必要とするため、時間がかかり信頼性が低いと考えられています。
RFC 7208のガイドラインによると、推奨されていません。
EXISTS
入力されたドメインに対してDNS Aレコード検索を実行します。
有効なAレコードが見つかった場合、実際の検索結果に関係なく、一致したと見なされます。
INCLUDE
第三者のメール送信者を、そのドメインを指定することで許可します。
送信者は、そのIPアドレスが、リストされたドメインのSPFレコードに記載されたIPアドレスまたはドメインと一致する場合にのみ許可されます。

SPFクオリファイア(修飾子)

メカニズムにクオリファイアが指定されていない場合、マッチが成功するとSPF認証は通過します。
8つのメカニズムのそれぞれには、以下の4つのクオリファイアのいずれかが付与されます。

SPFクオリファイア(修飾子) 結果 受信サーバの対応
+ Pass メールがSPF認証に成功すると、サーバはメールの送受信を許可します。
メールは正当なものとしてマークされます。
これは、クオリファイアが指定されていない場合に適用されるデフォルトの動作です。
- Fail メールは認証に失敗します。
送信サーバがリストに含まれていないためです。
メールは受信者のメールボックスによって拒否される可能性があります。
~ SoftFail 受信者のメールボックスはメッセージを受け入れますが、疑わしいものとしてマークされ、スパムフォルダに振り分けられます。
? Neutral メールは認証に成功も失敗もせず、対応は未定義のままです。
メールは受信者によって受け入れられます。

SPFモディファイア(修飾子)

SPFモディファイアは、SPF構文の動作パラメータを決定する役割を持ちます。
これは、=記号で区切られた名前と値のペアを含み、追加の詳細やルールの例外を指定することができます。
モディファイアはSPFレコードの最後のセクションに一度だけ記述されます。

未定義のモディファイアはすべて無視されます。
redirectモディファイアは、他のSPFレコードを参照して認証を行うために使用されます。
これは、複数のドメインに同じSPFレコードの内容を適用したい場合に利用されます。

includeメカニズムは、第三者のドメインがあなたに代わって、またはあなたのビジネス名を使用してメールを送信することを許可するために使用されます。
expモディファイアは、あるメカニズムが一致した際に、受信サーバが「Fail」SPFクオリファイアを返した理由を指定します。

SPFレコード作成のガイドライン

SPF構文表を使用してSPFレコードを作成する際は、以下の点に留意してください。