前へ     目次     索引     DocHome     次へ     
iPlanet Messaging Server 5.2 管理者ガイド



第 9 章   定義済みチャネルを使用する


チャネルによっては iPlanet Messaging Server をインストールした時点ですでに定義されているものもあります (表 9-1 を参照)。この章では、MTA の定義済みチャネルの使い方を説明します。

この章を読む前に、第 6 章「MTA サービスと設定について」をお読みください。imta.cnf ファイルの書き換え規則を設定する方法については、第 7 章「書き換え規則を設定する」 を参照してください。

この章には、以下の節があります。

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

  • 「ネイティブ (/var/mail) チャネルを設定するには」

  • 「hold チャネルを使って一時的にメッセージを保留するには」

  • 「変換チャネル」

  • 「文字セット変換とメッセージの再フォーマット」

    表 9-1    定義済みチャネル 

    チャネル

    定義

    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 メッセージの修復方法を提供する  

    変換  

    MTA を通じて配信されるメッセージを本文部分ごとに変換する  

    bitbucket  

    破棄するメッセージに使用される  

    inactive/deleted  

    ディレクトリ内でのステータスが非アクティブまたは削除済みになっているユーザへのメッセージの処理に使用される。通常、受信したメッセージを差出人に送り返し、カスタム返送メッセージを送る  

    hold  

    ユーザへのメッセージを保留する。ユーザがあるメールサーバから別のサーバに移行された場合などに使用される  

    autoreply  

    自動返信および vacation 通知の要求を処理するために使用される  

    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 チャネルが呼び出せるプログラムを登録する必要があります。登録は 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 ディレクトリ (server-instance/imta/programs) に実行ファイルが存在し、「others」に対して実行権が設定されていることを確認してください。

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

maildeliveryoption: program
mailprogramdeliveryinfo:myprocmail

imsimta program ユーティリティについては、『iPlanet Messaging Server リファレンスマニュアル』を参照してください。

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

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

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

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

/usr/lib/procmail -d %s



ネイティブ (/var/mail) チャネルを設定するには



オプションファイルは、ローカルチャネルのさまざまな機能を制御するために使用されます。このローカルチャネルのオプションファイルは MTA の設定ディレクトリに保存し、native_option という名前を付けなければなりません (例 : server_root/msg-instance/imta/config/native_option)。

オプションファイルは複数の行から構成されており、各行にはそれぞれ 1 つのオプション設定が含まれています。オプション設定は、次の形式で記述されています。

option=value

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

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

SHELL_TMPDIR (ディレクトリ固有)  

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

SHELL_TMPDIR=/tmp  



hold チャネルを使って一時的にメッセージを保留するには



hold チャネルは、一時的に受信不能になっている宛先へのメッセージを保留するためのチャネルです。一時的な受信不能の原因としては、ユーザ名が変更されている最中であったり、メールボックスが別のホストやドメインに移行されている最中であることが考えられます。原因はほかにもありますが、この 2 つがもっとも一般的なものです。

hold チャネルにメッセージを保留するには、hold にユーザの maildeliveryoption 値の 1 つを設定します。その他の maildeliveryoption 値はすべて無視され (maildeliveryoption は複数値を持つ属性)、そのユーザへのメッセージは hold チャネルにルーティングされます。

ほかのチャネルとは異なり、hold チャネルのマスタープログラムは自動的に起動するように設定されていません。hold チャネルのキュー内のメッセージは、管理者が hold_master プログラムを呼び出すまでそのままの状態で待機します。



変換チャネル



conversion チャネルを使うと、MTA を通じて配信されるメッセージで指定する本文部分ごとの変換を任意に行うことができます。(本文部分とメッセージは違います。メッセージには複数の本文部分が含まれることがあります。たとえば添付ファイルにも本文部分があります。)変換処理は、サイトが提供した任意のプログラムやコマンド手順で行うことができます。処理内容には、テキストや画像形式の変換、ウィルススキャン、言語変換などがあります。MTA で通信するさまざまなメッセージ形式を変換することができ、特定の処理やプログラムをメッセージの本文部分に指定することができます。

この章を利用するには、チャネルの概念を理解している必要があります (「チャネル」 を参照)。conversion チャネルを使ったウィルススキャンの補足情報は、iPlanet Messaging Server マニュアルの Web サイトの下部にある iPlanet 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-VersionContent-typeContent-Transfer-EncodingContent-ID、および Content-disposition があります。変換チャネルでよく使用されるヘッダーは Content-typeContent-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"


Content-type ヘッダー
MIME Content-Type ヘッダーは本文部分の内容を表します。Content-Type ヘッダー形式と実際の例を次に示します。

Content-type: type/subtype; parameter1=value; parameter2=value...

type は本文部分の内容の種類を表します。種類には、TextMultipartMessageApplicationImageAudioVideo などがあります。

subtype は コンテンツタイプをさらに詳しくしたものです。Content-type にはそれぞれ独自のサブタイプがあります。たとえば次のようなものがあります。text/plainapplication/octet-streamimage/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 パラメータは以下のようになります。

Content-type:text/plain; charset=us-ascii
Content-type:application/msword; name=temp.doc

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 パラメータで指定される) を使って変換チャネルに送られます。テーブルへのエントリには次のような形式があります。

IN-CHAN=source-channel;OUT-CHAN=destination-channel;CONVERT Yes/No

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 ファイル (デフォルトのディレクトリは server_root/msg-instance/imta/conversions) の IMTA_CONVERSION_FILE オプションファイルで指定します。エントリを構成する conversions ファイルで、どの形式の本文部分をどのように処理するかを制御します。

各エントリは 1 つまたは複数の行で構成され、各行には 1 つまたは複数の name=value パラメータ句が含まれています。パラメータ句の値は MIME 規則に一致しています。最終行以外のすべての行は、セミコロン (;) で終了する必要があります。このファイルでは、1 行に入力できる文字数が 252 バイトに制限されています。円記号 (¥) を継続文字として使用すれば、1 つの論理行を複数の行に分割することができます。エントリは、セミコロンで終了していない行や空白行が 1 行以上挿入されているところで終了します。

conversion ファイルエントリの簡単な例を次に示します。

コード例 9-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-* パラメータを追加すると詳細に指定することができます(表 9-5 を参照)。このエントリは、次のような 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 ファイルがコード例 9-1 のパラメータを指定したら、次の 2 つのパラメータ out-type=application および out-subtype=msword は置換 MIME ヘッダー行を「処理済み」の本文部分に添付するよう指定します。out-type=application および out-subtype=msword は、送信メッセージの MIME Content-type/subtypeapplication/msword となるように指定します。

in-typeout-type は同じパラメータなので out-type=application は必要ありません。変換チャネルのデフォルトは送信本文部分の元の MIME ラベルであるからです。送信本文部分の MIME ラベルを追加するには、出力パラメータを指定します。

out-mode=block (コード例 9-1) は、サイト提供のプログラムが返すファイル形式を指定します。つまり、ファイルの保存方法と、変換チャネルが返されたファイルを読み取る方法を指定します。たとえば、html ファイルはテキストモードで保存されますが、.exe プログラムや zip ファイルはブロック / バイナリモードで保存されます。モードは、読み取り中のファイルが一定の保存形式にあることを表しています。

コード例 9-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 を使えばメッセージ部分を簡単に削除することができます。


変換チャネルの情報フロー

情報フローは次のようになります。本文部分を含むメッセージが変換チャネルに入ってきます。変換チャネルはメッセージをパースして、本文部分を 1 つずつ処理します。次に変換チャネルは本文部分が適格であるかどうかを判断します。つまり、MIME ヘッダー行を指定パラメータと比較して処理するかどうかを決定します。本文部分が適格であると判断されれば、変換処理が始まります。MIME や本文部分の情報を変換スクリプトに渡す場合は、「情報引き渡しパラメータ」で指定した環境変数 (表 9-3) に保存します。

この時点で、「アクションパラメータ」で指定したアクションを本文部分に実行します。一般的には、本文部分を削除するか、スクリプトで囲んだプログラムに渡します。本文部分はスクリプトで処理されると変換チャネルに戻され、処理後のメッセージに組み込まれます。スクリプトは、変換チャネルの「出力オプション」を使って情報を変換チャネルに送信することもできます。この情報には、出力本文部分に追加する新しい MIME ヘッダー行、メッセージの差出人に返送するエラーテキスト、MTA にメッセージのバウンス、削除、保留などのアクション開始を指示する命令などがあります。

最後に、変換チャネルは「出力パラメータ」で指定されたように出力本文部分のヘッダー行を置き換えます。


変換チャネル環境変数の使い方

メッセージ本文部分を処理する場合、MIME ヘッダー行情報や本文部分全体をサイト提供のプログラムとやり取りすると便利なことがあります。たとえば、あるプログラムでメッセージ本文部分以外に Content-typeContent-disposition ヘッダー行情報が必要であるとします。一般にサイト提供のプログラムに入力されているのは、主にファイルから読み取るメッセージ本文部分です。プログラムで本文部分が処理されると、変換チャネルが読み取りファイルに書き込まれます。このような情報の受け渡しは、変換チャネル環境変数を使って行われます。

環境変数は、parameter-symbol-* パラメータや定義済みの変換チャネル環境変数のセット (表 9-4 を参照) を使って、conversions ファイルで作成することができます。

次の conversions ファイルエントリと受信ヘッダーでは、サイト提供のプログラムに環境変数を使って MIME 情報を渡す方法が示されています。

conversions ファイルエントリ :

in-channel=*; in-type=application; in-subtype=*;
  parameter-symbol-0=APPARENT_NAME; parameter-copy-0=*;
  dparameter-symbol-0=APPARENT_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=APPARENT_NAME は、最初の Content-type パラメータの値 (この例では Draft1.doc) が APPARENT_NAME という環境変数に保存されることを示します。

parameter-copy-0=* は、入力本文部分の Content-type パラメータがすべて出力本文部分にコピーされることを示します。

dparameter-symbol-0=APPARENT_FILENAME は、最初の Content-disposition パラメータの値 (この例では Draft1.doc) が APPARENT_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 部分の元のヘッダーを無視することを示します。$OUTPUT_HEADERS は、変換実行中に作成される実行時テンポラリファイルです。このファイルはサイト提供のプログラムで使用され、変換処理中に変更されたヘッダーが保存されます。本文部分が変換チャネルで再構築される際に、このファイルからヘッダー行が読み取られます。

override-option-file=1 は、変換チャネルが OUTPUT_OPTIONS 環境変数によって名前が付けられたファイルから変換チャネルのオプションを読み取ることを表します。「変換チャネル出力オプションを使用するには」を参照してください。

command="SERVER_ROOT/msg-INSTANCE/bin/viro-scan500.sh" は、メッセージ本文部分で実行するコマンドを示します。


表 9-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 行ではなく実際のヘッダー行が含まれ、最後の行は空白行となる  

OUTPUT_OPTIONS  

サイト提供のプログラムで変換チャネルのオプションを読み取るファイル名。「変換チャネル出力オプションを使用するには」を参照  


変換チャネル出力オプションを使用するには

変換チャネル出力オプション (表 9-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=ユVirus 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」というテキストを追加するように変換チャネルに指示していることを表します。

178029946pmdf_err.h ファイルごとの PMDF__FORCERETURN ステータスで、server-root/bin/msg/imtasdk/include/pmdf_err.h に格納されています。このステータスコードは、差出人にメッセージを返送するように変換チャネルに指示しています。特定の指示の使い方について詳細は 「変換チャネル出力を使ってメッセージのバウンス、削除、保留を行うには」を参照してください。

出力オプションのリストを以下に示します。


表 9-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  

コンバータの終了ステータス。変換チャネルで何らかのアクションを開始する場合の典型的な指示。指示の全リストは server-root/bin/msg/imtasdk/include/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-* 値は、任意に名前を設定したマッピングテーブルに保存したり、検索したりすることができます。この機能は、クライアントが送信する添付ファイル名を変更する場合に便利です。クライアントが送信する場合は、添付ファイルの種類 (postscriptmswordtext など) にかかわらず、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-NAMESsubtype と一致するものを検索します。一致するものがあれば、name パラメータは X-ATT-NAMES マッピングテーブルで指定された新しい値を受け取ります。つまりパラメータの形式が msword であれば、name パラメータは temp.DOC になります。


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

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

  1. 該当する変換ファイルエントリに OVERRIDE-OPTION-FILE=1 を設定します。変換チャネルで OUTPUT_OPTIONS ファイルの出力オプションを読み取ります。

  2. 変換スクリプトを使い、特定のメッセージ本文部分に必要なアクションを決定します。

  3. スクリプトで、OUTPUT_OPTIONS ファイルに STATUS=directive_code オプションを記述しアクションに対する指示を指定します。

指示の全リストは server_root/bin/msg/imtasdk/include/pmdf_err.h に記載されています。以下に、変換チャネルでよく使用される指示を示します。
名前

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'"



表 9-5    変換パラメータ 

パラメータ

説明

指定用パラメータ (変換する前にメッセージを照合するパラメータを指定)

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-Type: パラメータリストから本文出力部分の Content-Type: パラメータリストにコピーする Content-Type: パラメータのリスト。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  

変換を実行するためのコマンド。変換を実行するためのコマンド。これは必須パラメータで、コマンドを指定しないとこのエントリは無視される  

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 操作や conversion チャネルの操作とは異なり、サービスコマンドは独自で MIME 逆アセンブリ、デコード、再エンコード、および再アセンブリを行う。このフラグが付いていると、変換チャネルの処理中にエントリが無視される。その代わり、SERVICE-COMMAND エントリは文字セット変換の処理中に実行される  

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 は宛先チャネル (メッセージの送信先) を示します。一致するソースチャネルおよび宛先チャネルがある場合は、その結果がカンマで区切られたキーワードリストの文字列として表示されます。表 9-6 にキーワードの一覧を示します。


表 9-6    CHARSET-CONVERSION マッピングテーブルのキーワード 

キーワード

説明

Always  

out-channel に送信する前にメッセージが変換チャネルを通過する場合でも、変換を実行する  

Appledouble  

Appledouble フォーマット以外の MacMIME フォーマットを Appledouble フォーマットに変換する  

Applesingle  

Applesingle フォーマット以外の MacMIME フォーマットを Applesingle フォーマットに変換する  

BASE64  

MIME エンコーディングを 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-channelout-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-msOUT-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 テーブル

CHARSET-CONVERSION

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



MTA CONVERSIONS ファイル エントリ

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 キーワードである AppledoubleApplesingleBinhex、および 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-CONVERSIONconversion チャネルの場合は個別の 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 つの環境変数は以下のとおりです。

  • INPUT_FILE - 処理する入力ファイルの名前

  • OUTPUT_FILE - 生成する出力ファイルの名前

  • INFO_FILE - エンベロープ受取人アドレスを含むファイルの名前

これらの環境変数の値は、通常の方法でコマンドラインに代入することができます。UNIX では、変数名の前に「$」記号を挿入します。


前へ     目次     索引     DocHome     次へ     
Copyright © 2002 Sun Microsystems, Inc. All rights reserved.

最新更新日 2002 年 2 月 27 日