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

Pipe チャネルを使用してメッセージをプログラムに配信するには

メールをメールボックスで着信する代わりにプログラムに転送することができます。たとえば、着信メールをメールソートプログラムに転送することができます。pipe チャネルはサイト提供のユーザーごとのプログラムを使用してメッセージを配信します。

プログラムへの配信を行うには、まず pipe チャネルで呼び出すことができるプログラムを登録する必要があります。登録は imsimta program ユーティリティーを使って行います。このユーティリティーにより、pipe チャネルで呼び出すことができるように登録する各コマンドに一意の名前が設定されます。これによってエンドユーザーが mailprogramdeliveryinfo LDAP 属性の値としてメソッド名を指定できるようになります。

たとえば、UNIX の myprocmail コマンドをユーザーが呼び出せるプログラムとして追加するには、次の例に示すように、imsimta program ユーティリティーを使用してこのコマンドを登録します。この例では、-d username という引数を使用して procmail プログラムをユーザーとして実行する myprocmail プログラムが登録されます。

imsimta program -a -m myprocmail -p procmail -g "-d %s" -e user

programs ディレクトリ msg_svr_base/data/site-programs に実行ファイルが存在することを確認してください。また、実行権限が「others」に設定されていることも確認してください。

ユーザーがプログラムにアクセスするためには、そのユーザーの LDAP エントリに次の属性および値が含まれている必要があります。

maildeliveryoption: program 
mailprogramdeliveryinfo: myprocmail

imsimta program ユーティリティーの詳細については、『Sun Java System Messaging Server 6 2005Q4 Administration Reference』を参照してください。

その他の配信プログラムを使用する場合は、次の終了コードおよびコマンド行の引数に関する条件を満たしていることを確認してください。

終了コード条件: pipe チャネルが呼び出す配信プログラムは、チャネルがメッセージをキューから出すか、あとで処理するために配信するか、または返送するかを判断できるように、適切なエラーコードを返さなくてはなりません。

サブプロセスが終了コード 0 (EX_OK) で終了した場合は、メッセージが適切に配信されたと認識され、MTA のキューから削除されます。終了コード 71、74、75、または 79 (EX_OSERREX_IOERREX_TEMPFAIL、または EX_DB) で終了した場合は、一時的なエラーが発生したとみなされ、メッセージの配信は延期されます。その他のコードが返されると、メッセージは配信不能として差出人に返送されます。終了コードは、システムヘッダーファイル sysexits.h 内で定義されています。

コマンド行の引数: 可変引数 (%s) を含め、配信プログラムが使用できる引数の数に上限はありません。可変引数は、ユーザーが実行するプログラムの場合はユーザー名を、ポストマスター「inetmail」が実行するプログラムの場合はユーザー名 + ドメイン名を示します。たとえば、次のコマンド行は procmail プログラムを使用してメールを受取人に配信します。

/usr/lib/procmail -d %s