Sun Java System Messaging Server 6.3 管理ガイド

15.1 動作原理

Messaging Server からメッセージが届くと、MTA は SPF クエリーを実行して、そのアドレスが本当にそのアドレス上のドメインに由来するものかどうかを判定します。SPF クエリーは、メッセージのドメイン (domain) に属する TXT レコードを DNS に問い合わせます。domain は、HELO または EHLO (spfhelo チャネルキーワードが使用された場合) の引数として指定されたドメイン名か、MAIL FROM: コマンドで指定されたオリジネータのアドレス内のドメイン名(通常は @ 文字のあとの部分) のいずれかです。ドメイン名が指定されていないか、使用できない場合は、HELO/EHLO で指定されたドメインが domain として使用されます。ほとんどの ISP は、自社のドメインに一致する IP アドレスの公式リストを配布しています。IP アドレスがドメイン名に一致しない場合、そのメッセージは偽造されたとみなされます。


注 –

DNS に問い合わせる前に、SPF_LOCAL マッピングテーブルに一致するドメインがあるかどうかを確認します。一致するドメインがある場合は、それが最初に使用されます。


マッピングテーブルで見つかったレコードに redirect=domain 節が含まれている場合は、ドメインへのリダイレクションが DNS クエリーとして実行され、マッピングファイルの冗長な再帰的チェックが行われなくなります。

取得される TXT レコードの例を次に示します。

v=spf1 +mx a:colo.siroe.com/28 -all

v=spf1 トークンは、この RFC によってサポートされる SPF レコードに必ず指定されます。

+mx は、MX レコードから domain を検索し、この SMTP 接続のソース IP アドレスが domain に関する MX クエリーの結果として得られたいずれかの IP アドレスに一致するかどうかを確認するように指示しています。+ は、一致した場合にこの結果が Pass になることを意味します。

a:colo.siroe.com/28 は、A レコードから colo.siroe.com を検索し、この SMTP 接続のソース IP アドレスが A レコードで指定されたのと同じ CIDR サブネット内にあるかどうかを (255.255.255.240 でマスクした) 28 ビットのみを比較することによって確認するように指示しています。修飾子文字が指定されていないので、一致した場合は結果が Pass になることを意味するデフォルトの + が使用されます。

最後の -all はほかのすべてに一致し、その結果は Fail になります。SPF レコードの詳細については、RFC 4408 (http://www.ietf.org/rfc/rfc4408.txt) を参照してください。

SPF 処理の結果には、いくつかの種類があります。次の表に、処理の結果とその説明を示します。

表 15–1 SPF 処理の結果

結果 

説明 

Pass

検索が成功しました。つまり、SPF レコードが見つかり、そのレコードによって、発信元のシステムが domain の使用を認可されていることが検証されました。

Fail

検索で一致する SPF レコードが見つかりましたが、そのレコードによって、SMTP クライアントに対する SMTP トランザクション中の domain の使用の認可が明示的に拒否されました。Sun の SPF 実装のデフォルト動作では、5xx 応答によって SMTP コマンドを拒否します。

SoftFail

検索で一致する SPF レコードが見つかり、そのレコードによって、SMTP クライアントに対する domain の使用の認可も拒否されましたが、この拒否は厳密なものではなく、そのレコードは完全な失敗を指示していません。Sun の実装のデフォルト動作では、メッセージを受け入れますが、Sieve 処理中などのその後の評価では、Received-SPF: ヘッダー内の SoftFailに注意してください。

Neutral

SPF レコードは、SMTP クライアントによる domain の使用の認可に関して何も要求していません。メッセージは受け入れられます。仕様では、Neutral を次の None と同じように処理することが要求されています。

None

一致する SPF レコードが見つからなかったため、SPF 処理は実行されませんでした。 

PermError

SPF 処理中に恒常的エラーが発生しました。たとえば、SPF レコードに構文エラーがあった場合や、(include: 機構や redirect= 修飾子による) 入れ子の SPF レコードを処理中に DNS 障害が発生した場合や、入れ子の SPF レコードを処理中に SPF 処理に関する制限値を超えた場合などです。デフォルトの動作では、5xx 応答によって SMTP コマンドを拒否します。

TempError

SPF 処理中に一時的エラーが発生しました。これは、ほとんどの場合、SPF レコード照会時の DNS タイムアウトが原因です。デフォルトの動作では、4xx 応答によって SMTP コマンドを拒否します。 

SPF 処理の完了後、SPF 処理の結果をドキュメント化するメッセージに Received-SPF: ヘッダーが書き込まれます。このヘッダーは、その後の検討における Sieve 処理の中で照会できます。option.dat ファイルの MTA オプション MM_DEBUG が有効 (>0) になっている場合は、拡張デバッグが利用可能です。