Topへ

開発ブログ(Blog)

SPFについて

1)SPFとは何か?

SPF(Sender Policy Framework)は、送信元ドメインが許可されたメールサーバーでのみメールを送信できるようにする認証システムです。これにより、なりすましメールを防ぎ、メールの信頼性を高めることができます。
 

2)SPFの仕組みと原理

SPFは、送信元ドメインのDNSにSPFレコードを追加することで機能します。SPFレコードには、許可されたメールサーバーのリストが含まれています。メール受信サーバーは、メールの送信元ドメインからSPFレコードを取得し、送信元が許可されたサーバーからのメールであるかどうかを確認します。これにより、なりすましメールをブロックし、メールの信頼性を高めることができます。



SPF

3)SPFのメリットとデメリット

【SPFのメリットは次のとおりです】

  1. なりすましメールを防ぐことができます。
  2. メールの信頼性を高めることができます。
  3. 迷惑メールフィルタの精度を向上させることができます。
  4. メールの配信を最適化することができます。

【SPFのデメリットは次のとおりです】
  1. SPFレコードを正しく設定しないと、正当なメールがブロックされる可能性があります。
  2. SPFは、DMARCやDKIMなどの他の認証システムと組み合わせて使用​​されることが多く、これらのシステムとの設定の調整が必要になる場合があります。

4)SPFレコードの構文と設定方法

SPFレコードは、テキスト形式でDNSに保存されます。SPFレコードは、以下のような構文を持っています。

v=spf1 [メカニズム] [メカニズム] ...

最初の部分のv=spf1は、SPFレコードのバージョンを示します。
次に、[メカニズム]が続き、送信元ドメインの許可されたメールサーバーをリストアップします。
これらのメカニズムには以下の限定子が含まれます

  1. "+" (プラス記号):この限定子は、指定されたメカニズムがメール送信元と一致する場合に、認証が成功します。

  2. "-" (マイナス記号):この限定子は、指定されたメカニズムがメール送信元と一致しない場合に、認証が失敗します。

  3. "~" (チルダ記号):この限定子は、指定されたメカニズムがメール送信元と一致しなくても、認証が失敗となりません。代わりに、メール送信元の検証結果がログに記録されます。

  4. "?" (クエスションマーク):この限定子は、 指定されたメカニズムがメール送信元と一致しない場合でも 、 認証チェックが行われません。

設定例

v=spf1 +ip4:192.168.1.1 +mx -all

【機構】

機構には、認証対象の送信元ホストのIPアドレスと照合する条件を記述します。機構には次のものがあります。

機構 引数 機能
all なし 「-all」は認証が通らなかったIPアドレスは、全て認証失敗します。
「~all」は認証が通らなかったIPアドレスでもDMARCレコードのポリシーでp=rejectを指定したとき以外は認証が成功します。
include ドメイン名 現在のドメインのSPFレコードに他のドメインのSPF設定を含めるために使用されます。これにより、メール送信元となる可能性のある追加のドメインやメールサーバーを許可することができます。
参照するドメインのSPFレコードが正しく構成されていることを前提としています。
ですので、includeに指定された先のドメインのSPFレコードによってFailの判定が与えられても、それが認証結果としては採用されません
a ドメイン名 送信元ホストのIPアドレスが、ドメイン名に与えられたFQDNのAレコードのいずれかであれば認証が成功します
mx ドメイン名 送信元ホストのIPアドレスが、ドメイン名に対応するMXレコードにマッチすれば認証が成功します。 MXは複数与えられる場合がありますが、10個までのMXホストに対して検査を行います
ptr ドメイン名 送信元ホストのIPアドレスをリバースルックアップし、得られたホスト名でさらに正引きを実施し、IPアドレスを得ます。
そのIPアドレスと送信元ホストのIPアドレスが含まれる場合、そのホスト名が引数に与えられたドメイン名と一致するかそのサブドメインである場合、認証成功となります。リバースルックアップに失敗した場合はFailとみなします。負荷の多い処理となるため、あまり利用は推奨されません
ip4 IPアドレス 送信元ホストのIPアドレスが、引数に指定されるIPネットワークに含まれているかIPアドレスにマッチする場合、認証成功となります
ip6 IPv6アドレス 送信元ホストのIPv6アドレスが、引数に指定されるIPv6ネットワークに含まれているかIPv6アドレスにマッチする場合、認証成功となります
exists ドメイン名 引数であるドメイン名に指定された表記でAレコードルックアップを実施し、該当のAレコードが存在すればマッチします。SPFのマクロ機能とあわせての利用を想定しています

5)SPFによるメール認証の仕組みとメールの配信ルール

SPFは、ドメイン認証技術の1つであり、ドメイン所有者が許可したサーバーからのメール送信を検証し、不正な送信をブロックすることで、スパムやフィッシングなどの不正行為を防止することを目的としています。
SPFの仕組みは、ドメインのDNSレコードにSPFレコードを追加し、SPFレコードには、メールを送信することを許可するサーバーのIPアドレスが指定されます。
受信サーバーは、メールヘッダーに記載された送信元のドメインとSPFレコードの内容を比較し、メール送信元のIPアドレスがSPFレコードに指定されたサーバーから送信されたものであるかを検証します。
SPFによる検証が成功した場合、メールは受信されますが、検証に失敗した場合、メールは拒否される場合があります。

6)SPFの解析方法と認証マトリックス

SPFレコードの解析方法は次のとおりです。

メールサーバーは、送信元のメールアドレスのドメイン名に対応するSPFレコードをDNSから取得し、送信元のIPアドレスがSPFレコードに許可されたIPアドレスかどうかを確認します。
具体的には、メールサーバーは次の手順でSPFレコードを解析します。

  1. 送信元のメールアドレスのドメイン名を取得します 。
  2. 送信元のIPアドレスを取得します 。
  3. DNSから、ドメイン名に対応するSPFレコードを取得します 。
  4. 取得したSPFレコードの設定に基づき、送信元のIPアドレスが許可されているかどうかを判定します 。
  5. SPFレコードに許可されていない場合、メールを拒否するか、スパムフォルダに移動するなどの処理を行います。

SPFレコードを正しく設定することで、不正なメール送信を防止し、メールの信頼性を高めることができます。
 

【SPFとDMARCレコードの認証マトリックス図】
メールセキュリティ

※迷惑メールフォルダーへの振り分けはインストールされているセキュリティソフトによって異なる場合があります。上記マトリックスはdmarcのspfのアライメントでreraxedを指定した場合を表しています。strictの場合、SoftFail判定のメールはすべて受信拒否になります。
 

7)SPFエラーの原因と対処法

SPF認証に失敗する理由はさまざまです。たとえば、SPFレコードが誤って設定されている、DNSサーバーに問題がある、送信元のIPアドレスがSPFレコードに許可されていないなどです。
SPFエラーが発生した場合は、次の対処方法を試してください。
 

  1. SPFレコードを確認する

  2. 認証のための追加設定を行う

  3. 結果を確認する

SPFレコードを確認するには、DNS設定を確認し、SPFレコードが正しく構成されていることを確認してください。誤った設定により、認証に失敗することがあります。
SPF認証を行うには、メールサーバーのIPアドレスを指定する必要があります。場合によっては、サブドメインのSPFレコードを追加する必要がある場合があります。
SPFエラーが発生した場合は、エラーの内容を確認し、問題を修正してください。SPFエラーの原因が特定できない場合は、メール送信者に問い合わせることができます。


【ステータス一覧】
ステータス 内容
None • SPFレコードが存在しない場合
Neutral • SPFレコードが“?”として公開されている条件にマッチした
Pass • 認証処理に成功した
soft fail • DNSエラーが発生した場合
• SPFレコードに~allが含まれていて、SPFレコードに記載された送信元IPアドレス以外からメール送信を行った場合
• 送信元ドメインのMXレコードに登録されていないメールサーバーからメールが送信された場合
fail • 送信元のIPアドレスが、ドメインのSPFレコードの許可IPアドレス範囲外にある場合
• 送信元のIPアドレスが、ドメインのSPFレコードに許可IPアドレス範囲内にある場合でも、-allフラグが指定されており、送信元のIPアドレスが明示的に拒否されている場合
• ドメインのSPFレコードが正しく構成されていない場合
TempError • DNSサーバーの問題、またはDNSサービスが一時的に利用不可となっている場合
• リクエストがDNSクエリリミッタによって制限された場合
• DNS応答が大きすぎてサーバーがタイムアウトになる場合
• DNS応答が重くて処理が遅延する場合
• DNSキャッシュの問題により、DNSクエリが正常に処理されない場合
• ネットワークの問題により、DNSクエリが正常に処理されない場合
PermError • SPFレコードの構文が無効である場合
• SPFレコードのDNS参照がタイムアウトした場合
• SPFレコードのinclude機能が深すぎる場合
• SPFレコードのinclude機能で循環参照が発生した場合
• SPFレコードで使用されているメカニズムの値が不正である場合
• SPFレコードで使用されている修飾子の値が不正である場合
• SPFレコードが複数存在する場合
• SPF レコードの長さが 255 文字を超えている場合

※これらは一般的な原因のいくつかですが、エラーが発生する具体的な原因は、状況によって異なる場合があります。エラーメッセージや具体的な状況を詳しく確認することで、問題の特定と解決に役立つ情報を得ることができます。

8)SPFの最新動向と今後の展望

SPFは、現在も広く採用されているメール認証技術の一つです。しかし、最近では、より高度なメール認証技術であるDMARCの採用が進んでいます。
DMARCは、SPFとDKIMを組み合わせて使用することで、偽造メールの防止を強化することができます。
また、DMARCは、認証エラーの報告機能を提供するため、ドメインの安全性を監視することができます。

SPFは、依然として重要な役割を果たしていますが、DMARCや、より高度な認証技術の導入が進むことで、将来的にはSPFの役割が縮小する可能性があります。
しかし、SPFは、DNSを利用することで簡単に導入することができるため、今後も一定の需要があると考えられます。
 

 
 
 
関連記事一覧
DMARCについて