Sun Java System Messaging Server 6 2005Q4 管理ガイド

サイト提供ルーチンの置換 ($[...])

$[image,routine,argument] 形式の置換は特殊な方法で処理されます。image、routine、argument の各部分は、カスタマ提供のルーチンを見つけて呼び出すために使用されます。UNIX では、MTA は dlopen および dlsym を使って共有ライブラリ image からルーチン routine をダイナミックにロードし、呼び出します。そのとき、ルーチン routine は、次の引数を伴った関数として呼び出されます。


status = routine (argument, arglength, result, reslength)

argument および result は、252 バイトの文字列バッファーです。argument および result は、文字列へのポインタ (たとえば、C 言語での char* のように) として渡されます。arglength および reslength は、参照によって渡される符号付きの long 型整数です。入力時、argument にはマッピングテーブルテンプレートの argument 文字列が含まれ、arglength にはその文字列の長さが含まれます。値を返すときには、result に結果文字列が入り、reslength にその長さが入ります。この結果文字列が、マッピングテーブルテンプレート内の $[image,routine,argument] に置き換わります。routine は、マッピングテーブルの置換が失敗した場合には 0 を返し、成功した場合には -1 を返します。置換が失敗した場合は、通常、元の入力文字列がそのまま出力文字列として使用されます。

サイト提供ルーチンの置換を行うマッピングテーブルエントリで、$C$R、または $L などの処理制御メタキャラクタを使用する場合は、処理制御メタキャラクタをマッピングテーブルテンプレート内のサイト提供ルーチン置換の左側に配置します。そうしないと、マッピングテーブルの置換が「失敗」したときには、処理制御メタキャラクタが処理されません。

サイト提供ルーチンの呼び出し機構によって、MTA のマッピング処理はさまざまな方法で拡張することができます。たとえば、マッピングテーブル PORT_ACCESS または ORIG_SEND_ACCESS 内で、ロード監視サービスへの呼び出しを行い、その結果を使って接続やメッセージを受け入れるかどうかを決定することができます。

image (サイト提供の共有ライブラリイメージ) は、誰でも読み取り可能でなければなりません。