| Sun ONE Messaging Server 6.0 管理者ガイド |
第 11 章
定義済みチャネルを使用するチャネルによっては Messaging Server をインストールした時点ですでに定義されているものもあります (表 11-1 を参照)。この章では、MTA の定義済みチャネルの使い方を説明します。
この章を読む前に、第 8 章「MTA サービスと設定について」をお読みください。imta.cnf ファイルの書き換えルールを設定する方法については、第 9 章「書き換えルールを設定する」を参照してください。
この章には、以下の節があります。
defaults チャネルについては、「チャネルのデフォルトを設定する」を参照してください。
表 11-1 定義済みチャネル
チャネル
定義
defaults
各種チャネルにデフォルトのキーワードを指定するために使用する。「チャネルのデフォルトを設定する」を参照
l
UNIX 専用。ルーティングの決定および UNIX メールツールを使用したメール送信に使用する
ims-ms
メールをローカルストアに配信する
native
UNIX 専用。/var/mail にメールを配信する (Messaging Server では、/var/mail アクセスはサポートされない。ユーザーが /var/mail ストアのメールにアクセスするには、UNIX ツールを使う必要がある)
pipe
サイト提供のプログラムやスクリプトを介してメールを配信するために使用する。この pipe チャネルによって実行されるコマンドは、管理者が imsimta プログラムのインタフェースを通じて管理する
reprocess
process遅延メッセージのオフライン処理に使用されるチャネル。通常、reprocess チャネルはソースまたは宛先チャネルとして公にされない。process チャネルは、ほかの MTA チャネルと同様、公にされる
defragment
断片化された MIME メッセージの修復方法を提供する
conversion
MTA を通じて配信されるメッセージを本文部分ごとに変換する
bitbucket
破棄するメッセージに使用する
inactive/deleted
ディレクトリ内でのステータスが非アクティブまたは削除済みになっているユーザーへのメッセージの処理に使用する。通常、受信したメッセージを差出人に送り返し、カスタム返送メッセージを送る
hold
ユーザーへのメッセージを保留する。ユーザーがあるメールサーバーから別のサーバーに移行された場合などに使用する
sms
SMS ゲートウェイへの片方向電子メールをサポートする
tcp_local
tcp_intranet
tcp_auth
tcp_submit
tcp_tasTCP/IP の上位プロトコルとして SMTP を実装する。マルチスレッド TCP SMTP チャネルには、ディスパッチャ制御下のマルチスレッド SMTP サーバーが含まれる。送信された SMTP メールは、必要に応じてジョブコントローラの制御下で動作し、チャネルプログラム tcp_smtp_client によって処理される。
tcp_local はリモート SMTP ホストからのメールを受信する。メールを送信する場合は、スマートホスト / ファイアウォール設定が使われているかどうかによって、直接リモート SMTP ホストに送るか、またはスマートホストファイアウォールシステムに送る
tcp_intranet はイントラネット内のメールを送受信する
tcp_auth は tcp_local のスイッチチャネルとして使用される。認証されたユーザーは、リレーブロックの制約を回避するため tcp_auth チャネルに移される
tcp_submit は、送信されたメッセージ (通常の場合はユーザーエージェントからのメッセージ) を予約されている送信ポート 587 で受け入れる (RFC 2476 を参照)
tcp_tas は Unified Messaging を使用するサイト用の特殊なチャネルである
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" -euser
programs ディレクトリ msg_svr_base/data/site-programs に実行ファイルが存在することを確認してください。また、実行権限が「others」に設定されていることも確認してください。
ユーザーがプログラムにアクセスするためには、そのユーザーの LDAP エントリに以下の属性および値が含まれている必要があります。
maildeliveryoption:program
mailprogramdeliveryinfo:myprocmailimsimta program ユーティリティの詳細については、『Messaging Server リファレンスマニュアル』を参照してください。
その他の配信プログラムを使用する場合は、次の終了コードおよびコマンドラインの引数に関する条件を満たしていることを確認してください。
終了コード条件 : pipe チャネルが呼び出す配信プログラムは、チャネルがメッセージをキューから出すか、あとで処理するために配信するか、または返送するかを判断できるように、適切なエラーコードを返さなくてはなりません。
サブプロセスが終了コード 0 (EX_OK) で終了した場合は、メッセージが適切に配信されたと認識され、MTA のキューから削除されます。終了コード 71、74、75、または 79 (EX_OSERR、EX_IOERR、EX_TEMPFAIL、または EX_DB) で終了した場合は、一時的なエラーが発生したとみなされ、メッセージの配信は延期されます。その他のコードが返されると、メッセージは配信不能として差出人に返送されます。終了コードは、システムヘッダーファイル sysexits.h 内で定義されています。
コマンドラインの引数 : 可変引数 (%s) を含め、配信プログラムが使用できる引数の数に上限はありません。可変引数は、ユーザーが実行するプログラムの場合はユーザー名を、ポストマスター「inetmail」が実行するプログラムの場合はユーザー名 + ドメイン名を示します。たとえば、次のコマンドラインは procmail プログラムを使用してメールを受取人に配信します。
/usr/lib/procmail -d %s
ネイティブ (/var/mail) チャネルを設定するにはオプションファイルは、ローカルチャネルのさまざまな特徴を制御するために使用されます。このローカルチャネルのオプションファイルは MTA の設定ディレクトリに保存し、native_option という名前を付けなければなりません (例: msg_svr_base/config/native_option)。
オプションファイルは複数の行で構成されています。各行にはそれぞれ 1 つのオプション設定が含まれています。オプション設定は、次の形式で記述されています。
valueは、オプションの要件に応じて文字列または整数のいずれかとなります。
hold チャネルを使って一時的にメッセージを保留するにはhold チャネルは、一時的に受信不能になっている宛先へのメッセージを保留するためのチャネルです。一時的な受信不能の原因としては、ユーザー名が変更されている最中であったり、メールボックスが別のホストやドメインに移行されている最中であることが考えられます。その他の理由によってメッセージが一時保留される可能性もあります。
メッセージが保留される場合、メッセージは、reprocess チャネルに送られる場合と同じ方法で hold チャネル (msg_svr_base /queue/holdディレクトリ内) に送られます。この方法により、エンベロープ To: アドレスは変更されません。メッセージは hold チャネルキュー (msg-server/queue/hold ディレクトリ) に ZZxxx.HELD ファイルとして書き込まれます。これによって、メッセージはジョブコントローラから見えなくなるため、「保留」されることになります。imsimta qm dir -held コマンドを使用すると、.HELD ファイルの一覧を表示できます。保留メッセージは、imsimta qm -release コマンドを使用して選択および解除できます。解除すると、メッセージ名は ZZxxx.00 に変更され、ジョブコントローラに通知が行われます。その後メッセージは hold チャネルと関連付けられているマスタープログラム (reprocess.exe) で処理されます。したがって、メッセージ (および To: アドレス) は、通常の書き換え機能を使用して処理されます。
imsimta qm コマンドの詳細については、『Sun ONE Messaging Server Reference Guide』 を参照してください。
変換チャネルconversion チャネルを使うと、MTA を通じて配信されるメッセージで指定する本文部分ごとの変換を任意に行うことができます。(本文部分とメッセージは異なる。メッセージには複数の本文部分が含まれることがある。たとえば添付ファイルにも本文部分がある。また、本文部分は MIME ヘッダーによって指定および描写される)。変換処理は、サイトが提供した任意のプログラムやコマンド手順で行うことができます。処理内容には、テキストや画像形式の変換、ウィルススキャン、言語変換などがあります。MTA で通信するさまざまなメッセージ形式を変換することができ、特定の処理やプログラムをメッセージの本文部分に指定することができます。
この章を利用するには、チャネルの概念を理解している必要があります (「チャネル」を参照)。conversion チャネルを使ったウィルススキャンの補足情報は、Messaging Server マニュアルの Web サイトの下部にある Messaging Server のテクニカルノートを参照してください。
変換チャネルの実行には、A) 処理するメッセージ通信を選択し、B) 処理するメッセージの不一致の状態を特定する、という 2 つの手順があります。以下に詳細を説明します。
MIME の概要
変換チャネルは MIME (Multipurpose Internet Mail Extension) ヘッダー行を幅広く利用します。このため、メッセージ構築と MIME ヘッダーフィールドに関する知識が必要です。MIME の詳細については、RFC 1806、2045 〜 2049、2183 を参照してください。ここでは、MIME について簡単に説明します。
メッセージの構築
メッセージは基本的にヘッダーと本文で構成されています。ヘッダーはメッセージの最初にあり、日付、件名、差出人、受取人など、一定の制御情報を含んでいます。ヘッダーの後ろに空白行が入り、その後ろはすべて本文です。MIME では、複数の本文部分を持つさらに複雑なメッセージを作成する方法を指定します。本文部分を入れ子にすることもできます。このようなメッセージは複数部分メッセージと呼ばれ、すでに説明したように、メッセージの本文部分ごとに変換チャネルで変換されます。
MIME ヘッダー
MIME 仕様では、本文部分のヘッダー行が定義されています。ヘッダー行には、MIME-Version、Content-type、Content-Transfer-Encoding、Content-ID、および Content-disposition があります。変換チャネルでよく使用されるヘッダーは Content-type と Content-disposition です。以下に MIME ヘッダー行の例を示します
。
注
MIME ヘッダー行は、一般の MIME 以外のヘッダー行 (To:、Subject:、From: など) とは異なります。基本的に、変換チャネルの場合、MIME ヘッダー行は Content- という文字列で始まっています。
Content-type ヘッダー
MIME Content-Type ヘッダーは本文部分の内容を表します。Content-Type ヘッダー形式と実際の例を次に示します。
type は本文部分の内容の種類を表します。種類には、Text、Multipart、Message、Application、Image、Audio、Video などがあります。
subtype は コンテンツタイプをさらに詳しくしたものです。Content-type にはそれぞれ独自のサブタイプがあります。たとえば次のようなものがあります。text/plain、application/octet-stream、image/jpeg。MIME メールの Content Subtype は IANA (Internet Assigned Numbers Authority) で割り当てられ、一覧表示されています。割り当て一覧は http://www.isi.edu/in-notes/iana/assignments/media-types/media-types で参照することができます。
parameter は Content-type/subtype の組み合わせに固有のものです。たとえば、charset および name パラメータは以下のようになります。
charset パラメータでは、テキスト形式メッセージの文字セットを指定します。name パラメータでは、データをファイルに書き込む場合に使用するファイル名を指定します。
Content-disposition ヘッダー
MIME Content-disposition ヘッダーで本文部分のプレゼンテーション情報がわかります。通常、添付ファイルに追加され、添付ファイルの本文部分を表示するのか (inline)、コピーするファイル名として表示するのか (attachment) を指定します。Content-disposition ヘッダーの形式は次のとおりです。
Content-disposition: disposition_type; parameter1=value;parameter2=value...
disposition_type は通常 inline (本文部分を表示) または attachment (保存ファイルとして表示) です。attachment には通常パラメータ filename があり、ここでファイル保存で推奨される名前を指定します。
Content-disposition ヘッダーの詳細については、RFC 2183 を参照してください。
変換処理のトラフィックを選択する
MTA チャネルとは異なり、通常、変換チャネルはアドレスや MTA 書き換えルールでは指定されていません。代わりに、メッセージは CONVERSIONS マッピングテーブル (imta_tailor ファイルの IMTA_MAPPING_FILE パラメータで指定される) を使って変換チャネルに送られます。テーブルへのエントリには次のような形式があります。
MTA はそれぞれのメッセージを処理する際、CONVERSIONS マッピングテーブルがあれば使用します。source-channel がメッセージを発信するチャネルで、destination-channel がメッセージの宛先となるチャネルであるとすれば、CONVERT に続くアクションが実行されます (Yes を選択すると、MTA はメッセージを destination-channel から変換チャネルに変換。一致するものがなければ、メッセージは通常の宛先チャネルのキューに入る)。
注
user@conversion.localhostname または user@conversion という形式のアドレスは、CONVERSIONS マッピングテーブルにかかわらず、変換チャネルを通してルーティングされます。
以下の例では、発信元も宛先もインターネットである非内部メッセージをすべて変換チャネルにルーティングします。
最初の行は tcp_local チャネルから受信するメッセージを処理します。次の行は tcp_local チャネルに送信するメッセージを処理します。tcp_local チャネルはインターネットで送受信するメッセージをすべて処理します。デフォルトでは変換チャネルを経由しないので、ほかのメッセージが変換チャネルを通ることはありません。
これは基本テーブルです。複数のインターネット送信用 tcp_* チャネルを使う場合や、複数のインターネット受信用 tcp_* チャネルを使う場合など、カスタマイズされた設定のサイトでは不十分な場合もあります。
変換処理を制御するには
メッセージは変換チャネルに送信されると、本文部分ごとに処理されます。処理は MTA conversions ファイルによって制御されます。このファイルはimta_tailor ファイル (デフォルトの場合: msg_svr_base/conversions) の IMTA_CONVERSION_FILE オプションで指定します。エントリを構成する conversions ファイルで、どの形式の本文部分をどのように処理するかを制御します。
各エントリは 1 つまたは複数の行で構成され、各行には 1 つまたは複数の name=value パラメータ句が含まれています。パラメータ句の値は MIME ルールに一致しています。最終行以外のすべての行は、セミコロン (;) で終了する必要があります。このファイルでは、一行に入力できる文字数が 252 バイトに制限されています。円記号 (¥) を継続文字として使用すれば、1 つの論理行を複数の行に分割することができます。エントリは、セミコロンで終了していない行や空白行が 1 行以上挿入されているところで終了します。
conversion ファイルエントリの簡単な例を次に示します。
コード例 11-1 conversion ファイルエントリ
out-chan=ims-ms; in-type=application; in-subtype=wordperfect5.1;
out-type=application; out-subtype=msword; out-mode=block;
command="/usr/bin/convert -in=wordp -out=msword 'INPUT_FILE' ¥ 'OUTPUT_FILE'"
out-chan=ims-ms; in-type=application; in-subtype=wordperfect5.1 は本文部分を表します。つまり変換される部分の種類を指定しています。各部分のヘッダーが読み取られ、Content-Type: とその他のヘッダー情報が抽出されます。次に conversion ファイルのエントリが最初から最後まで順番にスキャンされます。その際、in-* パラメータや OUT-CHAN パラメータがあればチェックされます。すべてのパラメータが処理中の本文部分に対応する情報と一致すれば、command= や delete= 句で指定した変換が実行され、out-* パラメータが設定されます。
一致するものがなければ、その本文部分は次の conversions ファイルエントリと照合されます。本文部分がすべてスキャンされ処理されると、一致するものがあった場合は、メッセージは次のチャネルに送られます。一致するものがなければ、何も処理されないまま、メッセージは次のチャネルに送られます。
out-chan=ims-ms は、ims-ms チャネル宛のメッセージ部分だけを変換するように指定します。in-type=application および in-subtype=wordperfect5.1 により、メッセージ部分の MIME Content-type ヘッダーは application/wordperfect5.1 に指定されます。
メッセージ部分に in-* パラメータを追加すると詳細に指定することができます (表 11-6 を参照)。このエントリは、次のような MIME ヘッダー行を持つメッセージ部分の変換アクションをトリガします。
Content-type:APPLICATION/wordperfect5.1;name=Draft1.wpc
Content-transfer-encoding:BASE64
Content-disposition:attachment; filename=Draft1.wpc
Content-description:"Project documentation Draft1 wordperfect format"
3 つの conversion ファイルがコード例 11-1 のパラメータを指定したら、次の 2 つのパラメータ out-type=application および out-subtype=msword は置換 MIME ヘッダー行を「処理済み」の本文部分に添付するよう指定します。out-type=application および out-subtype=msword は、送信メッセージの MIME Content-type/subtype が application/msword となるように指定します。
in-type と out-type は同じパラメータなので out-type=application は必要ありません。変換チャネルのデフォルトは送信本文部分の元の MIME ラベルであるからです。送信本文部分の MIME ラベルを追加するには、出力パラメータを指定します。
out-mode=block (コード例 11-1) は、サイト提供のプログラムが返すファイル形式を指定します。つまり、ファイルの保存方法と、変換チャネルが返されたファイルを読み取る方法を指定します。たとえば、html ファイルはテキストモードで保存されますが、.exe プログラムや zip ファイルはブロックまたはバイナリモードで保存されます。モードは、読み取り中のファイルが一定の保存形式にあることを表しています。
コード例 11-1 の最後のパラメータ
command="/usr/bin/convert -in=wordp -out=msword 'INPUT_FILE' 'OUTPUT_FILE'"
は、本文部分でのアクションを指定します。
command= パラメータは、本文部分でプログラムが実行されることを指定します。/usr/bin/convert は架空のコマンド名です。-in=wordp および -out=msword は入力テキストと出力テキストの形式を指定する架空のコマンドライン引数です。INPUT_FILE および OUTPUT_FILE は、元の本文部分を持つファイルと変換後の本文部分を保存するプログラムがあるファイルとを指定する変換チャネル環境パラメータ (「変換チャネル環境変数の使い方」を参照) です。
本文部分でコマンドを実行する代わりに、command パラメータの場所に DELETE=1 を使えばメッセージ部分を簡単に削除することができます。
注
conversions ファイルを変更した場合は、必ず設定をコンパイルしなおしてください (『Sun ONE Messaging Server リファレンスマニュアル』の imsimta refresh コマンドを参照)。
変換チャネルの情報フロー
情報フローは次のようになります。本文部分を含むメッセージが変換チャネルに入ってきます。変換チャネルはメッセージをパースして、本文部分を 1 つずつ処理します。次に変換チャネルは本文部分が適格であるかどうかを判断します。つまり、MIME ヘッダー行を指定パラメータと比較して処理するかどうかを決定します。本文部分が適格であると判断されれば、変換処理が始まります。MIME や本文部分の情報を変換スクリプトに渡す場合は、「情報引き渡しパラメータ」で指定した環境変数 (表 11-3) に保存します。
この時点で、「アクションパラメータ」で指定したアクションを本文部分に実行します。一般的には、本文部分を削除するか、スクリプトで囲んだプログラムに渡します。本文部分はスクリプトで処理されると変換チャネルに戻され、処理後のメッセージに組み込まれます。スクリプトは、変換チャネルの「出力オプション」を使って情報を変換チャネルに送信することもできます。この情報には、出力本文部分に追加する新しい MIME ヘッダー行、メッセージの差出人に返送するエラーテキスト、MTA にメッセージのバウンス、削除、保留などのアクション開始を指示する命令などがあります。
最後に、変換チャネルは「出力パラメータ」で指定されたように出力本文部分のヘッダー行を置き換えます。
変換チャネル環境変数の使い方
メッセージ本文部分を処理する場合、MIME ヘッダー行情報や本文部分全体をサイト提供のプログラムとやり取りすると便利なことがあります。たとえば、あるプログラムでメッセージ本文部分以外に Content-type と Content-disposition ヘッダー行情報が必要であるとします。一般にサイト提供のプログラムに入力されているのは、主にファイルから読み取るメッセージ本文部分です。プログラムで本文部分が処理されると、変換チャネルが読み取りファイルに書き込まれます。このような情報の受け渡しは、変換チャネル環境変数を使って行われます。
環境変数は、parameter-symbol-* パラメータや定義済みの変換チャネル環境変数のセット (表 11-4 を参照) を使って、conversions ファイルで作成することができます。
次の conversions ファイルエントリと受信ヘッダーでは、サイト提供のプログラムに環境変数を使って MIME 情報を渡す方法が示されています。
conversions ファイルエントリ :
in-channel=*; in-type=application; in-subtype=*;
parameter-symbol-0=NAME; parameter-copy-0=*;
dparameter-symbol-0=FILENAME; dparameter-copy-0=*;
message-header-file=2; original-header-file=1;
override-header-file=1; override-option-file=1;
command="/bin/viro-scan500.sh 'INPUT_FILE' 'OUTPUT_FILE'"
受信ヘッダー :
Content-type: APPLICATION/msword; name=Draft1.doc
Content-transfer-encoding:BASE64
Content-disposition: attachment; filename=Draft1.doc
Content-description:"Project documentation Draft1 msword format"
in-channel=*; in-type=application; in-subtype=* は、application 形式の任意の入力チャネルから受信したメッセージ本文部分が処理されることを示します。
parameter-symbol-0=NAME は、最初の Content-type パラメータの値 (この例では Draft1.doc) が NAME という環境変数に保存されることを示します。
parameter-copy-0=* は、入力本文部分の Content-type パラメータがすべて出力本文部分にコピーされることを示します。
dparameter-symbol-0=FILENAME は、最初の Content-disposition パラメータの値 (この例では Draft1.doc) が FILENAME という環境変数に保存されることを示します。
dparameter-copy-0=* は、入力本文部分の Content-disposition パラメータがすべて出力本文部分にコピーされることを示します。
message-header-file=2 は、メッセージの元のヘッダー全体 (最初と最後のメッセージヘッダー) が環境変数 MESSAGE_HEADERS で指定したファイルに書き込まれることを示します。
original-header-file=1 は、封入する MESSAGE/RFC822 部分の元のヘッダーが環境変数 INPUT_HEADERS で指定したファイルに書き込まれることを示します。
override-header-file=1 は、MIME ヘッダーが環境変数 OUTPUT_HEADERS で指定したファイルから読み取られ、封入する MIME 部分の元の MIME ヘッダー行を無視することを示します。$OUTPUT_HEADERS は、変換実行中に作成される実行時テンポラリファイルです。このファイルはサイト提供のプログラムで使用され、変換処理中に変更された MIME ヘッダー行が保存されます。本文部分が変換チャネルで再構築される際に、このファイルから MIME ヘッダー行が読み取られます。変更できるのは MIME ヘッダー行のみです。MIME 以外の一般のヘッダー行は、変換チャネルで変更できません。
override-option-file=1 は、変換チャネルが OUTPUT_OPTIONS 環境変数によって名前が付けられたファイルから変換チャネルのオプションを読み取ることを表します。「変換チャネル出力オプションを使用するには」を参照してください。
command="msg_svr_base/bin/viro-scan500.sh" は、メッセージ本文部分で実行するコマンドを示します。
表 11-3 変換チャネル環境変数
環境変数
説明
INPUT_ENCODING
元の本文部分に存在するエンコーディング
INPUT_FILE
元の本文部分を含むファイルの名前。サイト提供のプログラムはこのファイルを読み取る
INPUT_HEADERS
本文部分の元のヘッダー行を含むファイルの名前。サイト提供のプログラムはこのファイルを読み取る
INPUT_TYPE
入力メッセージ部分の MIME Content-type
INPUT_SUBTYPE
入力メッセージ部分の MIME コンテンツサブタイプ
INPUT_DESCRIPTION
入力メッセージ部分の MIME content-description
INPUT_DISPOSITION
入力メッセージ部分の MIME content-disposition
MESSAGE_HEADERS
封入するメッセージ (本文部分だけに限らない) の元の一番外側のヘッダーまたは本文部分がすぐに封入する MESSAGE/RFC822 部分のヘッダーを含むファイル名。サイト提供のプログラムはこのファイルを読み取る
OUTPUT_FILE
サイト提供のプログラムがその出力を保存するファイル名。サイト提供のプログラムはこのファイルを作成して書き込む
OUTPUT_HEADERS
サイト提供のプログラムが封入する部分の MIME ヘッダー行を保存するファイル名。サイト提供のプログラムはこのファイルを作成して書き込む。ファイルには、option=value 行ではなく実際の MIME ヘッダー行が含まれ、最後の行は空白行となる。また、変更できるのは MIME ヘッダー行のみ。MIME 以外の一般のヘッダー行は、変換チャネルで変更できない
OUTPUT_OPTIONS
サイト提供のプログラムで変換チャネルオプションを読み取るファイル名。「変換チャネル出力オプションを使用するには」を参照
変換チャネル出力オプションを使用するには
変換チャネル出力オプション (表 11-4) は動的な変数で、変換スクリプトから変換チャネルに情報と特定の指示を渡します。たとえば、本文部分の処理中にメッセージをバウンスさせてスクリプトから変換チャネルに指示を出し、返送メッセージに「このメッセージにはウィルスが含まれている」というエラーテキストを追加させることができます。
出力オプションは、指定した変換エントリに OVERRIDE-OPTION-FILE=1 を設定すると開始されます。次に必要に応じて出力オプションはがスクリプトで設定され、環境変数ファイル OUTPUT_OPTIONS に保存されます。このスクリプトが本文部分の処理を終了すると、変換チャネルは OUTPUT_OPTIONS ファイルからオプションを読み取ります。
OUTPUT_OPTION 変数は、変換チャネルがオプションを読み取るファイル名です。通常、この変数は情報を渡す実行時テンポラリファイルとして使用されます。以下に、出力オプションを使ってウィルスを送信した差出人にエラーメッセージを返すスクリプトの例を示します。
/usr/local/bin/viro_screen2k $INPUT_FILE # run the virus screener
if [ $?-eq 1 ]; then
echo "OUTPUT_DIAGNOSTIC=彪irus found and deleted.�� > $OUTPUT_OPTIONS
echo "STATUS=178029946" >> $OUTPUT_OPTIONS
else
cp $INPUT_FILE $OUTPUT_FILE # Message part is OK
fi
この例では、$OUTPUT_OPTIONS で定義されたファイルにシステム診断メッセージとステータスコードが追加されます。$OUTPUT_OPTIONS テンポラリファイルを読み出すと、次のように表示されます。
OUTPUT_DIAGNOSTIC="Virus found and deleted."
STATUS=178029946OUTPUT_DIAGNOSTIC='Virus found and deleted' の行は、メッセージに「Virus found and deleted」というテキストを追加するように変換チャネルに指示していることを表します。
178029946 は msg_svr_base/include/deprecated/pmdf_err.h にある pmdf_err.h ファイルごとの PMDF__FORCERETURN ステータスです。このステータスコードは、差出人にメッセージを返送するように変換チャネルに指示しています。特定の指示の使い方については 「変換チャネル出力を使ってメッセージのバウンス、削除、保留を行うには」を参照してください。
出力オプションのリストを以下に示します。
表 11-4 変換チャネル出力オプション
オプション
説明
OUTPUT_TYPE
出力メッセージ部分の MIME コンテンツタイプ
OUTPUT_SUBTYPE
出力メッセージ部分の MIME コンテンツサブタイプ
OUTPUT_DESCRIPTION
出力メッセージ部分の MIME コンテンツの説明
OUTPUT_DIAGNOSTIC
変換チャネルによってメッセージが強制的にバウンスされる場合、差出人に送信するメッセージの一部に含まれるテキスト
OUTPUT_DISPOSITION
出力メッセージ部分の MIME content-disposition
OUTPUT_ENCODING
MIME content transfer encoding で、出力メッセージ部分で使用される
OUTPUT_MODE
変換チャネルが出力メッセージ部分を書き出す際に使用する MIME Mode で、受取人が出力メッセージ部分を読み取る際に使用するモード
STATUS
コンバータの終了ステータス。通常は、変換チャネルの何らかの動作を開始する特殊な指示。すべての指示のリストは msg_svr_base/include/deprecated/pmdf_err.h を参照
封入する MESSAGE/RFC822 部分のヘッダー
メッセージ部分で変換を実行する場合、変換チャネルは封入する MESSAGE/RFC822 部分のヘッダーにアクセスします。封入された MESSAGE/RFC822 部分がない場合は、メッセージヘッダーにアクセスします。ヘッダーの情報はサイト提供のプログラムに役立つことがあります。
ORIGINAL-HEADER-FILE=1 を含むエントリが選択されると、封入する MESSAGE/RFC822 部分の元のヘッダー行はすべて OUTPUT_HEADERS 環境変数で表したファイルに書き込まれます。OVERRIDE-HEADER-FILE=1 であれば、変換チャネルは OUTPUT_HEADERS 環境変数で表したファイルの内容を読み取り、封入された部分のヘッダーとして使用します。
変換エントリからマッピングテーブルに呼び出すには
out-parameter-* 値は、任意に名前を設定したマッピングテーブルに保存したり、検索したりすることができます。この機能は、クライアントが送信する添付ファイル名を変更する場合に便利です。クライアントが送信する場合は、添付ファイルの種類 (postscript、msword、text など) にかかわらず、att.dat のような汎用名が使用されるからです。ほかのクライアント (たとえば Outlook) が拡張子を読み取ってその部分が開けるように、その部分の名前を変更する一般的な方法です。
マッピングテーブルからパラメータ値を検索する構文は次のとおりです。
'mapping-table-name:mapping-input[$Y, $N]'
$Y はパラメータ値を返します。何も見つからなかった場合や一致するものとして $N が返された場合、変換ファイルのエントリ内のパラメータは、無視されるか空白文字列として扱われます。一致するものがない場合や $N の場合は、変換エントリ自体が強制終了します。
次のようなマッピングテーブルがあるとします。
このマッピングテーブルの変換エントリは次のとおりで、添付ファイルの指定ファイル名を汎用ファイル名に置換します。
out-chan=tcp_local; in-type=application; in-subtype=*;
in-parameter-name-0=name; in-parameter-value-0=*;
out-type=application; out-subtype='INPUT-SUBTYPE';
out-parameter-name-0=name;
out-parameter-value-0="'X-ATT-NAMES:¥¥'INPUT_SUBTYPE¥¥''";
command="cp 'INPUT_FILE' 'OUTPUT_FILE'"
この例で out-chan=tcp_local; in-type=application; in-subtype=* は、処理するメッセージが tcp_local チャネルからのもので、application/* の content-type ヘッダーが含まれていることを示します (* は任意のサブタイプ)。
また in-parameter-name-0=name; in-parameter-value-0=* は、メッセージにパラメータ形式として name=* が含まれていることを示します (* は任意のパラメータ値)。
out-type=application; は、メッセージ処理後の MIME Content-type パラメータが application であることを示します。
out-subtype='INPUT-SUBTYPE'; は、本文部分処理後の MIME subtype パラメータが INPUT-SUBTYPE 環境変数であることを示しています。これは入力 subtype のオリジナル値です。次のように変更できます。
Content-type:application/xxxx; name=foo.doc
から
Content-type:application/msword; name=foo.doc
に変更する場合は、次のようにします。
out-type=application; out-subtype=msword
out-parameter-name-0=name; は、出力本文部分の最初の MIME Content-type パラメータが name= 形式であることを示します。
out-parameter-value-0='X-ATT-NAMES:¥¥'INPUT_SUBTYPE¥¥''; は、最初の MIME subtype パラメータ値をとり、マッピングテーブル X-ATT-NAMES で subtype と一致するものを検索します。一致するものがあれば、name パラメータは X-ATT-NAMES マッピングテーブルで指定された新しい値を受け取ります。つまりパラメータの形式が msword であれば、name パラメータは temp.DOC になります。
変換チャネル出力を使ってメッセージのバウンス、削除、保留を行うには
この節では、変換チャネルのオプションを使ってメッセージのバウンス、削除、保留を行う方法を説明します。基本手順は次のとおりです。
すべての指示のリストは msg_svr_base/include/deprecated/pmdf_err.h を参照してください。以下に、変換チャネルでよく使用される指示を示します。
表 11-5 変換チャネルで一般的に使用される特殊な指示
名前
16 進数値
10 進数値
PMDF__FORCEHOLD
0x0A9C86AA
178030250
PMDF__FORCERETURN
0x0A9C857A
178029946
PMDF__FORCEDELETE
0x0A9C8662
178030178
指示の関数を例を用いて説明します。
メッセージをバウンスさせるには
変換チャネルを使ってメッセージをバウンスさせるには、該当する conversions ファイルエントリに OVERRIDE-OPTION-FILE=1 を設定し、変換スクリプトに次の行を追加します。
echo "STATUS=178029946" >> $OUTPUT_OPTIONS
バウンスさせるメッセージに短いテキスト文字列を追加する場合は、変換スクリプトに次の行を追加します。
echo OUTPUT_DIAGNOSTIC=text-string >> $OUTPUT_OPTIONS
次にテキスト文字列の例を示します。"お使いのマシンから送信されたメッセージにはウィルスが含まれていましたが、削除されました。電子メールの添付ファイルを実行する場合は注意してください。
メッセージ部分を条件付きで削除するには
メッセージ部分は、含まれている内容によって条件付きで削除すると便利な場合があります。これは出力オプションで実行できます。逆に、DELETE=1 変換パラメータ句を使うとメッセージ部分が無条件に削除されます。
出力オプションを使ってメッセージ部分を削除するには、該当するファイルエントリに OVERRIDE-OPTION-FILE=1 を設定し、変換スクリプトに次の行を追加します。
echo "STATUS=178030178" >> $OUTPUT_OPTIONS
メッセージを保留にするには
メッセージは、含まれている内容によって条件付きで保留にすると便利な場合があります。出力オプションを使ってメッセージ部分を削除するには、該当するファイルエントリに OVERRIDE-OPTION-FILE=1 を設定し、変換スクリプトに次の行を追加します。
echo "STATUS=178030250" >> $OUTPUT_OPTIONS
これにより、変換チャネルキューに .HELD ファイルとしてメッセージを保留にするように、変換チャネルに指定します。
変換チャネルの例
以下の例にある CONVERSIONS マッピングと変換ルールのセットを使うと、架空のチャネル tcp_docuprint に送られた GIF、JPEG、BITMAP ファイルが自動的に PostScript に変換されます。変換の際には架空の /usr/bin/ps-converter.sh が使用されることもあります。この例には、WordPerfect 5.1 ファイルを Microsoft Word ファイルに変換するルールも含まれています。
!
out-chan=ims-ms; in-type=application; in-subtype=wordperfect5.1;
out-type=application; out-subtype=msword; out-mode=block;
command="/bin/doc-convert -in=wp -out=msw 'INPUT_FILE' 'OUTPUT_FILE'"
out-chan=tcp_docuprint; in-type=image; in-subtype=gif;
out-type=application; out-subtype=postscript; out-mode=text;
command="/bin/ps-convert -in=gif -out=ps 'INPUT_FILE' 'OUTPUT_FILE'"
out-chan=tcp_docuprint; in-type=image; in-subtype=jpeg;
out-type=application; out-subtype=postscript; out-mode=text;
command="/bin/ps-convert -in=jpeg -out=ps 'INPUT_FILE' 'OUTPUT_FILE'"
out-chan=tcp_docuprint; in-type=image; in-subtype=bitmap;
out-type=application; out-subtype=postscript; out-mode=text;
command="/bin/ps-convert -in=bmp -out=ps 'INPUT_FILE' 'OUTPUT_FILE'"
表 11-6 変換パラメータ
パラメータ
説明
指定用パラメータ (変換する前にメッセージを照合するパラメータを指定)
OUT-CHAN,
OUT-CHANNEL変換用に照合するチャネルを出力する (ワイルドカード使用可)。このエントリで指定した変換は、メッセージが指定したチャネルに送信される場合にのみ実行される
IN-CHAN,
IN-CHANNEL変換用に照合するチャネルを入力する (ワイルドカード使用可)。このエントリで指定した変換は、メッセージが指定したチャネルから送信される場合にのみ実行される
IN-TYPE
変換用に照合する MIME タイプを入力する (ワイルドカード使用可)。このエントリで指定した変換は、このフィールドが本文部分の MIME タイプに一致した場合にのみ実行される
IN-SUBTYPE
変換用に照合する MIME サブタイプを入力する (ワイルドカード使用可)。このエントリで指定した変換は、このフィールドが本文部分の MIME サブタイプに一致した場合にのみ実行される
IN-PARAMETER-NAME-n
変換用に照合する MIME Content-Type パラメータ名を入力する。n = 0, 1, 2.... である。このパラメータを IN-PARAMETER-VALUE-n とともに使用すると、名前と値からパラメータを特定できる
IN-PARAMETER-VALUE-n
対応する IN-PARAMETER-NAME の MIME Content-Type パラメータ値を入力して変換用に照合する。このエントリで指定した変換は、このフィールドが本文部分の Content-Type パラメータリストの対応するパラメータに一致した場合にのみ実行される。ワイルドカードが使用可能
IN-PARAMETER-DEFAULT-n
パラメータがない場合に、MIME Content-Type パラメータのデフォルト値を入力する。本文部分に IN-PARAMETER-VALUE-n が指定されていない場合に、IN-PARAMETER-VALUE-n テストのデフォルト値として使用される
IN-DISPOSITION
変換用に照合する MIME Content-Disposition を入力する
IN-DPARAMETER-NAME-n
変換用に照合する MIME Content-Disposition パラメータ名を入力する。n = 0, 1, 2.... である。このパラメータを IN-DPARAMETER-VALUE-n とともに使用すると、名前と値からパラメータを特定できる
IN-DPARAMETER-VALUE-n
対応する IN-DPARAMETER-NAME の MIME Content-Disposition パラメータ値を入力して変換用に照合する。このエントリで指定した変換は、このフィールドが本文部分の Content-Disposition: パラメータリストにある対応パラメータに一致した場合にのみ実行される。ワイルドカードが使用可能
IN-DPARAMETER-DEFAULT-n
パラメータがない場合に、MIME Content-Disposition パラメータのデフォルト値を入力する。本文部分に IN-DPARAMETER-VALUE-n が指定されていない場合に、IN-DPARAMETER-VALUE-n テストのデフォルト値として使用される
IN-DESCRIPTION
変換用に照合する MIME Content-Description を入力する
IN-SUBJECT
封入する MESSAGE/RFC822 部分から件名を入力する
出力パラメータ (本文部分の変換後の出力設定を指定)
OUT-TYPE
出力 MIME タイプが入力 MIME タイプと異なる場合に、MIME タイプを出力する
OUT-SUBTYPE
出力 MIME サブタイプが入力サブタイプと異なる場合に、MIME サブタイプを出力する
OUT-PARAMETER-NAME-n
MIME Content-Type パラメータ名を出力する。n = 0, 1, 2, ...
OUT-PARAMETER-VALUE-n
OUT-PARAMETER-NAME-n に対応する MIME Content-Type パラメータの値を出力する
PARAMETER-COPY-n
本文入力部分の Content-Type パラメータリストから本文出力部分の Content-Type: パラメータリストにコピーする Content-Typeパラメータのリスト。n = 0, 1, 2 ....。IN-PARAMETER-NAME-n 句で一致した MIME パラメータ名と同じパラメータ名を使用してコピーする
OUT-DISPOSITION
出力 MIME Content-Description が入力 MIME Content-Disposition と異なる場合に、MIME Content- Disposition を出力する
OUT-DPARAMETER-NAME-n
MIME Content-Disposition パラメータ名を出力する。n=0, 1, 2...
OUT-DPARAMETER-VALUE-n
OUT-DPARAMETER-NAME-n に対応する MIME Content-Disposition パラメータの値を出力する
DPARAMETER-COPY-n
本文入力部分の Content-Disposition: パラメータリストから本文出力部分の Content-Disposition: パラメータリストにコピーするための Content-Disposition: パラメータリスト。n = 0, 1, 2,...。IN-PARAMETER-NAME-n 句で一致した MIME パラメータ名を引数としてコピーする。引数にはワイルドカードを使用することができる。特に、* という引数を使用すると、元の Content-Disposition: パラメータはすべてコピーされる
OUT-DESCRIPTION
出力 MIME Content-Description が入力 MIME Content-Description と異なる場合に、MIME Content-Description を出力する
OUT-MODE
変換ファイルを読み取って保存するモード。BLOCK (バイナリ形式および実行型形式) と TEXT がある
OUT-ENCODING
メッセージが再組立されるときに、変換ファイルに適用するエンコード
アクションパラメータ (メッセージ部分のアクションを指定)
COMMAND
変換を実行するためのコマンドで、このパラメータは必須。コマンドが指定されていない場合、このエントリは無視される。パスの指定には「¥」ではなく「/」を使用する。
例 : command="D:/tmp/mybat.bat"
DELETE
0 または 1 に設定する。このフラグが設定されている場合は、メッセージ部分は削除される。(メッセージにこの部分しかない場合は、1 つの空白のテキスト部分に置き換えられる)
RELABEL
RELABEL=1 では、Output パラメータで指定した MIME ラベルに変更される。Relabel=0 では何も変更されない。通常、ラベルの変更は間違ったラベルが付いている部分に対して行う (たとえば Content-type:application/octet-stream から Content-type:application/msword への変更)。これによってユーザーは、その部分をファイルに保存してプログラムで開かなくても、「ダブルクリック」で開くことができる
SERVICE-COMMAND
SERVICE-COMMAND=command は、MIME メッセージ全体 (MIME ヘッダーと内容本文部分) で動作するサイト提供の手順を実行する。また、ほかの CHARSET-CONVERSION 操作や変換チャネルの操作とは異なり、サービスコマンドは独自で MIME 逆アセンブリ、デコード、再エンコード、および再アセンブリを行う。このフラグが付いていると、変換チャネルの処理中にエントリが無視される。その代わり、SERVICE-COMMAND エントリは文字セット変換の処理中に実行される。パスの指定には「¥」ではなく「/」を使用する。
例 : command="D:/tmp/mybat.bat"
TAG
メーリングリスト CONVERSION_TAG パラメータで設定されているタグを入力する
情報引き渡しパラメータ (サイト提供プログラムと情報のやりとりを行う)
DPARAMETER-SYMBOL-n
Content-disposition パラメータ値が存在する場合に保存される環境変数。n = 0, 1, 2,...。各 DPARAMETER-SYMBOL-n は、Content-Disposition: パラメータリストから順番に (たとえば n=0 は最初のパラメータ、n=2 は 2 番目のパラメータ) 抽出され、指定した環境変数に使用してサイト提供のプログラムを実行する
PARAMETER-SYMBOL-n
Content-Type パラメータ値が存在する場合に保存される環境変数。n = 0, 1, 2...。各 PARAMETER-SYMBOL-n は、Content-Type: パラメータリストから順番に (たとえば n=0 は最初のパラメータ、n=2 は 2 番目のパラメータ) 抽出され、同じ名前の環境変数に使用してサイト提供のプログラムを実行する。IN-PARAMETER-NAME-n 句で一致した MIME パラメータ名に変換する変数名を引数とする
MESSAGE-HEADER-FILE
環境変数 MESSAGE_HEADERS で指定したファイルに対してメッセージの元のヘッダーをすべてまたは一部書き込む。書き込まない場合もある。1 に設定するとすぐに本文部分を封入する元のヘッダーは環境変数 MESSAGE_HEADERS で指定したファイルに書き込まれる。2 に設定すると、メッセージの元のヘッダー全体 (最初と最後のメッセージヘッダー) がファイルに書き込まれる
ORIGINAL-HEADER-FILE
0 または 1 に設定する。1 に設定した場合は、封入する MESSAGE/RFC822 部分の元のヘッダー (本文部分ではない) が環境変数 OUTPUT_HEADERS で表されるファイルに書き込まれる
OVERRIDE-HEADER-FILE
0 または 1 に設定する。1 に設定した場合は、MIME ヘッダー行は変換チャネルによって環境変数 OUTPUT_HEADERS から読み取られ、封入する MIME 部分の元のヘッダー行を無視する
OVERRIDE-OPTION-FILE
OVERRIDE-OPTION-FILE=1 の場合、変換チャネルは OUTPUT_OPTIONS 環境変数のオプションを読み取る
PART-NUMBER
ドット文字を伴った整数で a. b. c... のように表示される。MIME 本文部分の番号を示す
文字セット変換とメッセージの再フォーマットMessaging Server の基本的なマッピングテーブルの 1 つに、文字セット変換テーブルがあります。このテーブルの名前は CHARSET-CONVERSIONです。チャネル間における文字セット変換やメッセージフォーマット変換の種類を指定するために使用されます。
多くのシステムでは、文字セットおよびメッセージフォーマットの変換は不必要なため、このテーブルが使われることはありません。しかし、文字セット変換の必要性が生じる場合もあります。
CHARSET-CONVERSION マッピングテーブルは、メッセージのフォーマットを変更するためにも使われます。MIME 以外のいくつかのフォーマットを MIME に変換する機能が提供されます。MIME エンコードおよび構造に変更を加えることもできます。これらのオプションは、MIME または MIME のサブセットだけをサポートするシステムにメッセージを送る際に使用されます。また、場合によっては、MIME フォーマットから非 MIME フォーマットへの変換も可能です。
MTA は 2 つの方法によって CHARSET-CONVERSION マッピングテーブルをプローブします。1 回目のプローブは、MTA がメッセージフォーマットを変換すべきか、また変換する場合はどのフォーマットオプションを使用すべきかを決定するために実行されます (フォーマット変換が指定されていない場合、特定の文字セットへの変換に関するチェックは行われない)。このプローブには、以下のような形式の入力文字列が使用されます。
IN-CHAN=in-channel;OUT-CHAN=out-channel;CONVERT
in-channel はソースチャネル (メッセージの送信元)、out-channel は宛先チャネル (メッセージの送信先) です。一致するソースチャネルおよび宛先チャネルがある場合は、その結果がカンマで区切られたキーワードリストの文字列として表示されます。表 11-7 にキーワードの一覧を示します。
表 11-7 CHARSET-CONVERSION マッピングテーブルのキーワード
キーワード
説明
Always
out-channel に送信する前にメッセージが変換チャネルを通過する場合でも、変換を実行する
Appledouble
Appledouble フォーマット以外の MacMIME フォーマットを Appledouble フォーマットに変換する
Applesingle
Applesingle フォーマット以外の MacMIME フォーマットを Applesingle フォーマットに変換する
BASE64
MIME エンコードを BASE64 に切り替える。このキーワードはすでにエンコードされたメッセージ部分のみに適用される。Content-transfer-encoding によるメッセージ、 7BIT または 8bit は、特別なエンコードは不要であるため、この BASE64 オプションによる影響を受けない
Binhex
Binhex フォーマット以外の MacMIME フォーマット、または Macintosh タイプおよび Mac クリエータ情報を含む部分を Binhex フォーマットに変換する
Block
MacMIME フォーマット部分からデータフォークのみを抽出する
Bottom
message/rfc822 本文部分 (転送メッセージ) をメッセージ内容部分とヘッダー部分に「フラット化」する
Delete
message/rfc822 本文部分 (転送メッセージ) をメッセージ内容部分に「フラット化」し、転送ヘッダーを削除する
Level
重複するマルチパートレベルをメッセージから削除する
Macbinary
Macbinary フォーマット以外の MacMIME フォーマット、または Macintosh のタイプや Mac クリエータ情報を含む部分を Macbinary フォーマットに変換する
No
変換を無効にする
QUOTED-PRINTABLE
MIME エンコードを QUOTED-PRINTABLE に切り替える
Record,Text
テキスト部分を 80 バイトのところで折り返す
Record,Text= n
テキスト部分を n バイトのところで折り返す
RFC1154
メッセージを RFC 1154 フォーマットに変換する
Top
message/rfc822 本文部分 (転送メッセージ) をヘッダー部分とメッセージ内容部分に「フラット化」する
UUENCODE
MIME エンコードを X-UUENCODE に切り替える
Yes
変換を有効にする
文字セットの変換
プローブを行い、メッセージフォーマットを変換する必要があると判断した場合、MTA はメッセージにおける各部分のチェックを開始します。テキスト部分はすべて検出され、その文字セットのパラメータは 2 回目のプローブに使用されます。ただし、変換が必要であると判断されるまで 2 回目のプローブは行われません。2 回目のプローブを行うための入力文字列は以下のとおりです。
IN-CHAN=in-channel;OUT-CHAN=out-channel;IN-CHARSET=in-char-set
in-channel と out-channel の部分は前述の例と同じです。in-char-set は該当する部分の文字セット名を示します。この 2 回目のプローブで一致するものがない場合、文字セットの変換は行われません (ただし、フォーマットの変換、たとえば MIME 構造への変換などは、最初のプローブで一致したキーワードに基づいて行われる)。一致するものが見つかった場合は、以下の文字列が返されます。
OUT-CHARSET=out-char-set
この場合、out-char-set はin-char-set が示す文字セットに変換されます。これらの文字セットは、MTA テーブルディレクトリに含まれる文字セット定義テーブル charsets.txt 内で定義されているものでなくてはなりません。文字セットがこのファイル内で適切に定義されていないと、変換は行われません。しかし、このファイルの中には現在もっとも利用度の高い数百種の文字セットが定義されているため、特に心配する必要はないでしょう。charsets.txt ファイルの詳細については、imsimta chbuild (UNIX および NT) ユーティリティの説明を参照してください。
すべての条件が満たされると、MTA は文字セットマッピングを作成し、変換を実行します。変換されたメッセージ部分のラベルは、変換後の文字セット名に変更されます。
メッセージフォーマットの変換
前述したように、CHARSET-CONVERSION マッピングテーブルは MIME フォーマットと数種のメーカー独自のメールフォーマット間における添付ファイルの変換にもかかわりがあります。
以下の各項では、CHARSET-CONVERSION マッピングテーブルによって可能なその他のメッセージフォーマット変換の例を紹介します。
非 MIME バイナリ添付ファイルの変換
メッセージの処理にかかわるチャネルで CHARSET-CONVERSION が有効になっている場合、MIME 以外の非標準フォーマットを使用しているメール、たとえば Microsoft Mail (MSMAIL) SMTP ゲートウェイからのメールは、自動的に MIME フォーマットに変換されます。tcp_local チャネルが存在する場合は通常、このチャネルが Microsoft Mail SMTP ゲートウェイからのメッセージを受信します。以下の例は、ローカルユーザー宛のメッセージのフォーマット変換を有効にするものです。
CHARSET-CONVERSION
IN-CHAN=tcp_local;OUT-CHAN=ims-ms;CONVERT Yes
すべてのチャネルに対してフォーマット変換を有効にするには、OUT-CHAN=ims-ms を OUT-CHAN=* に変更します。ただし、こうすると tcp_local チャネルからのメールがすべてチェックされることになるため、特定のチャネルに限定する場合より、処理時間が長くなる可能性があります。
さらに、このように無差別な変換を設定すると、エンベロープおよび関連する転送情報部分のみを変換すべきメッセージ (たとえばシステムを通過するだけのメッセージなど) に対してまで広範な変換処理を行うことになりかねません。
MIME を Microsoft Mail SMTP ゲートウェイが理解できるフォーマットに変換するには、MTA 設定ファイルで Microsoft Mail SMTP ゲートウェイ専用のチャネル (tcp_msmail など) を設定し、マッピングファイルに以下の内容を追加します。
CHARSET-CONVERSION
IN-CHAN=*;OUT-CHAN=tcp_msmail;CONVERT RFC1154
MIME ヘッダーのラベル変更
ユーザーエージェントやゲートウェイによっては、より正確な MIME ヘッダーを作成するために十分な情報があるにもかかわらず、比較的無益な MIME ヘッダーを作成するものもあります。もっとも良い方法はそのようなエージェントやゲートウェイの設定を適切に変更することですが、それが不可能な場合には有用な MIME ヘッダーを構築するように MTA を設定します。
最初のプローブの際に CHARSET-CONVERSION マッピングテーブルが Yes または Always キーワードを返した場合、MTA は conversions ファイルが存在するかどうかを確認します。ファイルが存在する場合、MTA はそのファイルをチェックして RELABEL=1 という記述があるかどうかを確認し、ある場合はそのエントリの指定に従って MIME ラベルを変換します。
たとえば、以下のような CHARSET-CONVERSION テーブルと MTA conversions ファイルエントリの組み合わせならば、メッセージは tcp_local チャネルから ims-ms チャネルにルーティングされます。さらに、受信時の MIME ラベルが application/octet-stream でファイル名パラメータの拡張子が ps または msw の場合には、それぞれ application/postscript または application/msword という新しいラベルが付けられます (このラベル付けはより正確であり、元のユーザーエージェントやゲートウェイがメッセージに付けておくべきもの)。
CHARSET CONVERSION TABLE
CHARSET-CONVERSION
IN-CHAN=tcp_local;OUT-CHAN=mr_local;CONVERT Yes
MTA CONVERSIONS FILE ENTRIES
out-chan=ims-ms; in-type=application; in-subtype=octet-stream;
in-parameter-name-0=name; in-parameter-value-0=*.ps;
out-type=application; out-subtype=postscript;
parameter-copy-0=*; relabel=1
out-chan=ims-ms; in-type=application; in-subtype=octet-stream;
in-parameter-name-0=name; in-parameter-value-0=*.msw;
out-type=application; out-subtype=msword;
parameter-copy-0=* relabel=1
MacMIME フォーマットの変換
Macintosh ファイルには、Macintosh 特有の情報を含むリソースフォークと、ほかのプラットフォームで使用できるデータを含むデータフォークの 2 つの部分があります。さらに、Macintosh ファイルの転送には一般に 4 種類の異なるフォーマットが使用されるため、Macintosh ファイルを転送するにはより複雑な処理が必要となります。Applesingle、Binhex、および Macbinary フォーマットは、Macintosh リソースフォークと Macintosh データフォークを 1 つにエンコードしたものから成り立っています。Appledouble フォーマットの場合は、リソースコードとデータフォークがそれぞれ独立した部分として存在しています。このため、Macintosh 以外のプラットフォームでは、リソースフォーク部分を無視してデータフォーク部分のみを使用できる Appledouble がもっとも便利です。逆に、Macintosh への送信には、ほかの 3 種類のフォーマットが便利です。
MTA は、これらの Macintosh フォーマット間の変換を実行することができます。MTA は CHARSET-CONVERSION キーワードである Appledouble、Applesingle、Binhex、および Macbinary によって MacMIME フォーマット部分をそれぞれ multipart/appledouble、application/applefile、application/mac-binhex40、または application/macbinary の MIME フォーマットに変換します。さらに、Binhex または Macbinary キーワードは、MIME Content-type: ヘッダーに X-MAC-TYPE および X-MAC-CREATOR パラメータを含む特定の MacMIME 以外のフォーマットへの変換も要求します。CHARSET-CONVERSION キーワードの Block は、MTA に対し、MacMIME フォーマット部分のデータフォークのみを抽出し、リソースフォークを破棄するよう要求します (ただし、このキーワードを使用すると一部の情報が失われるため、Appledouble キーワードの使用をお勧めする)。
たとえば、以下の CHARSET-CONVERSION テーブルは ims-ms チャネルにメッセージを配信する場合に Appledouble フォーマットへの変換を MTA に指示します。
CHARSET-CONVERSION
IN-CHAN=*;OUT-CHAN=l;CONVERT Appledouble
この場合、すでに MacMIME フォーマットが使用されている部分のみが Appledouble フォーマットに変換されます。
Appledouble または Block フォーマットへの変換には、元の Macintosh ファイルに含まれる Macintosh クリエータおよびタイプ情報に基づいて Appledouble または Block フォーマットの部分のデータフォークに付ける MIME ラベルを指定するために、MAC-TO-MIME-CONTENT-TYPES マッピングテーブルが使用されることもあります。このテーブルのプローブには、「フォーマット|タイプ|クリエータ|ファイル名」形式が使用されます。フォーマットの値には SINGLE、BINHEX、MACBINARY のどれかが指定され、タイプの値には Macintosh タイプ情報 (16進)、クリエータの値には Macintosh クリエータ情報 (16進)、そしてファイル名の値には実際のファイル名が指定されます。
たとえば、ims-ms チャネルにメッセージを送る場合に Appledouble フォーマットに変換し、MACBINARY または BINHEX 部分から MS Word または PostScript に変換されたドキュメントに特定の MIME ラベルを付けるには、以下のテーブルが適切です。
CHARSET-CONVERSION
IN-CHAN=*;OUT-CHAN=ims-ms;CONVERT Appledouble
MAC-TO-MIME-CONTENT-TYPES
! PostScript
MACBINARY|45505346|76677264|* APPLICATION/POSTSCRIPT$Y
BINHEX|45505346|76677264|* APPLICATION/POSTSCRIPT$Y
! Microsoft Word
MACBINARY|5744424E|4D535744|* APPLICATION/MSWORD$Y
BINHEX|5744424E|4D535744|* APPLICATION/MSWORD$Y
マッピングエントリのテンプレート (右側) に $Y フラグが設定されていない場合、指定したラベルは付けられません。MTA テーブルディレクトリ内の mac_mappings.sample ファイルには、その他の種類の添付ファイルに関するサンプルエントリが記載されています。
MacMIME 以外のフォーマットが使用されている部分を Binhex または Macbinary フォーマットに変換するには、X-MAC-TYPE および X-MAC-CREATOR MIME Content-type: パラメータ値が必要です。通常これらのパラメータ値を持たない部分にそれを強要するために MIME ラベルの変換を実行することも可能です。
サービス変換
MTA の変換サービス機能をサイト提供のプロシージャと一緒に使用すると、新しい形式のメッセージを作成することができます。前述の CHARSET-CONVERSION や conversion チャネルの場合は個別の MIME メッセージ部分を操作しますが、変換サービスはすべての MIME メッセージ部分 (MIME ヘッダーと内容) および MIME メッセージ全体を操作します。また、ほかの CHARSET-CONVERSION 操作や conversion チャネルの操作とは異なり、変換サービスは独自で MIME 逆アセンブリ、デコード、再エンコード、および再アセンブリを行います。
ほかの CHARSET-CONVERSION 操作と同様に、変換サービスは CHARSET-CONVERSION マッピングテーブルを通じて有効化されます。CHARSET-CONVESION マッピングテーブルを最初にプローブした結果が Yes または Always キーワードの場合、MTA は conversions ファイルが存在するかどうかをチェックします。conversions ファイルが存在する場合は、ファイル内に SERVICE-COMMAND を指定するエントリがあるかどうかを確認し、ある場合はそれを実行します。conversions ファイルのエントリの形式は以下のとおりです。
ここでコマンド文字列に注目してください。これは、たとえばドキュメントコンバータを呼び出すなどのサービス変換を行うために必要なコマンドです。このコマンドが実行されると、変換を必要とするメッセージを含む入力ファイルが処理され、新しいメッセージテキストを含む出力ファイルが生成されます。UNIX では、コマンドが成功した場合には 0、失敗した場合にはその他の値で終了する必要があります。
入力ファイル名、出力ファイル名、メッセージのエンベロープ受取人アドレスを含むファイルの名前などを渡すためには、環境変数が使われます。これらの 3 つの環境変数は以下のとおりです。
これらの環境変数の値は、通常の方法でコマンドラインに代入することができます。UNIX では、変数名の前に「$」記号を挿入します。
Brightmail を使用するBrightmail Inc. は、電子メールサーバー用にスパムとウィルスを防止するソフトウェアソリューションを提供する会社です。Brightmail ソリューションは、Brightmail サーバーおよびスパムとウィルスを防止するルールで構成され、ルールのリアルタイムの更新版は電子メールサーバーにダウンロードされます。ウィルス防止ソフトウェアをシステムに統合するもう 1 つの方法については、「変換チャネル」を参照してください。
Brightmail の機能
Brightmail サーバーは顧客のサイトに配備されます。Brightmail では、電子メールプローブがインターネット周辺に配置され、新しいスパムを検出します。Brightmail の技術者はリアルタイムでこのスパムを阻止するカスタムルールを作成します。ルールは Brightmail サーバーにダウンロードされます。これもリアルタイムで行われます。Brightmail のデータベースは更新され、Brightmail サーバーは特定のユーザーまたはドメインの電子メールに対してこのデータベースフィルタを使用します。
Brightmail のアーキテクチャ
図 11-1 に、Brightmail のアーキテクチャを示します。
図 11-1 Brightmail と Messaging Server のアーキテクチャ
Brightmail Logistics and Operations Center (BLOC) が電子メールプローブからスパムを受信すると、オペレータがただちに適切なスパム防止ルールを作成します。作成されたルールは、Brightmail の顧客のマシンにダウンロードされます。同様に、Symantec Security Response のリアルタイムのウィルスルールが Brightmail から送信されます。これらのルールは顧客の Brightmail サーバーでスパムやウィルスを検出するために使用されます。
MTA は Brightmail SDK を使用して Brightmail サーバーと通信します。MTA は Brightmail からの応答に基づいてメッセージを送信します。MTA はメール (1a) または (1b) を受信すると、Brightmail サーバー (2) にメッセージを送信します。Brightmail サーバーはルールとデータを使用してメッセージがスパムやウィルスであるかどうか判断し (3)、判定を MTA に返します。その判定に基づいて、MTA はメッセージを破棄するか、フォルダに保存するか (4a)、通常どおり宛先に配信するかのいずれかを実行します。
Brightmail SDK はサードパーティのソフトウェアなので、Sun のインストールキットには含まれていません。Brightmail SDK およびサーバーソフトウェアは、Brightmail Inc. から入手する必要があります。MTA には、Brightmail を統合するために Brightmail SDK をロードするかどうか、どこにロードするかを指定する構成設定があります。
SDK がロードされると、Brightmail のメッセージ処理は複数の係数と細分度 (アクティブな処理が「オプトイン」 であることを示す、Brightmail で使用される用語) によって決定されます。これは、次の基準に基づいて示されます。
各メッセージ受取人にとっては、上記のオプトインとデフォルトは組み合わされています。つまり、チャネルのデフォルトがすでにスパムとウィルスの両方に対して指定されていれば、ユーザー単位のオプトインは不要になります。言い換えると、システム管理者が全員に対してスパムとウィルスのフィルタ処理を行うことを決定すれば、ユーザーにスパムやウィルスの対策を選択させる必要はないということです。すでにユーザーがオプトインしている場合、処理をオプトアウトする (そのサービスを不要とする) ことはできません。また、サービスをオプトインしていて、別のアドレスにメールを転送した場合、そのアドレスはフィルタ処理が実行された後にメールを受信します。
提供されるサービスは、ウィルス検出またはスパム検出の 2 つのみです。Brightmail では、「content-filtering」サービスも提供されますが、この機能は Sieve を使用して提供されるため、Brightmail で Sieve フィルタ処理を実行した場合の付加価値はありません。
メッセージにウィルスが含まれていると判明した場合は、ウィルスを除去するように Brightmail サーバーを設定でき、これによって除去済みのメッセージが MTA に再送信されます (ウィルス除去済みのメッセージが再送信されると、元のメッセージから情報が失われることによって生じる副次的な悪影響があるため、MTA に除去済みのメッセージを再送信しないように Brightmail を設定することをお勧めする)。メッセージがスパムである場合、Brightmail からその設定とともに返された判定に基づいて、MTA はメッセージの処理を決定できます。基本的に 3 とおりの処理があり、メッセージは破棄されるか、フォルダに保存されるか、通常どおり INBOX に配信されます。
Brightmail サーバーは、MTA と同一システム上に配置することも、別のシステムに配置することもできます。任意の数の MTA を実行する Brightmail サーバーのファームを構築することもできます。Brightmail SDK では、Brightmail 設定ファイルによって使用する Brightmail サーバーが決定されます。このサーバーで MTA が実行されなければならないということではありません。
Brightmail の要件とパフォーマンスの考慮
Brightmail を配備する
この節では、次の設定についての Brightmail の配備方法について説明します。
Brightmail のフィルタ処理は、Messaging Server でキーワードまたは LDAP 属性を使用して有効にします。システムでのフィルタ処理という方法は付加的なものです。フィルタ処理はキーワードと属性の両方の組み合わせだからです。
宛先チャネルまたはソースチャネルのすべてのユーザーに対する Brightmail 処理をアクティブにするには
- Brightmail サーバーをインストールして構成します。
Brightmail をご使用のシステムにインストールする方法については、Brightmail の販売代理店にお尋ねください。
- 次の 2 つの MTA オプションを options.dat ファイルに追加して、Brightmail のライブラリと設定ファイルのパラメータを設定します。
Brightmail_Library=path_and_filename_of_libbmiclient.so
Brightmail_config_file=path_and_filename_of_brightmail_config_file- Brightmail の処理対象となるチャネルと電子メールの方向 (ソースまたは宛先) を指定します。
チャネルブロックにキーワード sourcebrightmailoptin または destinationbrightmailoptin を設定します (「MTA 設定ファイル」を参照)。
sourcebrightmailoptin で、そのチャネルから届くすべてのメッセージが Brightmail ソフトウェアで処理されることを指定します。
destinationbrightmailoptin で、そのチャネルに入るすべてのメッセージが Brightmail ソフトウェアで処理されることを指定します。
これらの属性に有効な値は次のとおりです。
spam - スパム用のフィルタ
virus - ウィルス用のフィルタ
spam,virus - スパムおよびウィルス用のフィルタ例
例 1 - tcp_siroemail チャネルに入ったメールに対して Brightmail によってスパムおよびウィルス用のフィルタ処理が行われます。
例 2 - tcp_local チャネルから届くメールに対して Brightmail によってスパム用のフィルタ処理が行われます。
選択したユーザーに対して Brightmail 処理をアクティブにするには
- Brightmail ソフトウェアをインストールして構成します。
Brightmail をご使用のシステムにインストールする方法については、Brightmail の販売代理店にお尋ねください。
- Brightmail のライブラリおよび設定ファイルのパラメータを設定します。
options.dat ファイルで次の 2 つの MTA オプションを使用します。
Brightmail_Library=path_and_filename_of_libbmiclient.so
Brightmail_config_file=path_and_filename_of_brightmail_config_file- 特定のユーザーに対して Brightmail 処理をアクティブにするために使用する LDAP 属性を指定します。
option.dat ファイルで LDAP_OPTIN=mailAntiUBEService を設定します。mailAntiUBEService 以外の LDAP 属性を指定することはできますが、この名前を使用することをお勧めします。
- LDAP 属性 mailAntiUBEService を Brightmail 処理の対象となるユーザーエントリに設定します。
mailAntiUBEService の有効な値は、spam (スパム用のフィルタ) と virus (ウィルス用のフィルタ) です。
例
LDAP_OPTIN が option.dat ファイルで mailAntiUBEService に設定されているとします。ユーザーの Otis Fanning が自分のユーザーエントリに spam および virus に設定された mailAntiUBEService 属性を持っている場合、このユーザーのメールは Brightmail によってスパムおよびウィルス用のフィルタで処理されます。コード例 11-2 に、Brightmail によって Otis Fanning のユーザーエントリが有効にされた例を示します。
コード例 11-2 Brightmail 用の LDAP ユーザーエントリの例
dn:uid=fanning,ou=people,o=sesta.com,o=ISP
objectClass:person
objectClass:organizationalPerson
objectClass:inetOrgPerson
objectClass:inetUser
objectClass:ipUser
objectClass:inetMailUser
objectClass:inetLocalMailRecipient
objectClass:nsManagedPerson
objectClass:userPresenceProfile
cn:Otis Fanning
sn:fanning
initials:OTF
givenName:Otis
pabURI:ldap://ldap.siroe.com:389/ou=fanning,ou=people,o=sesta.co m,o=isp,o=pab
mail:Otis.Fanning@sesta.com
mailAlternateAddress:ofanning@sesta.com
mailDeliveryOption:mailbox
mailHost:manatee.siroe.com
uid:fanning
dataSource:iMS 5.0 @(#)ims50users.sh 1.5a 02/3/00
userPassword:password
inetUserStatus:active
mailUserStatus:active
mailQuota: -1
mailMsgQuota: 100
mailAntiUBEService:virus
mailAntiUBEService:spam
システム上の選択したドメインに対して Brightmail 処理をアクティブにするには
- Brightmail ソフトウェアをインストールして構成します。
Brightmail をご使用のシステムにインストールする方法については、Brightmail の販売代理店にお尋ねください。
- Brightmail のライブラリおよび設定ファイルのパラメータを設定します。
options.dat ファイルで次の 2 つの MTA オプションを設定します。
Brightmail_Library=path_and_filename_of_libbmiclient.so
Brightmail_config_file=path_and_filename_of_brightmail_config_file- 特定のドメインに対して Brightmail 処理をアクティブにするために使用する LDAP 属性を指定します。
option.dat ファイルで LDAP_DOMAIN_ATTR_OPTIN=mailAntiUBEService を設定します。別の LDAP 属性名を指定することはできますが、Messaging Server スキーマの整合性が保たれるように、この名前を使用することをお勧めします。
- LDAP 属性 mailAntiUBEService を Brightmail 処理の対象となる電子メールのドメインエントリ (DC ツリー内) に指定します。
mailAntiUBEService の有効な値は、spam (スパム用のフィルタ) と virus (ウィルス用のフィルタ) です。
例
LDAP_DOMAIN_ATTR_OPTIN が option.dat ファイルで mailAntiUBEService に設定されているとします。例の DC ツリーの .com ドメインエントリでは、mailAntiUBEService 属性は spam および virus に設定されています。コード例 11-3 に、Brightmail が有効になったドメインエントリを示します。
コード例 11-3 Brightmail 用の LDAP ドメインエントリの例
dn:dc=sesta,dc=com,o=internet
objectClass:domain
objectClass:inetDomain
objectClass:mailDomain
objectClass:nsManagedDomain
objectClass:icsCalendarDomain
description:DC node for sesta.com hosted domain
dc:sesta
inetDomainBaseDN:o=sesta.com,o=isp
inetDomainStatus:active
mailDomainStatus:active
mailDomainAllowedServiceAccess:+imap, pop3, http:*
mailRoutingHosts:manatee.siroe.com
preferredMailHost:manatee.siroe.com
mailDomainDiskQuota: 100000000
mailDomainMsgQuota: -1
mailClientAttachmentQuota: 5
mailAntiUBEService:spam
mailAntiUBEService:virus
Brightmail オプションとキーワード
表 11-8 および表 11-9 に、Messaging Server の Brightmail オプションとキーワードを示します。一部の Brightmail 設定ファイルオプションについては、表 11-10 に示します。Brightmail 設定ファイルオプションの最新の完全リストは、Brightmail から入手できます。
表 11-8 Brightmail MTA オプション (option.dat)
オプション
説明およびデフォルト
Brightmail_library
Brightmail をアクティブにするために必要。Brightmail SDK 共有ライブラリのフルパスとファイル名。Brightmail_config_file とともに指定すると、このライブラリは MTA によってランタイムにロードされる。SpamAssassin とともに使用することもできる
例 :/opt/mailwall/lib/libbmiclient.so
デフォルト : なしBrightmail_config_file
Brightmail をアクティブにするために必要。Brightmail 設定ファイルのフルパスとファイル名。Brightmail_library とともに指定すると、MTA 側で Brightmail との統合が可能になる。SpamAssassin とともに使用することもできる
例 :/opt/mailwall/config
デフォルト : なしLDAP_optin (以前のリリースでは LDAP_SPARE_2)
ユーザー単位で Brightmail をアクティブにするために使用される LDAP 属性名。この属性は、inetMailUser オブジェクトクラス内の属性である必要がある。ほかに指定する属性がない場合は、mailAntiUBEService を使用すること
属性自体 (例 : mailAntiUBEService) には複数の値を指定でき、大文字小文字は区別される。値は小文字の spam または virus のどちらかとする。ユーザーが両方を選択する場合は、このような属性を 2 つ持つことになり、1 つは spam を値とし、もう 1 つは virus を値とする
デフォルト : なし
LDAP_domain_attr_optin
ドメイン単位で Brightmail をアクティブにするために使用される LDAP 属性名。宛先ドメインに適用される。上記の LDAP_optin と同様だが、オブジェクトクラス mailDomain に存在する必要がある
デフォルト : なし
Brightmail_verdict_n
Brightmail_verdict_n と Brightmail_action_n は対になっているペアで、n は 0 〜 9 の数字。Brightmail 判定のデフォルトの解釈を受け入れる場合は、これらのオプションは通常指定しない。このオプションに可能な値は、Brightmail 設定ファイルオプション blSWClientDestinationLocal (ローカルドメイン用) または blSWClientDesintationForeign (ローカルドメイン以外) の | の右側の値で示される。次の例を参照 :
blSWClientDestinationLocal=spam|spamfolder
Brightmail_verdict_0=spamfolder を指定することもある (| の左側の spam はなし)。これは直観性に欠けるものの、動作方法は表現されている
デフォルト : なし
Brightmail_null_action
Brightmail からの判定が Brightmail 設定ファイルの NULL アクションと一致する場合に、オプションの if-then-else ステートメント* を伴う Sieve コマンドを指定する。たとえば、Brightmail 設定ファイルが次のような場合
blSWClientDestinationLocal:spam|
NULL または | の後に何もない場合は NULL アクションを意味する。メッセージに対する判定が spam である場合、| の前のspam という単語と一致し、MTA によって NULL アクションが実行される。Brightmail の NULL アクションに相当する discard がデフォルトアクションであるため、通常このオプションは指定不要
Sieve コマンドのテンプレートは次のとおり
data:,[require "command";] command;
require ステートメントは reject および fileinto で必要とされる。デフォルト : data:,discard;
Brightmail_action_n
一致する Brightmail_verdict_n オプションとペアで使用され、任意の if-then-else ステートメント* を伴う Sieve コマンドを指定して実行できる。たとえば、スパムを拒否する場合は、ペアを次のように設定する
Brightmail_verdict_0=spamfolder
Brightmail_action_0=data:,require "reject"; reject "Rejected by Brightmail";Sieve コマンドのテンプレートは次のとおり
data:,[require "command";] command;
require ステートメントは reject および fileinto で必要とされる。別の例 :Brightmail_verdict_1=spam-folder
Brightmail_action_1_=data;,require "fileinto";fileinto "Junk";この例では、スパム (spam-folder はスパム用の Brightmail から返された判定とする) は Junk というフォルダに保存される。Junk を指定しない場合、スパムはspam-folder というフォルダに保存される
デフォルト : なし
Brightmail_optional
MTA が Brightmail SDK をロードするために初期化ルーチンをコールして失敗した場合に 1 に設定されていると、MTA は Brightmail が有効になっていないかのように続行する。MTA がすでに Brightmail と対話していて、Brightmail が無効になっている場合は、この設定による影響はない。この場合、MTA から SMTP クライアントに一時的なエラーが返される
デフォルト : 0
Brightmail_string_action
Brightmail からの判定が Brightmail 設定ファイルで文字列で示されているアクションと一致する場合に、オプションの if-then-else ステートメントを伴う Sieve コマンドを指定する。たとえば、Brightmail 設定ファイルが次のような場合
blSWClientDestinationLocal:spam|spam-folder
spam-folder が文字列である。判定が spam である場合、その判定と一致する文字列がある。文字列が指定されたときのデフォルトアクションはメッセージを指定のフォルダに保存することであるため、このオプションが使用されることはほとんどない
Sieve コマンドのテンプレートは次のとおり
data:,[require "command";] command;
require ステートメントは reject および fileinto で必要とされるデフォルト : data:,require "fileinto"; fileinto "$U";
$U は blSWClientDestinationLocal 値の | の右側の文字列 (上記の例では、spam-folder)
* option.dat ファイルの省略可能なステートメント if-then-else の Sieve の例を次に示します。これは、Brightmail_action_n、Brightmail_null_action、またはBrightmail_string_action に使用できます。
Brightmail_string_action=data:,require "fileinto";¥
if header :contains ["resent-from"] ["User-1"] {¥
fileinto "testspam";¥
} else {¥
fileinto "spam";};
表 11-9 Brightmail 用の MTA チャネルキーワード
チャネルキーワード
説明
sourcebrightmail
このチャネルから届くすべてのメッセージを Brightmail 処理の対象として指定する。受取人または受取人のドメインが LDAP 属性を介して選択された場合、すべての受取人アドレスは宛先チャネルにかかわらず Brightmail に通知される。受取人の LDAP 属性 mailAntiUBEService (またはこれに相当するもの) を調べ、スパムまたはウィルスがフィルタ処理されたかどうかを判断する。mailAntiUBEService でスパムまたはウィルスが指定されていない場合、メールがフィルタ処理のために Brightmail サーバーに送信されることはない。switchchannel が有効である場合、これは switched-to チャネルに置く必要がある
構文 :
sourcebrightmaildestinationbrightmail
受取人が LDAP 属性 mailAntiUBEService (またはこれに相当するもの) を介して選択された場合、このチャネルを宛先とするすべてのメッセージを Brightmail 処理の対象とする
構文 :
destinationbrightmaildestinationbrightmailoptin
このチャネルを宛先とするすべてのメッセージを特定の Brightmail 処理 (スパム、ウィルスのどちらか、またはその両方) の対象とする。その処理がユーザーまたはドメインによって LDAP 属性を介して選択されていない場合でも対象になる。このキーワードにはフィルタリストが続く。続けるリストは、spam または virus のどちらか、あるいは spam、virus または virus、spam とする
例 1 :
ims-ms destinationbrightmailoptin spam,virus. . .メッセージストアを宛先とするすべてのメールは、Brightmail によってスパムとウィルスの両方をスキャンされる
sourcebrightmailoptin
このチャネルから届くすべてのメッセージを特定の Brightmail 処理 (スパム、ウィルスのどちらか、またはその両方) の対象とする。その処理がユーザーまたはドメインによって LDAP 属性を介して選択されていない場合でも対象になる。システム全体のデフォルトフィルタリストがこのキーワードに続く。続けるリストは、spam または virus のどちらか、あるいは spam、virus または virus、spam とする。switchchannel が有効である場合、これは switched-to チャネルに置く必要がある
例 1:
tcp_local sourcebrightmailoptin spam,virus . . .メールはユーザーの LDAP 属性にかかわらず、Brightmail によってスパムとウィルスの両方についてスキャンされる
例 2 :
tcp_local sourcebrightmailoptin virus . . .デフォルトではメールにウィルススキャンのみが実行される。この場合、スパムのフィルタ処理は、LDAP 属性を介してユーザー単位または宛先ドメイン単位で有効にできる
表 11-10 Brightmail 設定ファイルオプション (一部)
Brightmail オプション (大文字小文字の区別なし)
説明 (属性の値は大文字小文字の区別あり)
blSWPrecedence
1 つのメッセージが複数の判定を受けることがある。その場合、このオプションで順序を指定する。このオプションを virus-spam と指定した場合、メッセージに対して先にウィルス処理、次にスパム処理が行われる。判定はハイフン (-) で区切られる。Sun ONE Messaging Server で Brightmail を使用する場合に推奨される設定
blSWClientDestinationDefault
スパムでもウィルスでもなく、したがって判定を受けない通常のメッセージの配信方法を指定する。このようなメールを通常に配信するには、値として inbox を指定する。デフォルトはない
blSWLocalDomain
この属性ではローカルとみなされるドメインを指定する。いくつかのドメインがすべてローカルとみなされ、それを指定する場合は、この属性の行は複数になることがある。ローカルドメインと外部ドメインを使用して、判定のための 2 種類の処理を指定する
次の blSWClientDestinationLocal と blSWClientDestinationForeign を参照。たとえば、次のように指定する
blSWLocalDomain=siroe.com
blSWClientDestinationLocal
このオプションではローカルドメイン用に判定とアクションのペアを指定する。この指定は通常 2 行で行われ、1 行はスパム用、もう 1 行はウィルス用である。値は verdict|action という形式をとる。次に例を示す
blSWClientDestinationLocal=spam|spambox
blSWClientDestinationLocal=virus|
「null」アクション (| の右側に指定なし) に対するデフォルトの Brightmail 解釈は、メッセージを破棄することである。したがって、上記の例では判定が virus であるメッセージは破棄される。また、判定が spam である場合、上記の例では spambox というフォルダにメッセージが保存される。メッセージがスパムでもウィルスでもない場合、判定は一致せず、前出の blSWClientDestinationDefault の設定内容に基づいてメールは通常どおり配信される
Brightmail サーバーを MTA と別のマシンで使用している場合には、各 MTA によって実行されるアクションをカスタマイズできる。それには次の MTA オプションを使用して Brightmail サーバーから返されるアクションや判定を無効にする。Brightmail_verdict_n/Brightmail_action_n/Brightmail_null_action/Brightmail_string_action。この例では、MTA で別の Brightmail_null_action を使用してウィルスアクション (MTA のアクションを無効にするアクション) を無効にできる。または Brightmail_verdict_0=spambox と Brightmail_action_0=data:,require "fileinto";fileinto "Junk"; を使用して、spambox の代わりに Junk というフォルダに保存できる
blSWClientDesintationForeign
上記の blSWClientDestinationLocal と同じ形式と内容。ただし、ローカル以外のドメインのユーザーに適用される
blSWUseClientOptin
Sun ONE Messaging Server で使用する場合は、常に TRUE に設定すること
blswcServerAddress
ip:port[,ip:port,...] という形式で Brightmail サーバーの IP アドレスとポート番号を指定する
Brightmail の一般的な展開の例
この節では、Brightmail の一般的な展開の例をいくつか紹介します。これらの要素を次に示します。
- ローカルメッセージストア (ims-ms チャネル) に届く受信メッセージの処理
- インターネット (tcp-local チャネル) に送られるメッセージの処理
- インターネット (tcp-local チャネル) から届くメッセージの処理
- 特定のドメインに送られるメッセージの処理 (「システム上の選択したドメインに対して Brightmail 処理をアクティブにするには」を参照)
- 特定のユーザーに送られるメッセージの処理 (「選択したユーザーに対して Brightmail 処理をアクティブにするには」を参照)
- Class-of-Service オプションとしての Brightmail 処理の設定
- スパムメッセージへのヘッダーの追加
ローカル受信メッセージに対する Brightmail の処理
ローカルで配信されるすべてのメールからスパムやウィルスを選別できるようにシステムを設定したい場合があります。ローカルメッセージストア (すなわち imta.cnf の ims-ms チャネル) に着信するメッセージに対して Brightmail 処理を設定するには、destinationbrightmailoptin キーワードを ims-ms チャネル定義に追加します。
例 :
ims-ms defragment subdirs 20 backoff "pt5m" "pt10" "pt30" "pt1h" ¥
"pt2h" "pt4h" maxjobs 1 pool IMS_POOL fileinto $U+$S@$D filter ¥
ssrd:$A ims-ms-daemon destinationbrightmailoptin spam,virus
ims-ms-daemonインターネット経由で着信するメッセージに対する Brightmail 処理
インターネット経由で着信するすべてのメールからスパムを選別できるようにシステムを設定したい場合があります。インターネット経由で着信するすべてのメッセージに対して Brightmail 処理を設定するには、sourcebrightmailoptin キーワードを tcp-local チャネル定義に追加します。
例 :
tcp_local smtp mx single_sys remotehost inner switchchannel ¥
identnonelimited subdirs 20 maxjobs 7 pool SMTP_POOL maytlsserver ¥
maysaslserver saslswitchchannel tcp_auth sourcebrightmailoptin spam
tcp-daemon
注
Brightmail では、スパムメッセージを破棄するか、指定したスパムフォルダに保存するかを選択できます。受信側のシステムでスパムフォルダが指定できない場合、スパムフォルダ用のアドレス構文はそのシステムにとって無効となります。
インターネット経由で送信されるメッセージに対する Brightmail 処理
インターネット経由で送信されるすべてのメールからスパムを選別できるようにシステムを設定したい場合があります。インターネット経由で送信されるすべてのメッセージに対する Brightmail 処理を設定するには、destinationbrightmailoptin キーワードを tcp-local チャネル定義に追加します。
例 :
tcp_local smtp mx single_sys remotehost inner switchchannel ¥
identnonelimited subdirs 20 maxjobs 7 pool SMTP_POOL maytlsserver ¥
maysaslserver saslswitchchannel tcp_auth ¥
destinationbrightmailoptin spam
tcp-daemon特定のバックエンドメッセージストアのホストに着信するメッセージに対する Brightmail 処理
特定のバックエンドメッセージストアのホストに着信するすべてのメールからウィルスとスパムが選別されるようにシステムを設定するには、次の操作を行います。
- メッセージをバックエンドメッセージストアのホストに送信するすべての SMTP サーバーの imta.cnf ファイルに書き換えルールを追加します。
例 :
msg_store1.siroe.com $U@msg_store1.siroe.com
- その書き換えルールと対応するチャネルを destinationbrightmailoptin キーワードを使用して追加します。
例 :
tcp_msg_store1 subdirs 20 backoff "pt5m" "pt10" "pt30" "pt1h" ¥
"pt2h" "pt4h" maxjobs 1 pool IMS_POOL fileinto $U+$S@$D ¥
destinationbrightmailoptin spam,virus
msg_store1.siroe.comスパムメッセージにヘッダーを追加する
スパムメッセージには任意のヘッダーを追加することができます。spam-result: Brightmail says this is spam というヘッダーを Brightmail ソフトウェアで検出されたメッセージに追加するには、次の内容を option.dat に追加します。
brightmail_string_action=data:,require ["addheader" "spamtest"];addheader "spam-result:Brightmail says this is spam";
"spamtest"]; の後のテキストのみ、カスタマイズ可能です。
SpamAssassin を使用するMessaging Server では、SpamAssassin の使用がサポートされています。SpamAssassin はフリーウェアのメールフィルタで、スパムの特定に使用されます。SpamAssassin は Perl で記述されたライブラリ、アプリケーションのセット、および SpamAssassin のメッセージングシステムへの統合に使用するユーティリティで構成されています。
SpamAssassin では、すべてのメッセージのスコアが計算されます。スコアは、メッセージヘッダーや本文の情報に対して一連のテストを実行することによって計算されます。各テストに成功するか失敗するかによってスコアは調整されます。スコアは正または負の実数です。スコアが一定のしきい値 (通常 5.0) を超えると、スパムであるとみなされます。
SpamAssassin には高い設定性があります。テストはいつでも追加したり削除したりでき、既存テストのスコアは調整されます。これらはすべてさまざまな設定ファイルを通じて実行されます。SpamAssassin の詳細については、SpamAssassin の Web サイトを参照してください。
Brightmail のスパムおよびウィルススキャンライブラリを呼び出す場合と同じ方法で SpamAssassin spamd サーバーに接続できます。Sun ONE Messaging Server で提供しているモジュールの名前は libspamass.so です。
SpamAssassin の要件とパフォーマンスの考慮
SpamAssassin を配備する
この節では、Messaging Server に SpamAssassin を配備する方法を手順を追って説明します。
- SpamAssassin をインストールして構成します。
各種システムへのインストールに必要な情報は、SpamAssassin の Web サイトを参照してください。
- Brightmail のライブラリおよび設定ファイルのパラメータを SpamAssassin に設定します。
options.dat ファイルで次の 2 つの MTA オプションを設定します。
Brightmail_Library=path_and_filename_of_libspamass.so
Brightmail_config_file=path_and_filename_of_SpamAssassin_config_file- SpamAssassin のオプションファイルを作成します。
MTA option.dat ファイルの Brightmail_config_file オプションで SpamAssasin のオプションファイルを指定します。SpamAssassin のオプションファイルは、option=value という形式の行で構成されます。オプションの詳細については、表 11-11 を参照してください。
- SpamAssassin を設定します。
このインターフェイスのデフォルトの動作 (デフォルトの mode=0 で示されている) は、スパムであることが特定されたメールを破棄することです。これを実行するためにさらなるオプションを設定する必要はありません。
ほかの動作は、SpamAssassin オプションと Brightmail MTA オプションを組み合わせることで得られます。たとえば、スパムと判定されたすべてのメールを拒否するには、BRIGHTMAIL_NULL_ACTION MTA オプションを次のように設定します。
data:,require "reject"; reject "Suspected spam message rejected";
同様に、スパムを SPAM フォルダに保存するには、BRIGHTMAIL_NULL_ACTION を次のように設定します。
data:,require "fileinto"; fileinto "SPAM";
より工夫を凝らした組み合わせも可能です。たとえば、スパムの結果が拒否メッセージに含まれるようにするには、MTA の BRIGHTMAIL_STRING_ACTION オプションを次のように設定します。
data:,require "reject"; reject "Message rejected [$U]";
次に、SpamAssassin オプションファイルに MODE=1 を設定します。
- spamd デーモンを起動します。次の一般的な形式のコマンドを使用してこれを実行します。
spamd -d
spamd は、デフォルトではローカルシステムからの接続を受け入れるだけです。SpamAssassin と Messaging Server が別のシステムで実行されている場合は、次の形式のコマンドを使用する必要があります。
spamd -d -i <listen_ip_address> -A <allowed_hosts>
listen_ip_address は待機対象のアドレスであり、allowed_hosts はこの spamd インスタンスに接続できる、認証されたホストまたはネットワークのリスト (IP アドレスを使用) です。
表 11-11 SpamAssassin オプション
Spam Assassin オプション
説明
デフォルト
host
spamd が実行されているシステムの名前
ローカルホスト
port
spamd が着信要求を待機するポート番号
783
debug
0 または 1。libspamass.so でデバッグをオンにするかどうかを指定する。spamd 自体のデバッグは、spamd を呼び出すコマンドラインで制御される
0
mode
SpamAssassin の結果から Brightmail の判定情報への変換を制御する。次の 3 種類のモードが使用可能
0 - メッセージがスパムだと判明した場合は verdict オプションによって示された判定文字列を返す。スパムでないと判明した場合はデフォルトの SpamAssassin 判定を返す。verdict オプションが空である場合や指定されていない場合は NULL 判定を返す
1 - メッセージがスパムであると判明した場合に SpamAssassin の結果を判定として返す
2- モード 1 と同様。ただしメッセージがスパムと見なされているかどうかにかかわらず判定が返される点で異なる
0
verdict
文字列。MODE 0 で使用される判定文字列を指定する
""
field
文字列。SpamAssasin の結果を示す文字列のプレフィックスを指定する。SpamAssassin の結果を示す文字列は、通常次のようになる
Spam-Test:False ; 0.0 / 5.0
または
Spam-Test:True ; 27.7 / 5.0
field オプションでは、結果の「Spam-Test」の部分を変更した場合の意味を示す。空の field 値が指定されると「: 」も削除されることに注意
"Spam-test"
表 11-12 SpamAssassin 用の MTA オプション
SpamAssasin 用の MTA オプション
説明
デフォルト
Brightmail_library
SpamAssassin 共有ライブラリのフルパスとファイル名
なし
Brightmail_config_file
SpamAssassin 設定ファイルのフルパスとファイル名
なし
Brightmail_null_action
SpamAssassin の判定が NULL で返された場合にメッセージの処理を指定する SIEVE ルール
data:,discard;
Brightmail_string_action
判定が文字列で返された場合にメッセージの処理を指定する SIEVE ルール
デフォルト : data:,require "fileinto"; fileinto "$U;
$U は verdict が返した文字列
説明を参照++++++++++++++++++++++++