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

メッセージフォーマットの変換

前述したように、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

ほかのローカルメールシステムに対するチャネルのエントリを追加することもできます。たとえば、tcp_internal チャネルのエントリは次のようになります。

CHARSET-CONVERSION

  IN-CHAN=tcp_local;OUT-CHAN=l;CONVERT              Yes
  IN-CHAN=tcp_local;OUT-CHAN=tcp_internal;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 ファイルが存在するかどうかを確認します。conversions ファイルが存在する場合、MTA はそのファイルをチェックして RELABEL=1 という記述があるかどうかを確認し、ある場合はそのエントリの指定に従って MIME ラベルを変換します。conversions ファイルのエントリについては、「変換処理を制御するには」を参照してください。

たとえば、次のような CHARSET-CONVERSION テーブルがあるとします。


CHARSET-CONVERSION  

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

また、次のような MTA conversion ファイルエントリがあるとします。


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

これらを組み合わせた結果、メッセージは tcp_local チャネルから ims-ms チャネルにルーティングされます。さらに、受信時の MIME ラベルが application/octet-stream でファイル名パラメータの拡張子が ps または msw の場合には、それぞれ application/postscript または application/msword という新しいラベルが付けられます。(このラベル付けはより正確であり、元のユーザーエージェントやゲートウェイがメッセージに付けておくべきもの。) このようなラベル変更が特に役立つのは、MIME-CONTENT-TYPES-TO-MR マッピングテーブルと組み合わせる場合です。このテーブルは、結果として得られた MIME タイプを変換して適切な MRTYPE タグに戻すために使用されます。この処理が最適に動作するためには、正確な MIME ラベル付けが必要です。すべてのコンテンツタイプに application/octet-stream とだけラベル付けされている場合、MIME-CONTENT-TYPES-TO-MR マッピングテーブルでは、これらすべてを 1 種類の MRTYPE に変換することしかできません。

前述の例と、次のような MIME-CONTENT-TYPES-TO-MR マッピングテーブルエントリについて考えます。

APPLICATION/POSTSCRIPT        PS 
APPLICATION/MSWORD              MW

たとえば、受信時に次のようなラベルが付いているとします。

Content-type: application/octet-stream; name=stuff.ps

このラベルは次のように変更されます。

Content-type: application/postscript

その後、PostScript であることをメッセージルーターに知らせる PS という MRTYPE タグに変換されます。

逆方向のラベル変換が役立つ場合もあります。逆方向のラベル変換とは、具体的な MIME 添付ファイルラベルを、一般的なバイナリデータを表す application/octet-stream というラベル に「ダウングレード」することを意味します。特に、具体的な MIME ラベルの「ダウングレード」は、convert_octet_stream チャネルキーワードとの組み合わせで mime_to_x400 チャネル (PMDF-X400) または xapi_local チャネル (PMDF-MB400) で使用されることがよくあります。その目的は、すべての MIME バイナリ添付ファイルを X.400 bodypart 14 形式に強制的に変換することです。

たとえば、次のような CHARSET-CONVERSION マッピングテーブルがあるとします。

CHARSET-CONVERSION

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

また、次のような PMDF conversions ファイルエントリがあるとします。

out-chan=mime_to_x400*; in-type=application; in-subtype=*;
   out-type=application; out-subtype=octet-stream; relabel=1
 
out-chan=mime_to_x400*; in-type=audio; in-subtype=*; 
   out-type=application; out-subtype=octet-stream; relabel=1 

out-chan=mime_to_x400*; in-type=image; in-subtype=*; 
   out-type=application; out-subtype=octet-stream; relabel=1 

out-chan=mime_to_x400*; in-type=video; in-subtype=*; 
   out-type=application; out-subtype=octet-stream; relabel=1

これらを組み合わせた結果、mime_to_x400* チャネルに送られるすべてのメッセージについて、さまざまな特定の MIME 添付ファイルラベルが一般的な application/octet-stream ラベルにダウングレードされます (convert_octet_stream が適用されるようにするため)。

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 テーブルは、VMS MAIL メールボックスまたは GroupWise ポストオフィスに配信するときは Appledouble フォーマットに変換することと、メッセージルーターチャネルに配信するときは Macbinary フォーマットに変換することを MTA に指示します。

CHARSET-CONVERSION
   IN-CHAN=*;OUT-CHAN=l;CONVERT              Appledouble 
   IN-CHAN=*;OUT-CHAN=wpo_local;CONVERT      Appledouble 
   IN-CHAN=*;OUT-CHAN=tcp_internal;CONVERT   Macbinary

この場合、すでに MacMIME フォーマットが使用されている部分のみが Appledouble フォーマットに変換されます。Macbinary フォーマットへの変換は、すでにいずれかの MacMIME フォーマットになっている部分に適用されます。また、MacMIME フォーマットでない部分には、MIME Content-type: ヘッダーに X-MAC-TYPE パラメータと X-MAC-CREATOR パラメータが含まれている場合だけ適用されます。

Appledouble または Block フォーマットへの変換には、元の Macintosh ファイルに含まれる Macintosh クリエータおよびタイプ情報に基づいて Appledouble または Block フォーマットの部分のデータフォークに付ける MIME ラベルを指定するために、MAC-TO-MIME-CONTENT-TYPES マッピングテーブルが使用されることもあります。このテーブルのプローブには、format|type|creator|filename の形式が使用されます。format の値には SINGLE、BINHEX、MACBINARY のどれかが指定され、type の値には Macintosh タイプ情報 (16進)、creator の値には Macintosh クリエータ情報 (16進)、そして filename の値には実際のファイル名が指定されます。

たとえば、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 ラベルの変換を実行することも可能です。