アドレスから最初のホストまたはドメイン仕様が抽出されると、MTA は書き換えルールを調べてその仕様の処理方法を明らかにします。ホストまたはドメイン仕様は、各ルールのパターン部分 (各ルールの左側) と比較されます。その場合、大文字と小文字の区別はありません。大文字と小文字の区別がないことは、RFC 822 で定められています。MTA では、特に大文字と小文字を区別しませんが、可能な限り元の状態が維持されます。
ホストまたはドメイン仕様がどのパターンにも一致しない場合は、ホストまたはドメイン仕様の最初の部分 (最初のドット文字より前の部分、通常はホスト名) がアスタリスク (*) に置き換えられ、その新しいホストまたはドメイン仕様が検索されます。ただし、その場合、検索対象となるのは設定ファイル内の書き換えルールだけで、ドメインデータベースは調べられません。
この試行が失敗に終わると、最初の部分が削除され、プロセスが繰り返されます。この試行も失敗に終わると、次の部分 (通常はサブドメイン) が削除され、再び検索が行われます。最初にアスタリスクを含めて検索が行われ、その後アスタリスクを含めずに検索が行われます。アスタリスクを含んだ検索が行われるのは設定ファイル内の書き換えルールテーブルだけで、ドメインデータベースは調べられません。このプロセスは、一致するルールが見つかるか、ホストまたはドメイン仕様全体がなくなるまで続けられます。このようなプロセスを使用することにより、指定した内容にもっとも近いドメインから始めて、徐々に広範なドメインを検索することができます。
ホストまたはドメイン仕様が比較文字列 spec_1 と spec_2 の初期値として使用されます(例: spec_1 = spec_2 = a.b.c)。
比較文字列 spec_1 は、一致するものが見つかるまで、まず設定ファイル内にある各書き換えルールのパターン部分が調べられ、次にドメインデータベース内が調べられます。このマッチングプロセスは、一致するものが見つかった時点で終了します。
一致するものが見つからなかった場合は、spec_2 のもっとも左側の部分 (アスタリスク以外) がアスタリスクに変換されます。たとえば、spec_2 が a.b.c の場合に一致するものが見つからなければ *.b.cに、spec_2 が *.b.c の場合に一致するものが見つからなければ *.*.c. に変換されます。このマッチングプロセスは、一致するものが見つかった時点で終了します。
一致するものが見つからなければ、比較文字列 spec_1 の最初の部分はドット文字も含めて削除されます。.c や c のように、spec_1 に 1 つの部分しかない場合は、文字列は 1 文字のドット文字「.」で置き換えられます。削除後の spec_1 文字列の長さがゼロでない場合は、動作 1 に戻ります。削除後の新しい文字列の長さがゼロの場合 (たとえば、置換後の文字列が「.」だった場合) は、検索プロセスが失敗に終わり、マッチングプロセスが終了します。
たとえば、アドレス dan@sc.cs.siroe.edu を書き換えるとします。これにより MTA は、指定した順に次のパターンを検索します。
sc.cs.siroe.edu *.cs.siroe.edu .cs.siroe.edu *.*.siroe.edu .siroe.edu *.*.*.edu .edu *.*.*.* . |