プローブを行い、メッセージフォーマットを変換する必要があると判断した場合、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
この場合、in-char-set は out-char-set が示す文字セットに変換されます。これらの文字セットは、MTA テーブルディレクトリに含まれる文字セット定義テーブル charsets.txt 内で定義されているものでなくてはなりません。文字セットがこのファイル内で適切に定義されていないと、変換は行われません。しかし、このファイルの中には現在もっとも利用度の高い数百種の文字セットが定義されているため、特に心配する必要はないでしょう。charsets.txt ファイルの詳細については、imsimta chbuild (UNIX および NT) ユーティリティーの説明を参照してください。
すべての条件が満たされると、MTA は文字セットマッピングを作成し、変換を実行します。変換されたメッセージ部分のラベルは、変換後の文字セット名に変更されます。
文字セット変換マッピングの機能は拡張されて、次に示す機能が新しく追加されました。
マッピングエントリの出力テンプレートに IN-CHARSET オプションを指定できます。このオプションがある場合、エンコードされた単語で指定されている文字セットよりも優先されます。
RELABEL-ONLY オプションを指定できます。このオプションは、整数 0 または 1 を受け入れます。このオプションの値が 1 の場合、OUT-CHARSET は IN-CHARSET に置き換わるだけで、ラベルの変更は行いません。
IN-CHARSET オプションを使用して入力文字セットを * に設定すると、文字セットから適切なラベルを察知できるようになります。
ローカルで使用している ISO-8859-1 を、インターネットで使用するために UTF-8 に変換する必要があるとします。さらに、インターネットへの接続は tcp_local を通して行われ、内部メッセージの発信と配信は tcp_internal と ims-ms で行われるとします。次に示す CHARSET-CONVERSION テーブルは、このような変換を実現します。各 IN-CHAN エントリは、それぞれを単一の行にする必要があります。円記号 (\) はこれを示すために使用されています。
CHARSET-CONVERSION IN-CHAN=tcp_internal;OUT-CHAN=tcp_local;CONVERT Yes IN-CHAN=tcp_local;OUT-CHAN=tcp_internal;CONVERT Yes IN-CHAN=tcp_local;OUT-CHAN=ims-ms;CONVERT Yes IN-CHAN=*;OUT-CHAN=*;CONVERT No IN-CHAN=tcp_internal;OUT-CHAN=tcp_local;IN-CHARSET=ISO-8859-1 OUT-CHARSET=UTF-8 IN-CHAN=tcp_local;OUT-CHAN=tcp_internal;IN-CHARSET=UTF-8 OUT-CHARSET=ISO-8859-1 IN-CHAN=tcp_local;OUT-CHAN=ims-ms;IN-CHARSET=UTF-8 OUT-CHARSET=ISO-8859-1 |
次に示す CHARSET-CONVERSION テーブルは、ローカルで使用している EUC-JP と ISO 2022 ベースの JP コードとの変換を指定しています。
CHARSET-CONVERSION IN-CHAN=ims-ms;OUT-CHAN=ims-ms;CONVERT No IN-CHAN=tcp_internal;OUT-CHAN=ims-ms;CONVERT No IN-CHAN=tcp_internal;OUT-CHAN=tcp_internal;CONVERT No IN-CHAN=tcp_internal;OUT-CHAN=*;CONVERT Yes IN-CHAN=*;OUT-CHAN=ims-ms;CONVERT Yes IN-CHAN=*;OUT-CHAN=tcp_internal;CONVERT Yes IN-CHAN=tcp_internal;OUT-CHAN=*;IN-CHARSET=EUC-JP OUT-CHARSET=ISO-2022-JP IN-CHAN=*;OUT-CHAN=ims-ms;IN-CHARSET=ISO-2022-JP OUT-CHARSET=EUC-JP IN-CHAN=*;OUT-CHAN=tcp_internal;IN-CHARSET=ISO-2022-JP OUT-CHARSET=EUC-JP |