Sun ロゴ      前へ      目次      索引      次へ     

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_tas

TCP/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:myprocmail

imsimta 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 つのオプション設定が含まれています。オプション設定は、次の形式で記述されています。

option=value

valueは、オプションの要件に応じて文字列または整数のいずれかとなります。

表 11-2 ローカルチャネルのオプション 

オプション

説明

FORCE_CONTENT_LENGTH

(0 または 1。UNIX のみ)

FORCE_CONTENT_LENGTH=1 の場合、MTA によりローカルチャネルに配信されるメッセージに Content-length: ヘッダー行が追加され、「From」が行の最初にある場合、チャネルで「>From」構文が使用されなくなる。これによって、ローカルの UNIX メールが Sun のより新しいメールツールとの互換性を持つようになるが、他の UNIX メールツールとの互換性がなくなることもある

FORWARD_FORMAT (文字列)

ユーザーの .forward ファイルの場所を指定する。%u 文字列は、この部分が各ユーザー ID で置換されることを示す。%h 文字列は、この部分が各ユーザーのホームディレクトリで置換されることを示す。このオプションが明示的に指定されていない場合、デフォルトの動作は次と同様になる

FORWARD_FORMAT=%h/.forward

REPEAT_COUNT (整数)
SLEEP_TIME (整数)

MTA が新しいメールを配信しようとするときに、ユーザーの新しいメールファイルが他のプロセスによってロックされている場合、これらのオプションによって、ローカルプログラムが試行すべき再試行の回数と頻度を制御することができる。指定された回数の再試行が行われてもファイルを開くことができなかった場合、メッセージはローカルのキューに残され、次にローカルのチャネルが新しいメッセージを配信するときに再試行される

The REPEAT_COUNT オプションは、メールファイルを開こうとする試行が何回行われるかを制御する。REPEAT_COUNT のデフォルトは 30 (30 回の試行)

SLEEP_TIME オプションは、チャネルプログラムが何秒間隔で試行を繰り返すかを制御する。SLEEP_TIME は 2 (2 秒の間隔で再試行) にデフォルト設定されている

SHELL_TIMEOUT (整数)

.forward を完成するために、チャネルがユーザーのシェルコマンドを待機する時間 (秒数) を制御する。この時間が経過すると、「user の command を完了するシェルコマンドのタイムアウト」という旨のメッセージとともに、元の差出人にエラーメッセージが返送される。デフォルトは 600 (10 分)

SHELL_TMPDIR (ディレクトリ固有)

シェルコマンドに配信を行う際に、ローカルチャネルが一時ファイルを作成する場所を制御する。デフォルトでは、一時ファイルはユーザーのホームディレクトリに作成される。このオプションを使用すると、管理者は一時ファイルを別の (単一の) ディレクトリに作成するように選択できる。

例 : SHELL_TMPDIR=/tmp


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 つの手順があります。以下に詳細を説明します。


注

デフォルトの変換チャネルは MTA 設定ファイル内 (imta.cnf) に自動的に作成されます。このチャネルはそのままの状態で使用することができます。変更する必要はありません。


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 ヘッダー行の例を示します

Content-type:APPLICATION/wordperfect5.1;name=Poem.wpc
Content-transfer-encoding:BASE64
Content-disposition:attachment; filename=Poem.wpc
Content-description:"Project documentation Draft1 wordperfect format"

。


注

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-Type 値、subtypes、およびパラメータ名では大文字と小文字が区別されます。


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 マッピングテーブルにかかわらず、変換チャネルを通してルーティングされます。


以下の例では、発信元も宛先もインターネットである非内部メッセージをすべて変換チャネルにルーティングします。

CONVERSIONS

   IN-CHAN=tcp_local;OUT-CHAN=*;CONVERT   Yes
   IN-CHAN=*;OUT-CHAN=tcp_local;CONVERT     Yes

最初の行は 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=178029946

OUTPUT_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 の場合は、変換エントリ自体が強制終了します。

次のようなマッピングテーブルがあるとします。

X-ATT-NAMES

   postscript       temp.PS$Y
   wordperfect5.1   temp.WPC$Y
   msword           temp.DOC$Y

このマッピングテーブルの変換エントリは次のとおりで、添付ファイルの指定ファイル名を汎用ファイル名に置換します。

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 になります。

変換チャネル出力を使ってメッセージのバウンス、削除、保留を行うには

この節では、変換チャネルのオプションを使ってメッセージのバウンス、削除、保留を行う方法を説明します。基本手順は次のとおりです。

  1. 該当する変換ファイルエントリに OVERRIDE-OPTION-FILE=1 を設定します。変換チャネルで OUTPUT_OPTIONS ファイルの出力オプションを読み取ります。
  2. 変換スクリプトを使い、特定のメッセージ本文部分に必要なアクションを決定します。
  3. スクリプトで、OUTPUT_OPTIONS ファイルに STATUS=directive_code オプションを記述しアクションに対する指示を指定します。

すべての指示のリストは 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 ファイルに変換するルールも含まれています。

CONVERSIONS

      IN-CHAN=*;OUT-CHAN=tcp_docuprint;CONVERT    Yes

!

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 ファイルのエントリの形式は以下のとおりです。

in-chan=channel-pattern;
  in-type=type-pattern; in-subtype=subtype-pattern;
  service-command=command

ここでコマンド文字列に注目してください。これは、たとえばドキュメントコンバータを呼び出すなどのサービス変換を行うために必要なコマンドです。このコマンドが実行されると、変換を必要とするメッセージを含む入力ファイルが処理され、新しいメッセージテキストを含む出力ファイルが生成されます。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 と 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 処理をアクティブにするには

  1. Brightmail サーバーをインストールして構成します。
  2. Brightmail をご使用のシステムにインストールする方法については、Brightmail の販売代理店にお尋ねください。

  3. 次の 2 つの MTA オプションを options.dat ファイルに追加して、Brightmail のライブラリと設定ファイルのパラメータを設定します。
  4. Brightmail_Library=path_and_filename_of_libbmiclient.so
    Brightmail_config_file=path_and_filename_of_brightmail_config_file

  5. MTA オプションファイル (表 11-8) と Brightmail 設定ファイル (表 11-10) に適切な Brightmail オプションを指定します。
  6. Brightmail の処理対象となるチャネルと電子メールの方向 (ソースまたは宛先) を指定します。
  7. チャネルブロックにキーワード sourcebrightmailoptin または destinationbrightmailoptin を設定します (「MTA 設定ファイル」を参照)。

    sourcebrightmailoptin で、そのチャネルから届くすべてのメッセージが Brightmail ソフトウェアで処理されることを指定します。

    destinationbrightmailoptin で、そのチャネルに入るすべてのメッセージが Brightmail ソフトウェアで処理されることを指定します。

    これらの属性に有効な値は次のとおりです。

    spam - スパム用のフィルタ
    virus - ウィルス用のフィルタ
    spam,virus - スパムおよびウィルス用のフィルタ

例

例 1 - tcp_siroemail チャネルに入ったメールに対して Brightmail によってスパムおよびウィルス用のフィルタ処理が行われます。

例 2 - tcp_local チャネルから届くメールに対して Brightmail によってスパム用のフィルタ処理が行われます。

選択したユーザーに対して Brightmail 処理をアクティブにするには

  1. Brightmail ソフトウェアをインストールして構成します。
  2. Brightmail をご使用のシステムにインストールする方法については、Brightmail の販売代理店にお尋ねください。

  3. Brightmail のライブラリおよび設定ファイルのパラメータを設定します。
  4. options.dat ファイルで次の 2 つの MTA オプションを使用します。

    Brightmail_Library=path_and_filename_of_libbmiclient.so
    Brightmail_config_file=path_and_filename_of_brightmail_config_file

  5. MTA オプションファイル (表 11-8) と Brightmail 設定ファイル (表 11-10) に適切な Brightmail オプションを指定します。
  6. 特定のユーザーに対して Brightmail 処理をアクティブにするために使用する LDAP 属性を指定します。
  7. option.dat ファイルで LDAP_OPTIN=mailAntiUBEService を設定します。mailAntiUBEService 以外の LDAP 属性を指定することはできますが、この名前を使用することをお勧めします。

  8. LDAP 属性 mailAntiUBEService を Brightmail 処理の対象となるユーザーエントリに設定します。
  9. 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 処理をアクティブにするには

  1. Brightmail ソフトウェアをインストールして構成します。
  2. Brightmail をご使用のシステムにインストールする方法については、Brightmail の販売代理店にお尋ねください。

  3. Brightmail のライブラリおよび設定ファイルのパラメータを設定します。
  4. options.dat ファイルで次の 2 つの MTA オプションを設定します。

    Brightmail_Library=path_and_filename_of_libbmiclient.so
    Brightmail_config_file=path_and_filename_of_brightmail_config_file

  5. MTA オプションファイル (表 11-8) と Brightmail 設定ファイル (表 11-10) に適切な Brightmail オプションを指定します。
  6. 特定のドメインに対して Brightmail 処理をアクティブにするために使用する LDAP 属性を指定します。
  7. option.dat ファイルで LDAP_DOMAIN_ATTR_OPTIN=mailAntiUBEService を設定します。別の LDAP 属性名を指定することはできますが、Messaging Server スキーマの整合性が保たれるように、この名前を使用することをお勧めします。

  8. LDAP 属性 mailAntiUBEService を Brightmail 処理の対象となる電子メールのドメインエントリ (DC ツリー内) に指定します。
  9. 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 チャネルに置く必要がある

構文 :
sourcebrightmail

destinationbrightmail

受取人が LDAP 属性 mailAntiUBEService (またはこれに相当するもの) を介して選択された場合、このチャネルを宛先とするすべてのメッセージを Brightmail 処理の対象とする

構文 :
destinationbrightmail

destinationbrightmailoptin

このチャネルを宛先とするすべてのメッセージを特定の 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 の一般的な展開の例をいくつか紹介します。これらの要素を次に示します。

ローカル受信メッセージに対する 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 処理

特定のバックエンドメッセージストアのホストに着信するすべてのメールからウィルスとスパムが選別されるようにシステムを設定するには、次の操作を行います。

  1. メッセージをバックエンドメッセージストアのホストに送信するすべての SMTP サーバーの imta.cnf ファイルに書き換えルールを追加します。
  2. 例 :

    msg_store1.siroe.com   $U@msg_store1.siroe.com

  3. その書き換えルールと対応するチャネルを destinationbrightmailoptin キーワードを使用して追加します。
  4. 例 :

    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 を配備する方法を手順を追って説明します。

  1. SpamAssassin をインストールして構成します。
  2. 各種システムへのインストールに必要な情報は、SpamAssassin の Web サイトを参照してください。

  3. Brightmail のライブラリおよび設定ファイルのパラメータを SpamAssassin に設定します。
  4. options.dat ファイルで次の 2 つの MTA オプションを設定します。

    Brightmail_Library=path_and_filename_of_libspamass.so
    Brightmail_config_file=path_and_filename_of_SpamAssassin_config_file

  5. SpamAssassin のオプションファイルを作成します。
  6. MTA option.dat ファイルの Brightmail_config_file オプションで SpamAssasin のオプションファイルを指定します。SpamAssassin のオプションファイルは、option=value という形式の行で構成されます。オプションの詳細については、表 11-11 を参照してください。

  7. SpamAssassin を設定します。
  8. このインターフェイスのデフォルトの動作 (デフォルトの 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 を設定します。

  9. spamd デーモンを起動します。次の一般的な形式のコマンドを使用してこれを実行します。

表 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 が返した文字列

説明を参照++++++++++++++++++++++++



前へ      目次      索引      次へ     


Copyright 2003 Sun Microsystems, Inc. All rights reserved.