tm-edit 7.100 説明書（日本語版）
********************************

This file documents tm-edit, a MIME composer for GNU Emacs.

GNU Emacs 用の MIME composer である `tm-edit' について説明します。

What is tm-edit?
****************

*tm-edit* は GNU Emacs で動作する汎用的な MIME composer です。

tm-edit は GNUS の作者としても有名な 梅田 政信
<umerin@mse.kyutech.ac.jp> さんが書かれた
`mime.el' を基に

   * RFC 1521/1522 化
   * Content-Disposition field (see Content-Disposition (tm-ja)) (RFC 1806)
     の利用
   * 入れ子になった multi-part message (see multipart (tm-ja))
   * PGP (see PGP)
   * file type における parameter の自動指定の強化

などの改良を行いました。

tm-MUA (see tm-MUA (tm-ja)) では tm-edit を使うことにより、容易に
MIME message を作成できます。

mime/editor-mode
****************

*mime/editor-mode* は MIME message を作成するための minor mode です。
この mode では *tag* を使ってさまざまな種類の data を表現し、複数の部
分からなる message (see multipart (tm-ja)) を編集することを可能にし
ています。

tag には

   *  single-part tag
   *  multi-part tag

の２つがあります。

single-part tag は single part を表現するための tag で、

             --[[TYPE/SUBTYPE;PARAMETERS][ENCODING]
             OPTIONAL-FIELDS]

というような形をしています。

TYPE/SUBTYPE および PARAMETERS は Content-Type field (see
Content-Type field (tm-ja)) の type/subtype および parameters を表し
ます。TYPE/SUBTYPE は必須であり、PARAMETERS は省略可です。

ENCODING は Content-Transfer-Encoding field を表します。これも省略可で
す。

OPTIONAL-FIELDS は Content-Type, Content-Transfer-Encoding 以外の
fieldを書くための部分で、省略可です。

multi-part tag は multi part (see multipart (tm-ja)) を表現するため
のtag で、

             --<<TYPE>>-@{

という形の *multi-part 開始 tag* と呼ばれる multi part の開始を示す
tag と

             --@}-<<TYPE>>

という形の *multi-part 終了 tag* と呼ばれる multi part の終了を示す
tag があります。

また、multi-part 開始 tag と multi-part 終了 tag で囲まれた部分を
*enclosure* と呼びます。

single-part に対する操作
************************

single-part を作るための操作には以下のようなものがあります。

`C-c C-x C-t'
     text part を表す single-part tag を挿入します。

`C-c C-x C-i'
     file を MIME part として添付します。前に `C-u' を付けた場合、常に
     media-type, subtype 等を聞いて来ます。(cf. tag specification for inserted file)

`C-c C-x C-e'
     external part を挿入します。

`C-c C-x C-v'
     `C-g' が押されるまで録音を行い、音声 part を挿入します。（使用で
     きない場合があります）

`C-c C-x C-y'
     現在表示中の (mail or news) message を挿入します。（実際の動作は
     使用している MUA に依存します）

`C-c C-x C-m'
     mail message を挿入します。

`C-c C-x C-w, C-c C-x C-s'
     signature を挿入します。

`C-c C-x C-k'
     PGP (see PGP) の公開鍵を挿入します。

`C-c C-x t'
     任意の single-part tag を挿入します。

enclosure に対する操作
**********************

enclosure を作るための操作としては以下のようなものがあります。

`C-c C-x a'
     指定した region を multipart/alternative として囲みます。

`C-c C-x p'
     指定した region を multipart/parallel として囲みます。

`C-c C-x m'
     指定した region を multipart/mixed として囲みます。

`C-c C-x d'
     指定した region を multipart/digest として囲みます。

`C-c C-x s'
     指定した region に電子署名を行います。(cf. PGP)

`C-c C-x e'
     指定した region を暗号化します。(cf. PGP)

`C-c C-x q'
     指定した region 内の tag を無効にし、その tag を文字列として利用
     できるようにします。（現在の版ではうまく働かないことがあります。
     また、電子署名との併用に関しても不完全です）

mime/editor-mode におけるその他の操作
*************************************

mime/editor-mode におけるその他の操作を説明します。

`C-c C-c'
     編集中の message を送信します。

`C-c C-x C-p'
     編集中の message を preview します。(cf.
     mime/viewer-mode (tm-view-ja))

`C-c C-x C-z'
     編集中の message を送信することなく、mime/editor-mode を終了しま
     す。

`C-c C-x ?'
     help message を表示します。

`C-c C-x /'
     大きな message を送信する場合に message/partial 形式に自動分割可
     能とするかどうかを決めます。

`C-c C-x 7'
     transfer level (see transfer level) を 7bit (see
     7bit (tm-ja)) にします。

`C-c C-x 8'
     transfer level (see transfer level) を 8bit (see
     8bit (tm-ja)) にします。

`C-c C-x v'
     message 全体を電子署名するかどうかを決めます。(cf. PGP)

`C-c C-x h'
     message 全体を暗号化するかどうかを決めます。(cf. PGP)

`C-c C-x ?'
     help message を表示します。

挿入される file に対する tag の決定
***********************************

`C-c C-x C-i' (`mime-editor/insert-file') を実行した時、挿入される
file に対する media-type や encoding などの tag の情報は変数
`mime-file-types' によって file 名から推測されます。

前に `C-u' を付けた時、および、適当な値が見付からなかった場合、userに
対して値の入力を促します。（前に `C-u' を付けた時、推測された値が既定
値として用いられます）

file 名に対する既定値を変えたい場合は変数 `mime-file-types'を設定して
下さい。

 -- Variable: mime-file-types

     挿入される file の file 名に対する tag の既定値を与える。

     この変数は

          	(FILE_PAT TYPE SUBTYPE PARAMS ENCODING
          	 DISPOSITION_TYPE DISPOSITION_PARAMS)

     という list の list で、各要素は以下の通りである：

     `FILE_PAT'
          file 名を表す正規表現

     `TYPE'
          media type

     `SUBTYPE'
          media subtype

     `PARAMS'
          Content-Type field の parameter

     `ENCODING'
          Content-Transfer-Encoding

     `DISPOSITION_TYPE'
          disposition-type

     `DISPOSITION_PARAMS'
          Content-Disposition field の parameter

     設定例： `*.rtf' に対する media type を application/rtf にする場
     合

          (call-after-loaded
           'tm-edit
           (lambda ()
             (set-alist 'mime-file-types
          	      "\\.rtf$"
          	      '("application" "rtf" nil nil
          		"attachment" (("filename" . file)))
          	      )))

transfer level
**************

message に挿入する data は 7bit (see 7bit (tm-ja)) ないし 8bit
(see 8bit (tm-ja)) もしくは binary (see binary (tm-ja)) で表現す
ることができます。

よって、7bit しか通さない MTA (see MTA (tm-ja)) を経由する場合、
7bit のdata はそのままで送れますが、8bit や binary の data は 7bit に
変換しなければなりません。

同様に、8bit しか通さない MTA を経由する場合、7bit や 8bit の data は
そのままで送れますが、binary の data は 7bit か 8bit に変換しなければ
なりません。

*[Memo]* EBCDIC しか通さない MTA を経由する場合、7bit の data も
     base64 等で変換しないと送れませんが、私は EBCDIC のことまでは知り
     ません。(^_^;

     同様に、制御文字を通さない MTA のことや code 変換を行なう MTA も
     消えてなくなって欲しいです。(^_^;

     binary も通す MTA も存在するんでしょうが、今のところあまり一般的
     とはいえないでしょう。

*transfer level* というのはどの範囲の data まで送れるかということを表
すものです。tm-edit は`mime-editor/transfer-level' という変数を持って
おり、これでtransfer level を表現します。

 -- Variable: mime-editor/transfer-level

     transfer level を表す。

     ある data の transfer level がこの値を越える場合、7bit data への
     変換が行われる。

     現在のところ、7 か 8 が有効である。既定値は 7 である。

     EBCDIC を 5, ASCII printable のみを 6, binary を 9 とすることを計
     画しているが、実装の予定はない。

*[Memo]* transfer level は message header (see header) には関
     係しない。RFC 1521は body において、8bit の data を使えるように
     RFC 822 (see RFC 822 (tm-ja)) を拡張しているが、message header
     では us-ascii (see us-ascii (tm-ja)) のみを用いることを求めて
     いる。

header での非 ASCII 文字の使用
******************************

RFC 1522 (see RFC 1522 (tm-ja)) では header で非 ASCII 文字を表現す
るための方法を定義しています。

これは *encoded-word* (see encoded-word (tm-ja)) と呼ばれる型式で、
MIME charset (see MIME charset (tm-ja)) を宣言し、かつ、7bit (see
7bit (tm-ja)) で表現することを可能にしています。

どうしても encoded-word を使いたくない場合
==========================================

ところで、header で encoded-word を用いずに生で非 ASCII 文字列を入れる
のは間違っています。なぜなら、Internet ではさまざまな符号化文字集合
(see Coded character set (tm-ja))が使われており、MIME charset
(see MIME charset (tm-ja)) を明示的に宣言しなければそれらを正確に区
別することはできないからです。

例えば、MIME charset を宣言しなければ iso-8859-1 (see
iso-8859-1 (tm-ja)) と iso-8859-2 (see iso-8859-2 (tm-ja)) は見分
けが付かないでしょう。

しかしながら、どうしても encoded-word を使いたくない場合には以下の変数
を設定してください。

 -- Variable: mime/field-encoding-method-alist

     field 名と符号化法を表す symbol の対からなる連想 list.

     field 名は文字列、もしくは、任意の文字列を表す `t' である。

     符号化法は、`nil' ならば無変換、`mime' ならばencoded-word, MIME
     charset を表す symbol ならばその符号化文字集合へencoded-word を用
     いずに変換することを表す。

     field 名は文字列から検索され、指定した文字列が見付からなければ`t'
     を用いる。

     既定値は

          (("X-Nsubject" . iso-2022-jp-2)
           ("Newsgroups" . nil)
           (t            . mime)
           ))

     である。即ち、X-Nsubject field は生の iso-2022-jp-2 (see
     iso-2022-jp-2 (tm-ja)), Newsgroup は無変換、それ以外の field は
     encoded-word に変換される。

また、field 毎ではなく、符号化文字集合毎に指定したい場合は、変数
`mime-eword/charset-encoding-alist' を用いてください。(see API about header)

header に関する関数・変数
=========================

 -- Command: mime/encode-message-header &optional CODE-CONVERSION

     Current buffer の message header に存在する非 ASCII 文字をnetwork
     表現に変換します。

     optional 引数の CODE-CONVERSION に非-nil が指定された場合、
     encoded-word にしない field を`mime/field-encoding-method-alist'
     に従って、code 変換します。

 -- Function: mime/encode-field STRING

     STRING を field として encoded-word に変換します。

     長い行は RFC 822 に従って折返されます。

 -- Function: mime-eword/encode-string STRING &optional COLUMN MODE

     STRING を encoded-word に変換します。

     長い行は RFC 822 に従って折返されます。

     COLUMN はこの文字列が何桁目から始まっているかを指定します。既定値
     は 0 です。

     MODE はこの文字列がどういう部分で使われているかを示します。指定で
     きる値としては `text', `comment', `phrase' があります。既定値は
     `phrase' です。

 -- Variable: mime-eword/charset-encoding-alist

     MIME charset を表す symbol と nil, もしくは、`"B"' か`"Q"' の文字
     列の対からなる連想 list.

     `nil' はその MIME charset を encoded-word にしないことを表し、
     `"B"' はその MIME charset を B 方式の encoded-word にすることを表し、
     `"Q"' はその MIME charset を Q 方式の encoded-word にすることを表す。

PGP
***

tm-edit では *PGP/MIME* (see PGP/MIME (tm-ja)) (RFC 2015) および
*PGP-kazu* (see PGP-kazu (tm-ja)) (draft-kazu-pgp-mime-00.txt)によ
る暗号化・電子署名・公開鍵の挿入機能を利用することができます。

但し、この機能を利用するには Mailcrypt package (see (mailcrypt))
とpgp command が必要です。

また、変数 `mimed-editor/signing-type' と変数
`mime-editor/encrypting-type' に `pgp-elkins' か`pgp-kazu' を代入して
ください。

`pgp-elkins' を指定した場合 PGP/MIME が使われ、
`pgp-kazu' を指定した場合 PGP-kazu が使われます。

 -- Variable: mimed-editor/signing-type

     PGP での電子書名の形式を指定します。

     `pgp-elkins' か `pgp-kazu' を指定してください。

     既定値は `nil' です。

 -- Variable: mime-editor/encrypting-type

     PGP での暗号化の形式を指定します。

     `pgp-elkins' か `pgp-kazu' を指定してください。

     既定値は `nil' です。

謝辞
****

最初に、tm-edit の前身となった `mime.el' を書き、その配布と改造をお許
し下さった、梅田政信さんに感謝します。tm-edit の user interface の基本
的な設計は梅田さんの手によるもので、とても良い設計であったと思います。

次に、beta test に協力して下さった日本語版、英語版双方の tm mailing
list の member に感謝します。

概念索引
********

stty: stdin isn't a terminal

関数索引
********

stty: stdin isn't a terminal

変数索引
********

stty: stdin isn't a terminal