Sun Java System Messaging Server 6.3 管理ガイド

11.6.5 一般データベースの置換: $(...)

$(テキスト) 形式の置換シーケンスは、特殊な方法で処理されます。テキスト部分は、特殊な一般テキストデータベースにアクセスするためのキーとして使われます。このデータベースは、msg-svr-base/config/imta_tailor ファイル内の IMTA_GENERAL_DATABASE オプションで指定されているファイル (通常、msg-svr-base/db/generaldb.db ファイル) で構成されています。

「テキスト文字列」がデータベース内のエントリに一致すると、データベース内の対応するテンプレートがその文字列に置き換えられます。「テキスト文字列」がデータベース内のどのエントリにも一致しなかった場合は、書き換えプロセスが失敗に終わります。つまり、最初から何も一致しなかったのと同じ状態に戻ります。置き換えがうまくいくと、次にデータベースから抽出されたテンプレートに別の置換シーケンスが含まれていないかどうかが調べられます。ただし、再帰的参照のループを避けるために、抽出されたテンプレート内に別の $(テキスト) を含めることは禁じられています。

参照ループが発生する可能性があるからです。例として、次の書き換えルールに jdoe@siroe.siroenet というアドレスが一致した場合を考えてみます。

.SIROENET $($H)

まず、一般データベースで siroe というテキスト文字列が検索され、その結果 (見つかった場合) が書き換えルールのテンプレートとして用いられます。ここで、siroe の検索結果を $u%eng.siroe.com@siroenet. とします。この場合、テンプレートの出力は jdoe@eng.siroe.com (すなわち、ユーザー名 = jdoe、ホストまたはドメイン仕様 = eng.siroe.com) になり、ルーティングシステムは siroenet になります。

一般テキストデータベースは、正しい操作を行うためにだれでも読み取り可能でなければなりません。詳細は、「10.9.1 MTA テキストデータベース」を参照してください。