From: morioka Date: Fri, 3 Jul 1998 07:36:08 +0000 (+0000) Subject: New file. X-Git-Tag: semi-1_8_2_9~13 X-Git-Url: http://git.chise.org/gitweb/?a=commitdiff_plain;h=07ba61c8defd4b3a77d7a7010975285905015901;p=elisp%2Fsemi.git New file. --- diff --git a/mime-ui-ja.sgml b/mime-ui-ja.sgml new file mode 100644 index 0000000..f8dd753 --- /dev/null +++ b/mime-ui-ja.sgml @@ -0,0 +1,683 @@ + + +SEMI 1.8 説明書 +<author>守岡 知彦 <mail>morioka@jaist.ac.jp</mail> +<date>1998/07/03 + +<toc> +</head> + +<body> + +<abstract> +<p> +This file documents SEMI, a MIME user interface for GNU Emacs. +<p> +GNU Emacs 用の MIME user interface である SEMI について説明します。 +</abstract> + + +<h1> SEMI って何? +<node> Introduction +<p> +SEMI は GNU Emacs 用の MIME user interface を提供する package です。 +<p> +SEMI が提供する MIME user interface は MIME-View と MIME-Edit からなりま +す。 +<p> +MIME-View は MIME や STD 11 および『地域化された RFC 822』message を表示 +したり、操作したりするための user interface の中核です。 +<p> +MIME-Edit は MIME message を生成するための user interface です。 +<p> +各 MUA でこれらの機能を利用することにより、高度な MIME 機能を利用するこ +とができます。 + + +<h1> MIME message の閲覧 +<node> MIME-View +<p> +MIME-View は GNU Emacs で動作する汎用的な MIME viewer です。 +<p> +MIME-View は MIME message を閲覧するための利用者界面 (user interface) +の核であり、この上で presentation-method と呼ばれる表示を作るプログラム +を動かしたり、acting-method と呼ばれる entity の処理プログラムを動かす +ことが可能で、さまざまな種類の entity を扱う事ができるようになっています。 + + +<h2> MIME-View 概説 +<node> Overview of MIME-View +<p> +Internet の電子書簡・ネットニュースなどの書面 (message) の表現形式は +STD 11 に基づいています。STD 11 の書面本体 (message body) は行を唯一の +構造とする簡易文面 (plain text) であり、文字符号も us-ascii と定められ +ています。実際には、文字符号を us-ascii の代わりにその言語圏で用いられ +る文字符号とした『地域化された STD 11』書面も用いられてきましたが、こ +の場合も書面の文字符号は1つです。このため、利用者界面 (Message User +Agent) は、しばしば、byte 列 = us-ascii 文字列、ないしは、byte 列 = そ +の言語圏で用いる文字符号の文字列のように見倣してきました。 +<p> +しかしながら、MIME では書面は entity を単位とする木構造になり、また、 +1つの書面で複数の文字符号を用いることができます。また、entity の内容 +は文面や絵のような単純に表示可能なものだけでなく、音声や動画などの一定 +時間再生されるようなものや特定のアプリケーションのデータやプログラムの +ソース、あるいは、ftp や mail service の利用法や URL といった形で表さ +れた外部参照などのさまざまなものが考えらます。このため、表示だけを考え +ていた STD 11 における利用者界面の単純な延長では MIME の全ての機能を扱 +うことはできません。つまり、MIME の形式に合わせて復号するだけでは不十 +分であり、利用者との対話的な再生処理を考慮する必要があります。MIME 書 +面の形式は自動処理がしやすく設計されていますが、MIME 書面に含まれる内 +容の中にはセキュリティー上の問題から自動処理をするべきでないものがあり、 +こういったものの再生に関しては利用者の判断を仰ぐように設計されるべきで +しょう。結局、MIME 書面を扱うためには STD 11 および MIME の構文で記述 +されたメッセージの情報交換用表現とその解釈結果である表示画面や再生等の +処理を区別して考える必要があります。また、利用者との対話的な再生処理が +必要です。 +<p> +このため、MIME-View は1つの書面に対して、情報交換用表現を格納する +mime-raw-buffer と表示用表現を格納する mime-preview-buffer の2つの +buffer を用います。 +<p> +MIME-View は mime-preview-buffer に対して mime-view-mode という MIME +message を閲覧するための mode を提供します。利用者はここで各 entity に +対して操作を行うことができます。 + + +<h2> mime-preview-buffer の画面構成 +<node> MIME-Preview +<p> +mime-view-mode では各 entity に対して +<p> +<verb> + [entity-button] + (header) + + (body) + (separator) +</verb> +<p> +<noindent> +という情報を表示します。これらは条件に従って design を変更したり、表示 +を抑制することもできます。 +<p> +以下に、表示例を示します。 + + +<verb> +From: morioka@jaist.ac.jp (守岡 知彦 / MORIOKA Tomohiko) +Subject: Re: 質問? +Newsgroups: zxr.message.mime +Date: 22 Oct 93 11:02:44 +Mime-Version: 1.0 +Organization: Japan Advanced Institute of Science and Technology, + Ishikawa, Japan + +[1 (text/plain)] + MIME-Edit mode における、MIME message の作り方。 + + C-c C-x ? を押すと help が出てくる。 + +C-c C-x C-t insert a text message. +C-c C-x TAB insert a (binary) file. +C-c C-x C-e insert a reference to external body. +C-c C-x C-v insert a voice message. +C-c C-x C-y insert a mail or news message. +C-c C-x RET insert a mail message. +C-c C-x C-s insert a signature file at end. +C-c C-x t insert a new MIME tag. +C-c C-x a enclose as multipart/alternative. +C-c C-x p enclose as multipart/parallel. +C-c C-x m enclose as multipart/mixed. +C-c C-x d enclose as multipart/digest. +C-c C-x s enclose as PGP signed. +C-c C-x e enclose as PGP encrypted. +C-c C-x C-k insert PGP public key. +C-c C-x C-p preview editing MIME message. +... + +って訳で、C-c C-x C-i を押して、挿入したい binary file を指定します。 + + binary file の MIME encoding には、普通、Base64 を指定します。 + +[2 (image/gif)] + +[3 (text/plain)] + + こんな風に、絵入り message のでき上がり。 + +〓〓〓〓〓〓〓〓〓〓〓 ロシアン・ティーを一杯。 〓〓〓〓〓〓〓〓〓〓〓 +〓〓〓〓〓 ☆ ジャムではなくマーマレードでもなく蜂蜜で ☆ 〓〓〓〓〓 +〓〓〓〓〓 МОРいОКА ТОМОХИКО 〓〓〓〓〓 +〓〓〓〓〓〓〓 Internet E-mail: <morioka@jaist.ac.jp> 〓〓〓〓〓〓〓 +</verb> + + +<h3> entity-button +<node> entity-button +<p> +<concept>entity-button</concept> は entity の先頭にあって、その entity +に関する大まかな情報を表示する部分です。 +<p> +標準では + +<verb> + [1.3 test (text/plain)] +</verb> + +<noindent> +のような感じに表示されます。 +<p> +最初の数字は message 中のこの entity の位置を節番号のように表したもの +で、<concept>entity-number</concept> と呼びます。 +<p> +2番目の文字列は表題を表します。この情報は、 + +<ol> +<li>Content-Description field もしくは Subject field に書かれた表題 +<li>Content-Disposition field の filename parameter に書かれた file 名 +<li>Content-Type field の name parameter に書かれた file 名 +<li> uuencode の場合の file 名 +</ol> + +<noindent> +から作ります。どれも存在しない場合は空白が表示されます。 +<p> +3番目の括弧の中の情報はその entity の media-type/subtype を表します。 +非 MIME entity の場合、<code>nil</code> が表示されます。 +<p> +この entity-button は entity の内容を象徴する icon のような役割を果た +します。例えば、 + +<verb> + [2 (image/gif)] +</verb> + +<noindent> +の上で <kbd>v</kbd> を押せばここに入っている絵が表示されます。 +<p> +また、mouse 操作が可能な場合、entity-button を第2ボタン(3 button +mouse の場合、中央のボタン)で押せば、同様にその絵が表示されます。 + + +<h3> entity-header +<node> entity-header +<p> +<concept>entity-header</concept> はある entity の header を表示する部 +分です(「そのままやんけ」って怒らないで。そういうもんなんです)。 + + +<h3> entity-body +<node> entity-body +<p> +<concept>entity-body</concept> は part の内容を表示する部分です。 +<p> +これもひねりが足りないですが、まあ、そういうもんです。 +<p> +とはいえ、実際には少しひねってます。 +<p> +text entity の場合は charset に応じて code 変換したりしますし、XEmacs +では image entity を変換しないといけないし。 +<p> +詳しくはまた後で。 + + +<h2> mime-preview-buffer での操作 +<node> mime-view-mode +<p> +mime-preview-buffer には以下の機能があります。 +<p> +<kl> +<kt>u +<kd> +上の part に戻る(message の一番上の part でこれを行なうと Summary +mode に戻る (*1)) +</kd> +<kt>p<kd>前の part に移動する +</kd> +<kt>M-TAB<kd>前の part に移動する +</kd> +<kt>n<kd>次の part に移動する +</kd> +<kt>TAB<kd>次の part に移動する +</kd> +<kt>SPC<kd>scroll up する +</kd> +<kt>M-SPC<kd>scroll down する +</kd> +<kt>DEL<kd>scroll down する +</kd> +<kt>RET<kd>次の行に移動する +</kd> +<kt>M-RET<kd>前の行に移動する +</kd> +<kt>v<kd>part を再生する (*2) +</kd> +<kt>e<kd>part から file を取り出す (*2) +</kd> +<kt>C-c C-p<kd>part を印刷する (*2) +</kd> +<kt>mouse-button-2 +<kd> +preview-buffer 中の mouse button を起動する +<p> +content-button を押せば、その part が再生される(*2) +<p> +URL-button を押せば、その WWW browser が起動される +</kd> +</kl> +<p> +<memo title="注意"> +<p> +(*1) MUA で mime-view の設定をしていない場合、Summary mode には戻りま +せん。 +<p> +(*2) 実際の動作は対応する method に依ります。 +</memo> + + +<h1> MIME message の編集 +<node> MIME-Edit +<p> +<concept>MIME-Edit</concept> は GNU Emacs で動作する汎用的な MIME +composer です。 + + +<h2> MIME message を編集するための minor-mode +<node> mime-edit-mode +<p> +<concept>mime-edit-mode</concept> は MIME message を作成するための +minor-mode です。この mode では <concept>tag</concept> を使ってさまざま +な種類の data を表現し、さまざまな種類の data からなる複数の部分からなる +message を編集することを可能にしています。 +<p> +tag には + +<ul> +<li> single-part tag +<li> multi-part tag +</ul> + +<noindent> +の2つがあります。 +<p> +single-part tag は single part を表現するための tag で、 +<p> +<verb> + --[[TYPE/SUBTYPE;PARAMETERS][ENCODING] + OPTIONAL-FIELDS] +</verb> +<p> +<noindent> +というような形をしています。 +<p> +TYPE/SUBTYPE および PARAMETERS は <dref file="mime-ja">Content-Type +</dref> 欄の type/subtype および parameters を表します。TYPE/SUBTYPE は +必須であり、PARAMETERS は省略可です。 +<p> +ENCODING は <dref file="mime-ja">Content-Transfer-Encoding</dref> 欄を表 +します。これも省略可です。 +<p> +OPTIONAL-FIELDS は Content-Type, Content-Transfer-Encoding 以外の +field を書くための部分で、省略可です。 +<p> +multi-part tag は <a file="mime-ja" node="multipart">multi part</a> を表 +現するための tag で、 +<p> +<verb> + --<<TYPE>>-@{ +</verb> +<p> +<noindent> +という形の <concept>multi-part 開始 tag</concept> と呼ばれる multi +part の開始を示す tag と +<p> +<verb> + --@}-<<TYPE>> +</verb> +<p> +<noindent> +という形の <concept>multi-part 終了 tag</concept> と呼ばれる multi +part の終了を示す tag があります。 +<p> +また、multi-part 開始 tag と multi-part 終了 tag で囲まれた部分を +<concept>enclosure</concept> と呼びます。 + + +<h2> single-part に対する操作 +<node> single-part operations +<p> +single-part を作るための操作には以下のようなものがあります。 + +<kl> +<kt>C-c C-x C-t +<kd> +text part を表す single-part tag を挿入します。 +</kd> +<kt>C-c C-x C-i +<kd> +file を MIME part として添付します。前に <kbd>C-u</kbd> を付けた場合、 +常に media-type, subtype 等を聞いて来ます。<cf node="tag specification +for inserted file"> +</kd> +<kt>C-c C-x C-e +<kd> +external part を挿入します。 +</kd> +<kt>C-c C-x C-v +<kd> +<kbd>C-g</kbd> が押されるまで録音を行い、音声 part を挿入します。(使 +用できない場合があります) +</kd> +<kt>C-c C-x C-y +<kd> +現在表示中の (mail or news) message を挿入します。(実際の動作は使用し +ている MUA に依存します) +</kd> +<kt>C-c C-x C-m +<kd> +mail message を挿入します。 +</kd> +<dt><key>C-c C-x C-w</key>, <key>C-c C-x C-s</key> +<dd> +signature を挿入します。 +</dd> +<kt>C-c C-x C-k +<kd> +<dref>PGP</dref> の公開鍵を挿入します。 +</kd> +<kt>C-c C-x t +<kd> +任意の single-part tag を挿入します。 +</kl> + + +<h2> enclosure に対する操作 +<node> enclosure operation +<p> +enclosure を作るための操作としては以下のようなものがあります。 + +<kl> +<kt>C-c C-m C-a +<kd> +指定した region を multipart/alternative として囲みます。 +</kd> +<kt>C-c C-x C-p +<kd> +指定した region を multipart/parallel として囲みます。 +</kd> +<kt>C-c C-x C-m +<kd> +指定した region を multipart/mixed として囲みます。 +</kd> +<kt>C-c C-x C-d +<kd> +指定した region を multipart/digest として囲みます。 +</kd> +<kt>C-c C-x C-s +<kd> +指定した region に電子署名を行います。<cf node="PGP"> +</kd> +<kt>C-c C-x C-e +<kd> +指定した region を暗号化します。<cf node="PGP"> +<kt>C-c C-x C-q +<kd> +指定した region 内の tag を無効にし、その tag を文字列として利用できる +ようにします。(現在の版ではうまく働かないことがあります。また、電子署 +名との併用に関しても不完全です) +</kl> + + +<h2> mime-edit-mode におけるその他の操作 +<node> other operations of mime-edit-mode +<p> +mime-edit-mode におけるその他の操作を説明します。 + +<kl> +<kt>C-c C-c +<kd> +編集中の message を送信します。 +</kd> +<kt>C-c C-x p +<kd> +編集中の message を preview します。<cf node="MIME-View"> +</kd> +<kt>C-c C-x C-z +<kd> +編集中の message を送信することなく、mime-edit-mode を終了します。 +</kd> +<kt>C-c C-x / +<kd> +大きな message を送信する場合に message/partial 形式に自動分割可能とす +るかどうかを決めます。 +</kd> +<kt>C-c C-x 7 +<kd> +<dref>transfer level</dref> を <dref file="mime-ja">7bit</dref> にします。 +</kd> +<kt>C-c C-x 8 +<kd> +<dref>transfer level</dref> を <dref file="mime-ja">8bit</dref> にします。 +</kd> +<kt>C-c C-x v +<kd> +message 全体を電子署名するかどうかを決めます。<cf node="PGP"> +</kd> +<kt>C-c C-x h +<kd> +message 全体を暗号化するかどうかを決めます。<cf node="PGP"> +<kt>C-c C-x ? +<kd> +help message を表示します。 +</kl> + + +<h2> 挿入される file に対する tag の決定 +<node> tag specification for inserted file +<p> +<kbd>C-c C-x C-i</kbd> (<code>mime-editor/insert-file</code>) を実行し +た時、挿入される file に対する media-type や encoding などの tag の情 +報は変数 <code>mime-file-types</code> によって file 名から推測されます。 +<p> +前に <kbd>C-u</kbd> を付けた時、および、適当な値が見付からなかった場合、 +user に対して値の入力を促します。(前に <kbd>C-u</kbd> を付けた時、推 +測された値が既定値として用いられます) +<p> +file 名に対する既定値を変えたい場合は変数 <code>mime-file-types</code> +を設定して下さい。 + +<defvar name="mime-file-types"> +<p> +挿入される file の file 名に対する tag の既定値を与える。 +<p> +この変数は + +<lisp> + (FILE_PAT TYPE SUBTYPE PARAMS ENCODING + DISPOSITION_TYPE DISPOSITION_PARAMS) +</lisp> + +という list の list で、各要素は以下の通りである: + +<dl> +<dt>FILE_PAT +<dd>file 名を表す正規表現 +<dt>TYPE +<dd>media type +<dt>SUBTYPE +<dd>media subtype +<dt>PARAMS +<dd>Content-Type field の parameter +<dt>ENCODING +<dd>Content-Transfer-Encoding +<dt>DISPOSITION_TYPE +<dd>disposition-type +<dt>DISPOSITION_PARAMS +<dd>Content-Disposition field の parameter +</dl> + +<noindent> +設定例: <file>*.rtf</file> に対する media type を application/rtf に +する場合 + +<lisp> +(eval-after-load + "mime-edit" + '(set-alist 'mime-file-types + "\\.rtf$" + '("application" "rtf" nil nil + "attachment" (("filename" . file))) + )) +</lisp> +</defvar> + + +<h2> transfer level +<node> transfer level +<p> +message に挿入する data は <dref file="mime-ja">7bit</dref> ないし +<dref file="mime-ja">8bit</dref> もしくは <dref +file="mime-ja">binary</dref> で表現することができます。 +<p> +よって、7bit しか通さない <dref file="mime-ja">MTA</dref> を経由する場合、 +7bit の data はそのままで送れますが、8bit や binary の data は 7bit に変 +換しなければなりません。 +<p> +同様に、8bit しか通さない MTA を経由する場合、7bit や 8bit の data は +そのままで送れますが、binary の data は 7bit か 8bit に変換しなければ +なりません。 +<p> +<memo> +EBCDIC しか通さない MTA を経由する場合、7bit の data も base64 等で変 +換しないと送れませんが、私は EBCDIC のことまでは知りません。(^_^; +<p> +同様に、制御文字を通さない MTA のことや code 変換を行なう MTA も消えて +なくなって欲しいです。(^_^; +<p> +binary も通す MTA も存在するんでしょうが、今のところあまり一般的とはい +えないでしょう。 +</memo> +<p> +<concept>transfer level</concept> というのはどの範囲の data まで送れるか +ということを表すものです。mime-edit は +<code>mime-transfer-level</code> という変数を持っており、これで +transfer level を表現します。 + + +<defvar name="mime-transfer-level"> +<p> +transfer level を表す。 +<p> +ある data の transfer level がこの値を越える場合、7bit data への変換が +行われる。 +<p> +現在のところ、7 か 8 が有効である。既定値は 7 である。 +<p> +EBCDIC を 5, ASCII printable のみを 6, binary を 9 とすることを計画し +ているが、実装の予定はない。 +</defvar> + + +<memo> +transfer level は <a node="header">message header</a> には関係しない。 +MIME は body において、8bit の data を使えるように <dref +file="mime-ja">STD 11</dref> を拡張しているが、message header では +<dref file="mime-ja">us-ascii</dref> のみを用いることを求めている。 +</memo> + + +<h1> その他 +<node> Various +<p> +<h2> PGP +<node> PGP +<p> +mime-edit では <concept>PGP/MIME</concept> (RFC 2015) および +<concept>PGP-kazu</concept> (draft-kazu-pgp-mime-00.txt) による暗号化・ +電子署名・公開鍵の挿入機能を利用することができます。 +<p> +但し、この機能を利用するには <a file="mailcrypt">Mailcrypt package</a> +と pgp command が必要です。 + +<defvar name="pgp-function-alist"> +<p> +Alist of service names vs. corresponding functions and its filenames. +Each element looks like <code>(SERVICE FUNCTION FILE)</code>. +<p> +SERVICE is a symbol of PGP processing. It allows `verify', `decrypt', +`fetch-key', `snarf-keys', `mime-sign', `traditional-sign', `encrypt' +or `insert-key'. +<p> +Function is a symbol of function to do specified SERVICE. +<p> +FILE is string of filename which has definition of corresponding +FUNCTION. +</defvar> + +<defun name="pgp-function"> + <args> method +<p> +Return function to do service <var>method</var>. +</defun> + + +<h2> 押釦 +<node> Buttons +<p> +<defvar name="mime-button-face"> +<p> +Face used for content-button or URL-button of MIME-Preview buffer. +</defvar> + +<defvar name="mime-button-mouse-face"> +<p> +Face used for MIME-preview buffer mouse highlighting. +</defvar> + +<defvar name="mime-browse-url-function"> +<p> +Function to browse URL. +</defvar> + + +<h2> 実行条件の設定 +<node> Acting-condition configuration +<p> +<defun name="mime-add-condition"> + <args> target-type condition <opts> mode file +<p> +Add <var>condition</var> to database specified by +<var>target-type</var>. +<p> +<var>target-type</var> must be <code>preview</code> or +<code>action</code>. +<p> +If optional argument <var>mode</var> is <code>strict</code> or +<code>nil</code> (omitted), <var>condition</var> is added strictly. +<p> +If optional argument <var>mode</var> is <code>with-default</code>, +<var>condition</var> is added with default rule. +<p> +If optional argument <var>file</var> is specified, it is loaded when +<var>condition</var> is activate. +</defun> + + +<h1> 概念索引 +<node> Concept Index + +<cindex> + + +<h1> 関数索引 +<node> Function Index + +<findex> + + +<h1> 変数索引 +<node> Variable Index + +<vindex> + +</body> diff --git a/mime-ui-ja.texi b/mime-ui-ja.texi new file mode 100644 index 0000000..8121b43 --- /dev/null +++ b/mime-ui-ja.texi @@ -0,0 +1,752 @@ +\input texinfo.tex +@setfilename mime-ui-ja.info +@settitle{SEMI 1.8 説明書} +@titlepage +@title SEMI 1.8 説明書 +@author 守岡 知彦 <morioka@@jaist.ac.jp> +@subtitle 1998/07/03 +@end titlepage +@node Top, Introduction, (dir), (dir) +@top SEMI 1.8 説明書 + +@ifinfo + +This file documents SEMI, a MIME user interface for GNU Emacs.@refill + +GNU Emacs 用の MIME user interface である SEMI について説明します。 +@end ifinfo + +@menu +* Introduction:: SEMI って何? +* MIME-View:: MIME message の閲覧 +* MIME-Edit:: MIME message の編集 +* Various:: その他 +* Concept Index:: 概念索引 +* Function Index:: 関数索引 +* Variable Index:: 変数索引 +@end menu + +@node Introduction, MIME-View, Top, Top +@chapter SEMI って何? + +SEMI は GNU Emacs 用の MIME user interface を提供する package です。 +@refill + +SEMI が提供する MIME user interface は MIME-View と MIME-Edit からなりま +す。@refill + + +MIME-View は MIME や STD 11 および『地域化された RFC 822』message を表示 +したり、操作したりするための user interface の中核です。@refill + +MIME-Edit は MIME message を生成するための user interface です。@refill + +各 MUA でこれらの機能を利用することにより、高度な MIME 機能を利用するこ +とができます。 + + +@node MIME-View, MIME-Edit, Introduction, Top +@chapter MIME message の閲覧 + +MIME-View は GNU Emacs で動作する汎用的な MIME viewer です。@refill + +MIME-View は MIME message を閲覧するための利用者界面 (user interface) +の核であり、この上で presentation-method と呼ばれる表示を作るプログラム +を動かしたり、acting-method と呼ばれる entity の処理プログラムを動かす +ことが可能で、さまざまな種類の entity を扱う事ができるようになっています。 + + +@menu +* Overview of MIME-View:: MIME-View 概説 +* MIME-Preview:: mime-preview-buffer の画面構成 +* mime-view-mode:: mime-preview-buffer での操作 +@end menu + +@node Overview of MIME-View, MIME-Preview, MIME-View, MIME-View +@section MIME-View 概説 + +Internet の電子書簡・ネットニュースなどの書面 (message) の表現形式は STD +11 に基づいています。STD 11 の書面本体 (message body) は行を唯一の構造と +する簡易文面 (plain text) であり、文字符号も us-ascii と定められています。 +実際には、文字符号を us-ascii の代わりにその言語圏で用いられる文字符号と +した『地域化された STD 11』書面も用いられてきましたが、この場合も書面の +文字符号は1つです。このため、利用者界面 (Message User Agent) は、しばし +ば、byte 列 = us-ascii 文字列、ないしは、byte 列 = その言語圏で用いる文 +字符号の文字列のように見倣してきました。@refill + +しかしながら、MIME では書面は entity を単位とする木構造になり、また、1 +つの書面で複数の文字符号を用いることができます。また、entity の内容は文 +面や絵のような単純に表示可能なものだけでなく、音声や動画などの一定時間再 +生されるようなものや特定のアプリケーションのデータやプログラムのソース、 +あるいは、ftp や mail service の利用法や URL といった形で表された外部参 +照などのさまざまなものが考えらます。このため、表示だけを考えていた STD +11 における利用者界面の単純な延長では MIME の全ての機能を扱うことはでき +ません。つまり、MIME の形式に合わせて復号するだけでは不十分であり、利用 +者との対話的な再生処理を考慮する必要があります。MIME 書面の形式は自動処 +理がしやすく設計されていますが、MIME 書面に含まれる内容の中にはセキュリ +ティー上の問題から自動処理をするべきでないものがあり、こういったものの再 +生に関しては利用者の判断を仰ぐように設計されるべきでしょう。結局、MIME +書面を扱うためには STD 11 および MIME の構文で記述されたメッセージの情報 +交換用表現とその解釈結果である表示画面や再生等の処理を区別して考える必要 +があります。また、利用者との対話的な再生処理が必要です。@refill + +このため、MIME-View は1つの書面に対して、情報交換用表現を格納する +mime-raw-buffer と表示用表現を格納する mime-preview-buffer の2つの +buffer を用います。@refill + +MIME-View は mime-preview-buffer に対して mime-view-mode という MIME +message を閲覧するための mode を提供します。利用者はここで各 entity に +対して操作を行うことができます。 + + +@node MIME-Preview, mime-view-mode, Overview of MIME-View, MIME-View +@section mime-preview-buffer の画面構成 + +mime-view-mode では各 entity に対して@refill + +@example + [entity-button] + (header) + + (body) + (separator) +@end example + +@noindent +という情報を表示します。これらは条件に従って design を変更したり、表示 +を抑制することもできます。 + +以下に、表示例を示します。 + + +@example +From: morioka@@jaist.ac.jp (守岡 知彦 / MORIOKA Tomohiko) +Subject: Re: 質問? +Newsgroups: zxr.message.mime +Date: 22 Oct 93 11:02:44 +Mime-Version: 1.0 +Organization: Japan Advanced Institute of Science and Technology, + Ishikawa, Japan + +[1 (text/plain)] + MIME-Edit mode における、MIME message の作り方。 + + C-c C-x ? を押すと help が出てくる。 + +C-c C-x C-t insert a text message. +C-c C-x TAB insert a (binary) file. +C-c C-x C-e insert a reference to external body. +C-c C-x C-v insert a voice message. +C-c C-x C-y insert a mail or news message. +C-c C-x RET insert a mail message. +C-c C-x C-s insert a signature file at end. +C-c C-x t insert a new MIME tag. +C-c C-x a enclose as multipart/alternative. +C-c C-x p enclose as multipart/parallel. +C-c C-x m enclose as multipart/mixed. +C-c C-x d enclose as multipart/digest. +C-c C-x s enclose as PGP signed. +C-c C-x e enclose as PGP encrypted. +C-c C-x C-k insert PGP public key. +C-c C-x C-p preview editing MIME message. +... + +って訳で、C-c C-x C-i を押して、挿入したい binary file を指定します。 + + binary file の MIME encoding には、普通、Base64 を指定します。 + +[2 (image/gif)] + +[3 (text/plain)] + + こんな風に、絵入り message のでき上がり。 + +〓〓〓〓〓〓〓〓〓〓〓 ロシアン・ティーを一杯。 〓〓〓〓〓〓〓〓〓〓〓 +〓〓〓〓〓 ☆ ジャムではなくマーマレードでもなく蜂蜜で ☆ 〓〓〓〓〓 +〓〓〓〓〓 МОРいОКА ТОМОХИКО 〓〓〓〓〓 +〓〓〓〓〓〓〓 Internet E-mail: <morioka@@jaist.ac.jp> 〓〓〓〓〓〓〓 +@end example + + + +@menu +* entity-button:: +* entity-header:: +* entity-body:: +@end menu + +@node entity-button, entity-header, MIME-Preview, MIME-Preview +@subsection entity-button +@cindex entity-number +@cindex entity-button + +@strong{entity-button} は entity の先頭にあって、その entity に関する大 +まかな情報を表示する部分です。@refill + +標準では + +@example + [1.3 test (text/plain)] +@end example + +@noindent +のような感じに表示されます。 + +最初の数字は message 中のこの entity の位置を節番号のように表したもので、 +@strong{entity-number} と呼びます。@refill + +2番目の文字列は表題を表します。この情報は、 + +@enumerate +@item +Content-Description field もしくは Subject field に書かれた表題 +@item +Content-Disposition field の filename parameter に書かれた file 名 +@item +Content-Type field の name parameter に書かれた file 名 +@item + uuencode の場合の file 名 +@end enumerate + +@noindent +から作ります。どれも存在しない場合は空白が表示されます。 + +3番目の括弧の中の情報はその entity の media-type/subtype を表します。非 +MIME entity の場合、@code{nil} が表示されます。@refill + +この entity-button は entity の内容を象徴する icon のような役割を果た +します。例えば、 + +@example + [2 (image/gif)] +@end example + +@noindent +の上で @kbd{v} を押せばここに入っている絵が表示されます。 + +また、mouse 操作が可能な場合、entity-button を第2ボタン(3 button +mouse の場合、中央のボタン)で押せば、同様にその絵が表示されます。 + + +@node entity-header, entity-body, entity-button, MIME-Preview +@subsection entity-header +@cindex entity-header + +@strong{entity-header} はある entity の header を表示する部 +分です(「そのままやんけ」って怒らないで。そういうもんなんです)。 + + +@node entity-body, , entity-header, MIME-Preview +@subsection entity-body +@cindex entity-body + +@strong{entity-body} は part の内容を表示する部分です。@refill + +これもひねりが足りないですが、まあ、そういうもんです。@refill + +とはいえ、実際には少しひねってます。@refill + +text entity の場合は charset に応じて code 変換したりしますし、XEmacs で +は image entity を変換しないといけないし。@refill + +詳しくはまた後で。 + + +@node mime-view-mode, , MIME-Preview, MIME-View +@section mime-preview-buffer での操作 + +mime-preview-buffer には以下の機能があります。@refill + +@table @kbd +@item @key{u} +上の part に戻る(message の一番上の part でこれを行なうと Summary +mode に戻る (*1)) + +@item @key{p} +前の part に移動する + +@item @key{M-TAB} +前の part に移動する + +@item @key{n} +次の part に移動する + +@item @key{TAB} +次の part に移動する + +@item @key{SPC} +scroll up する + +@item @key{M-SPC} +scroll down する + +@item @key{DEL} +scroll down する + +@item @key{RET} +次の行に移動する + +@item @key{M-RET} +前の行に移動する + +@item @key{v} +part を再生する (*2) + +@item @key{e} +part から file を取り出す (*2) + +@item @key{C-c C-p} +part を印刷する (*2) + +@item @key{mouse-button-2} +preview-buffer 中の mouse button を起動する + +content-button を押せば、その part が再生される(*2)@refill + +URL-button を押せば、その WWW browser が起動される@refill + +@end table + +@noindent +@strong{[注意]} +@quotation + +(*1) MUA で mime-view の設定をしていない場合、Summary mode には戻りませ +ん。@refill + +(*2) 実際の動作は対応する method に依ります。 +@end quotation + + + +@node MIME-Edit, Various, MIME-View, Top +@chapter MIME message の編集 +@cindex MIME-Edit + +@strong{MIME-Edit} は GNU Emacs で動作する汎用的な MIME +composer です。 + + +@menu +* mime-edit-mode:: MIME message を編集するための minor-mode +* single-part operations:: single-part に対する操作 +* enclosure operation:: enclosure に対する操作 +* other operations of mime-edit-mode:: mime-edit-mode におけるその他の操作 +* tag specification for inserted file:: 挿入される file に対する tag の決定 +* transfer level:: +@end menu + +@node mime-edit-mode, single-part operations, MIME-Edit, MIME-Edit +@section MIME message を編集するための minor-mode +@cindex enclosure +@cindex multi-part 終了 tag +@cindex multi-part 開始 tag +@cindex tag +@cindex mime-edit-mode + +@strong{mime-edit-mode} は MIME message を作成するための minor-mode です。 +この mode では @strong{tag} を使ってさまざまな種類の data を表現し、さま +ざまな種類の data からなる複数の部分からなる message を編集することを可 +能にしています。@refill + +tag には + +@itemize @bullet +@item + single-part tag +@item + multi-part tag +@end itemize + +@noindent +の2つがあります。 + +single-part tag は single part を表現するための tag で、@refill + +@example + --[[TYPE/SUBTYPE;PARAMETERS][ENCODING] + OPTIONAL-FIELDS] +@end example + +@noindent +というような形をしています。 + +TYPE/SUBTYPE および PARAMETERS は Content-Type +(@ref{(mime-ja)Content-Type}) 欄の type/subtype および parameters を表し +ます。TYPE/SUBTYPE は必須であり、PARAMETERS は省略可です。@refill + +ENCODING は Content-Transfer-Encoding +(@ref{(mime-ja)Content-Transfer-Encoding}) 欄を表します。これも省略可で +す。@refill + +OPTIONAL-FIELDS は Content-Type, Content-Transfer-Encoding 以外の field +を書くための部分で、省略可です。@refill + +multi-part tag は multi part (@ref{(mime-ja)multipart}) を表現するための +tag で、@refill + +@example + --<<TYPE>>-@@@{ +@end example + +@noindent +という形の @strong{multi-part 開始 tag} と呼ばれる multi +part の開始を示す tag と + +@example + --@@@}-<<TYPE>> +@end example + +@noindent +という形の @strong{multi-part 終了 tag} と呼ばれる multi +part の終了を示す tag があります。 + +また、multi-part 開始 tag と multi-part 終了 tag で囲まれた部分を +@strong{enclosure} と呼びます。 + + +@node single-part operations, enclosure operation, mime-edit-mode, MIME-Edit +@section single-part に対する操作 + +single-part を作るための操作には以下のようなものがあります。 + +@table @kbd +@item @key{C-c C-x C-t} +text part を表す single-part tag を挿入します。 + +@item @key{C-c C-x C-i} +file を MIME part として添付します。前に @kbd{C-u} を付けた場合、常に +media-type, subtype 等を聞いて来ます。(cf. @ref{tag specification for inserted file}) + +@item @key{C-c C-x C-e} +external part を挿入します。 + +@item @key{C-c C-x C-v} +@kbd{C-g} が押されるまで録音を行い、音声 part を挿入します。(使 +用できない場合があります) + +@item @key{C-c C-x C-y} +現在表示中の (mail or news) message を挿入します。(実際の動作は使用し +ている MUA に依存します) + +@item @key{C-c C-x C-m} +mail message を挿入します。 + +@item @key{C-c C-x C-w}, @key{C-c C-x C-s} +signature を挿入します。 + +@item @key{C-c C-x C-k} +PGP (@ref{PGP}) の公開鍵を挿入します。 + +@item @key{C-c C-x t} +任意の single-part tag を挿入します。 + +@end table + + + +@node enclosure operation, other operations of mime-edit-mode, single-part operations, MIME-Edit +@section enclosure に対する操作 + +enclosure を作るための操作としては以下のようなものがあります。 + +@table @kbd +@item @key{C-c C-m C-a} +指定した region を multipart/alternative として囲みます。 + +@item @key{C-c C-x C-p} +指定した region を multipart/parallel として囲みます。 + +@item @key{C-c C-x C-m} +指定した region を multipart/mixed として囲みます。 + +@item @key{C-c C-x C-d} +指定した region を multipart/digest として囲みます。 + +@item @key{C-c C-x C-s} +指定した region に電子署名を行います。(cf. @ref{PGP}) + +@item @key{C-c C-x C-e} +指定した region を暗号化します。(cf. @ref{PGP}) + +@item @key{C-c C-x C-q} +指定した region 内の tag を無効にし、その tag を文字列として利用できる +ようにします。(現在の版ではうまく働かないことがあります。また、電子署 +名との併用に関しても不完全です) + +@end table + + + +@node other operations of mime-edit-mode, tag specification for inserted file, enclosure operation, MIME-Edit +@section mime-edit-mode におけるその他の操作 + +mime-edit-mode におけるその他の操作を説明します。 + +@table @kbd +@item @key{C-c C-c} +編集中の message を送信します。 + +@item @key{C-c C-x p} +編集中の message を preview します。(cf. @ref{MIME-View}) + +@item @key{C-c C-x C-z} +編集中の message を送信することなく、mime-edit-mode を終了します。 + +@item @key{C-c C-x /} +大きな message を送信する場合に message/partial 形式に自動分割可能とす +るかどうかを決めます。 + +@item @key{C-c C-x 7} +transfer level (@ref{transfer level}) を 7bit (@ref{(mime-ja)7bit}) にし +ます。 + +@item @key{C-c C-x 8} +transfer level (@ref{transfer level}) を 8bit (@ref{(mime-ja)8bit}) にし +ます。 + +@item @key{C-c C-x v} +message 全体を電子署名するかどうかを決めます。(cf. @ref{PGP}) + +@item @key{C-c C-x h} +message 全体を暗号化するかどうかを決めます。(cf. @ref{PGP}) + +@item @key{C-c C-x ?} +help message を表示します。 + +@end table + + + +@node tag specification for inserted file, transfer level, other operations of mime-edit-mode, MIME-Edit +@section 挿入される file に対する tag の決定 + +@kbd{C-c C-x C-i} (@code{mime-editor/insert-file}) を実行した時、挿入さ +れる file に対する media-type や encoding などの tag の情報は変数 +@code{mime-file-types} によって file 名から推測されます。@refill + +前に @kbd{C-u} を付けた時、および、適当な値が見付からなかった場合、user +に対して値の入力を促します。(前に @kbd{C-u} を付けた時、推測された値が +既定値として用いられます)@refill + +file 名に対する既定値を変えたい場合は変数 @code{mime-file-types} +を設定して下さい。 + +@defvar mime-file-types + +挿入される file の file 名に対する tag の既定値を与える。@refill + +この変数は + +@lisp + (FILE_PAT TYPE SUBTYPE PARAMS ENCODING + DISPOSITION_TYPE DISPOSITION_PARAMS) +@end lisp + + +という list の list で、各要素は以下の通りである: + +@table @samp +@item FILE_PAT +file 名を表す正規表現 + +@item TYPE +media type + +@item SUBTYPE +media subtype + +@item PARAMS +Content-Type field の parameter + +@item ENCODING +Content-Transfer-Encoding + +@item DISPOSITION_TYPE +disposition-type + +@item DISPOSITION_PARAMS +Content-Disposition field の parameter + +@end table + +@noindent +設定例: @file{*.rtf} に対する media type を application/rtf に +する場合 + +@lisp +(eval-after-load + "mime-edit" + '(set-alist 'mime-file-types + "\\.rtf$" + '("application" "rtf" nil nil + "attachment" (("filename" . file))) + )) +@end lisp +@end defvar + + + +@node transfer level, , tag specification for inserted file, MIME-Edit +@section transfer level +@cindex transfer level + +message に挿入する data は 7bit (@ref{(mime-ja)7bit}) ないし 8bit +(@ref{(mime-ja)8bit}) もしくは binary (@ref{(mime-ja)binary}) で表現する +ことができます。@refill + +よって、7bit しか通さない MTA (@ref{(mime-ja)MTA}) を経由する場合、7bit +の data はそのままで送れますが、8bit や binary の data は 7bit に変換し +なければなりません。@refill + +同様に、8bit しか通さない MTA を経由する場合、7bit や 8bit の data はそ +のままで送れますが、binary の data は 7bit か 8bit に変換しなければなり +ません。@refill + +@noindent +@strong{[Memo]} +@quotation +EBCDIC しか通さない MTA を経由する場合、7bit の data も base64 等で変 +換しないと送れませんが、私は EBCDIC のことまでは知りません。(^_^; + +同様に、制御文字を通さない MTA のことや code 変換を行なう MTA も消えてな +くなって欲しいです。(^_^;@refill + +binary も通す MTA も存在するんでしょうが、今のところあまり一般的とはいえ +ないでしょう。 +@end quotation + +@strong{transfer level} というのはどの範囲の data まで送れるか +ということを表すものです。mime-edit は +@code{mime-transfer-level} という変数を持っており、これで +transfer level を表現します。 + + +@defvar mime-transfer-level + +transfer level を表す。@refill + +ある data の transfer level がこの値を越える場合、7bit data への変換が行 +われる。@refill + +現在のところ、7 か 8 が有効である。既定値は 7 である。@refill + +EBCDIC を 5, ASCII printable のみを 6, binary を 9 とすることを計画して +いるが、実装の予定はない。 +@end defvar + + + +@noindent +@strong{[Memo]} +@quotation +transfer level は message header (@ref{header}) には関係しない。MIME は +body において、8bit の data を使えるように STD 11 (@ref{(mime-ja)STD 11}) を拡張しているが、message header では us-ascii +(@ref{(mime-ja)us-ascii}) のみを用いることを求めている。 +@end quotation + + + +@node Various, Concept Index, MIME-Edit, Top +@chapter その他 + + +@menu +* PGP:: +* Buttons:: 押釦 +* Acting-condition configuration:: 実行条件の設定 +@end menu + +@node PGP, Buttons, Various, Various +@section PGP +@cindex PGP-kazu +@cindex PGP/MIME + +mime-edit では @strong{PGP/MIME} (RFC 2015) および@strong{PGP-kazu} +(draft-kazu-pgp-mime-00.txt) による暗号化・電子署名・公開鍵の挿入機能を +利用することができます。@refill + +但し、この機能を利用するには Mailcrypt package (@ref{(mailcrypt)}) と +pgp command が必要です。 + +@defvar pgp-function-alist + +Alist of service names vs. corresponding functions and its filenames. +Each element looks like @code{(SERVICE FUNCTION FILE)}.@refill + +SERVICE is a symbol of PGP processing. It allows `verify', `decrypt', +`fetch-key', `snarf-keys', `mime-sign', `traditional-sign', `encrypt' or +`insert-key'.@refill + +Function is a symbol of function to do specified SERVICE.@refill + +FILE is string of filename which has definition of corresponding +FUNCTION. +@end defvar + + +@defun pgp-function method + +Return function to do service @var{method}. +@end defun + + + +@node Buttons, Acting-condition configuration, PGP, Various +@section 押釦 + +@defvar mime-button-face + +Face used for content-button or URL-button of MIME-Preview buffer. +@end defvar + + +@defvar mime-button-mouse-face + +Face used for MIME-preview buffer mouse highlighting. +@end defvar + + +@defvar mime-browse-url-function + +Function to browse URL. +@end defvar + + + +@node Acting-condition configuration, , Buttons, Various +@section 実行条件の設定 + +@defun mime-add-condition target-type condition &optional mode file + +Add @var{condition} to database specified by @var{target-type}.@refill + +@var{target-type} must be @code{preview} or @code{action}.@refill + +If optional argument @var{mode} is @code{strict} or @code{nil} +(omitted), @var{condition} is added strictly.@refill + +If optional argument @var{mode} is @code{with-default}, @var{condition} +is added with default rule.@refill + +If optional argument @var{file} is specified, it is loaded when +@var{condition} is activate. +@end defun + + + +@node Concept Index, Function Index, Various, Top +@chapter 概念索引 + +@printindex cp + +@node Function Index, Variable Index, Concept Index, Top +@chapter 関数索引 + +@printindex fn + +@node Variable Index, , Function Index, Top +@chapter 変数索引 + +@printindex vr +@bye