\input texinfo  @c -*-texinfo-*- created at: Tue Oct 14 03:27:16 JST 1997
@setfilename cmail.info
@settitle cmail reference manual
@iftex
@afourpaper
@end iftex
@direntry
* cmail-jp: (cmail).	A Mail User Agent for Emacsen (in Japanese)
@end direntry

@titlepage
@title cmail reference manual
@author Yukihiro Matsumoto
@author matz@@ruby-lang.org
@end titlepage

@node Top, Introduction, (dir), (dir)
@comment  node-name,  next,  previous,  up
@top cmail reference manual

@menu
* Introduction::                
* cmailの特長::                 
* cmailのインストール::         
* cmailの使い方---基本編::      
* cmailの使い方---応用編::      
* cmailのカスタマイズ::         
* 操作コマンド一覧::            
* バグレポート::                
* 謝辞::                        
* Concept Index::               
* Function Index::              
* Variables Index::             

 --- The Detailed Node Listing ---

cmailのインストール

* 旧バージョンからの仕様変更::  

cmailの使い方---応用編

* 自動分類::                    
* 検索機能::                    
* expire機能::                  
* 送信メールログ機能::          
* アドレス補完機能::            
* アドレス生成の詳細::          
* MIME対応::                    
* thread機能::                  
* フォルダ一覧モード::          
* 圧縮フォルダ::                
* user mail agent として cmail を使う::

cmailのカスタマイズ

* ヘッダ表示のカスタマイズ::    
* thread表示のカスタマイズ::    
* カスタマイズ変数一覧::        

操作コマンド一覧

* サマリモードでの操作::        
* フォルダ一覧モードでの操作::  
@end menu

@node  Introduction, cmailの特長, Top, Top
@comment  node-name,  next,  previous,  up
@chapter Introduction

@samp{cmail}は，Emacs 系のエディタ上で動くメール管理システム，すなわち，
ユーザのメールの表示・編集・送信を支援するシステムです．@samp{cmail} は
もともと林 亮さんによって@samp{chain-mail}という名前でversion 1.*が作ら
れました．その後，まつもとゆきひろさんが大規摸な改造を行なって現在
(version 2.*)に至っています．

@samp{chain-mail}は『鎖かたびら』という意味で名付けられましたが，不幸の
手紙に代表される手紙の転送連鎖(同じ内容を複数の第三者に転送するように要
請する内容のメールを指すチェインレター)と混同をさけるため@samp{cmail}と
改名しました．

@samp{cmail}は，ユーザのメールをフォルダという単位でまとめて管理を行ない
ます．そのフォルダ毎に，サマリ(それぞれのメールの日付や発信者，表題等を1
行にまとめたもの)を羅列し，ユーザはそのサマリから任意のメールを選択し，
そのメールを読んだり，編集したり，または任意のキーでサマリをソートしたり
することができます．

他にも，メールを出す，リプライを書く，メールを削除するなどのメーラとして
当然の機能は備えています．更にメールのフォルダへの自動分類なども可能です．

@node  cmailの特長, cmailのインストール, Introduction, Top
@comment  node-name,  next,  previous,  up
@chapter cmailの特長

@samp{cmail}には以下に挙げるような特長があります．

@itemize @bullet
@item
基本機能は simple に、拡張機能は外部のパッケージを利用する

cmail は他のパッケージで実現できる拡張機能については 積極的にそれを利用
し、 そのためのインターフェースを充実させることに努めています。 これによっ
て cmail 本体を肥大化させないようにしています。 ユーザは自分の望む外部の
パッケージを併用することで、 好みの機能を cmail に付加することができます。 
また、外部オプションをより統合した形で提供するための 枠組を用意している
ので、サポートされているオプションは cmail customize からオンオフおよび
基本設定が可能です。

@item
フォルダ単位のメイル管理

cmail は、ユーザのメイルをフォルダという単位でまとめて管理を行ないます。 
1フォルダ1ファイルなのでメイルの管理が比較的簡単です。 また jam-zcat.el 
や jka-compr.el などを使えば 圧縮されたフォルダも扱えます。 
(@pxref{Compressed folders})

逆に悪い特徴としては、1フォルダ1フォルダのために、フォルダ内の メッセー
ジの数が多くなる、または巨大なメッセージが多数存在する場合ファイル書きこ
みや、ファイル内のメッセージ表示速度が極端に低下 するという特徴がありま
す。このため、自動分類や古いメッセージの 自動削除機能などフォルダのサイ
ズ増加を抑える機能を充実させて います。

@item
Emacs カスタマイズ対応

ほとんどのオプション変数は Emacs カスタマイズを利用して説明 を参照しなが
ら設定できます。

@item
英語または日本語でプロンプト、エラーメッセージ、および Emacs のカスタマ
イズ機能の説明の表示

プロンプト、エラーメッセージ、および Emacs カスタマイズ のオプションの説
明などは日本語が表示できる Emacsen であれば 日本語で表示できます。日本語
の使えない Emacsen の場合は英語 表示も選択できます。

@item
操作性がGNUSに似ている(これについては異論もある)

サマリベースの操作性がGNUSのSubjectモードに似ているように設計されました．
また GNUSと同様，threadをツリー状に表示する機能もあります．また GNUS の 
Group バッファに似たファルダ一覧の表示をおこなう機能もあります。

@item
メールの自動分類機能

メールのヘッダの情報を基に，ユーザの設定にしたがってメールをフォルダに
自動分類する機能があります．メーリングリストからのメールの処理などに便
利です．分類基準として単なる正規表現だけでなく関数を指定することで，任
意の選択ができます．(@pxref{自動分類})

@item
メールのexpire機能

保存する必要の無い古いメールを自動的に削除する機能があります．メーリング
リストなど古いメールを保存する必要があまり無い場合などに便利です．
(@pxref{expire機能})

@item
アドレス補完機能

@samp{cmail}にはアドレス補完機能がついています． 補完は，ミニバッファ
のアドレス入力時だけでなく，メールバッファのヘッダ部分でも行われます．
(@pxref{アドレス補完機能})

@item
mbox形式，RMAIL形式との変換ツールが用意されている．

mbox形式との相互変換ツールとRMAIL形式から@samp{cmail}形式への変換ツール
を用意して，他のメーラ@{から|へ@}の移行を積極的にサポートします．現時点
ではmhとの相互変換はサポートされていませんが，mbox形式を経由すれば可能で
す．また，RMAIL 形式のファイルをフォルダに変更するための perl スクリプト
も用意しました．詳しくは @file{cmail-r2c.doc} を御覧ください．

@end itemize

@node cmailのインストール, cmailの使い方---基本編, cmailの特長, Top
@comment  node-name,  next,  previous,  up
@chapter cmailのインストール

@samp{cmail}を使用するためには，まず@samp{cmail}のパッケージ
(cmail*.el)をREADMEに従いあなたのEmacsのロードパス上にインストールして下
さい．例えば
@samp{cmail}を@file{/usr/local/lib/emacs/lisp}にインストールした場
合，変数load-pathが@code{"/usr/local/lib/emacs/lisp"}を含むことを確認し
て下さい．

更に，以下の部分をあなたの環境に合わせてカスタマイズして下さい．

@table @code
@item cmail-spool-directory
@vindex{cmail-spool-directory}
これは，あなたのマシンのどこにメールが届く
かを@samp{cmail}に指示するものです．デフォルトは
@code{"/usr/spool/mail/"}になってますので，これがあなたのマシンと違って
いる場合，適宜修正して下さい．これが間違っていると，新着メールが受け取れ
ません．

@item cmail-path
@vindex{cmail-path}
これは@samp{cmail}がフォルダを格納するディレクトリです．

デフォルトは@code{"~/Mail/"}になっていますが，既にこの名前のディレクトリ
を別の目的で使用しているなどの場合には適宜変更して下さい．

@end table

バージョン 20.x の Emacs ではカスタマイズ機能を利用する事ができます．
カスタマイズ機能により，目的の変数を比較的簡単に探し出し，
各変数の説明を参照しながら設定を行う事ができます．(機能の呼び出し
方法については README か，この INFO 内の [cmailのカスタマイズ] の
項を参照してください．)

カスタマイズ機能が利用できない環境の場合は @file{cmail-vars.el}という
ファイルを見て，.emacs に必要な変数を設定します．

次にあなたのホームディレクトリに@code{cmail-path}で設定したディレクトリ
を作成して下さい．

それから@file{.emacs}に以下の行を追加して下さい．

@example
(autoload 'cmail "cmail" nil t)
@end example

これでEmacsを起動した後,@kbd{M-x cmail}とタイプすることで，
@samp{cmail}が動くようになりました．

また@kbd{C-u M-x cmail}とタイプすることで新規メールの取得をせずに
@samp{cmail}を起動することができます．

これまで古いバージョンの cmail をお使いになっていた方は，
@pxref{旧バージョンからの仕様変更}
にも目を通して，必要な処理を行ってください．

@menu
* 旧バージョンからの仕様変更::  
@end menu

@node  旧バージョンからの仕様変更,  , cmailのインストール, cmailのインストール
@comment  node-name,  next,  previous,  up
@section 旧バージョンからの仕様変更

@strong{フォルダの文字コードの仕様変更について}

@samp{cmail-2.59} 以前はフォルダをデフォルトファイルコーディングシステ
ムに変換して保存していましたが，以降のバージョンでは，フォルダの
文字コードはメールスプールのコードを変換せずに保存するように変更
されました．

これによって，万一メールスプールにおかしな文字コードのメールが混
入してしまっても，それ以降のメールに被害をあたえることがなくなり
ました．

ただし，古いバージョンの@samp{cmail}によって作成された昔のフォルダは，
そのままでは新しいバージョンの@samp{cmail}で MIME preview できなくな
る可能性があります．また，昔のフォルダの日本語を含むヘッダ部分が
読めなくなることもあります．

これらの問題は，バージョンアップの前にフォルダの文字コードをあら
かじめ ISO-2022-JP(JIS) に変換しておくことで回避することができま
す．

なお，メールスプールの文字コードが EUC や Shift-JIS などに変換さ
れてしまうシステムをお使いの方は，

@example
(setq cmail-mime-automatic-preview nil)
@end example

としてください．こうすると本文の MIME デコードができなくなります
が，メールスプールの文字コードが変換された時点で MIME メッセージ
として意味がなくなっていますから，これはしかたがないでしょう．

また，tm は 7.106, SEMI は 0.118.2 以降が必須になりました．それ以
前の tm, SEMI をお使いの方は，

@display
@code{http://cvs.m17n.org/elisp/SEMI/}
@code{http://cvs.m17n.org/elisp/FLIM/}
@code{http://cvs.m17n.org/tomo/comp/emacsen/tm/tm-8/}
@end display

から入手してください． SEMI/FLIM については常に最新のものを使用するのを
お勧めします。

@strong{外部パッケージについて}

@samp{cmail-2.61}以降，APEL の関数を用いるようになりました．APEL が
ご使用の環境に存在しない場合はREADMEに従ってインストールする事によって
自動的に@samp{cmail}に添付された APEL がインストールされます．APEL は
9.23 以降のものを御使用ください．cmail 添付の APEL はなるべく最新の
もので動作の確認されたものが含まれます．

APEL は 19.x ベースの Emacs で tm 7.106 を使用している場合にも必要に
なります．

@display
@code{http://cvs.m17n.org/elisp/APEL/}
@end display

@strong{フォルダ一覧モードについて}

@samp{cmail-2.59.6}において@xref{フォルダ一覧モード}が導入されました．
@kbd{C-cf}でフォルダの一覧を表示し，フォルダの切り換え/改名/コピー/削除等を行
うことができます．

@samp{cmail-2.59.12}においてフォルダ一覧モードのコードが一新され，以下のような
仕様の変更/追加が行われました．

@itemize @bullet
@item
全てのコードをemacs lispによって書き直しました．これにともない，外部プロセス
(perlもしくはcmfolders)が不要になりました．また，以下の変数が削除されました．

@itemize @bullet
@item *cmail-folders-proc
@item *cmail-folders-proc-params
@end itemize

@item
@samp{cmail-2.59.11}以前ではフォルダ内の実際のメール数とフォルダ一覧とが同期し
ていなかったため，適宜手動更新する必要がありましたが，@samp{cmail-2.59.12}より
cmailの各操作に追随してフォルダ情報を更新するようになったため，これが不要にな
りました．

@item
フォルダ情報に関するキャッシュファイルのフォーマットを変更しました．そのため，
@samp{cmail-2.59.11}以前からバージョンアップした場合にはキャッシュ情報が一から
作り直されます．多数のフォルダを保持している場合，非常に時間がかかる場合もあり
ますがご了承ください．

@item
ディレクトリの階層移動に対応しました．キーバインドはinfoのものを参考にしていま
す．

@item
フォルダ／ディレクトリの表示順をソートだけでなく個別に指定できるようにしました．
@code{cmail-folders-list-top}にリストで書かれたものは，一覧時に優先的に上に表
示されます(指定順)．
@code{cmail-folders-list-bottom}にリストで書かれたものは，一覧時に優先的に下に
表示されます(指定順)．
いずれにも指定されないものは，両者の間にソートされて表示されます．
ディレクトリを指定するには，名前の最後に`/'を付けてください．
存在しないものは無視されます．

次に例を示します．

@example
(setq cmail-folders-list-top
      '("/digest"
        "inbox"
        "cmail-ML/1998summar"
        "cmail-ML/"
        "Meadow-users-jp-ML.gz"
        "hogehoge/")
      cmail-folders-list-bottom
      '("tmp"
        "cmail-ML/OLD.gz"
        "etc.gz"
        "outbox.gz"))
@end example

@item
サブディレクトリにあるフォルダを展開するか否かを変数及びキーボード操作によって
切り換えることができるようにしました．

@end itemize

@node  cmailの使い方---基本編, cmailの使い方---応用編, cmailのインストール, Top
@comment  node-name,  next,  previous,  up
@chapter cmailの使い方---基本編

@samp{cmail}は起動時にシステムのメールボックスにメールが到着してい
れば，そこからメールを取り出し，@samp{INBOX}と呼ばれるフォルダに追加しま
す．その後，@samp{INBOX}のサマリを表示します．カーソルは最初の未読メール
(もしあれば)の上にあります．

スペースキー(@code{cmail-read-contents})を押すと現在カーソルがある行のメ
ールの内容が表示されます．そのままスペースキーを押し続けるとスクロールさ
れ，メールの最後になると次のメールが表示されます．つまり，スペースバーを
押し続ければ，フォルダの最後のメールまで読み続けることができるわけです．

@display
@kbd{SPC} (@code{cmail-read-contents}) : 記事の表示・上スクロール
@end display
@findex{cmail-read-contents}

@kbd{b}または@kbd{DEL}(@code{cmail-read-reverse})で逆スクロールします．

@display
@kbd{DEL} (@code{cmail-read-reverse}) : 記事の下スクロール
@end display
@findex{cmail-read-reverse}

長いメールのばあいなど，メールの途中で次のメールに移るには
@kbd{n}(@code{cmail-next-mail})や@kbd{N}(@code{cmail-next-unread-mail})
を使います．

@display
@kbd{n} (@code{cmail-next-mail}) : 次のメールの表示
@kbd{N} (@code{cmail-next-unread-mail}) : 次の未読のメールの表示
@end display
@findex{cmail-next-mail}
@findex{cmail-next-unread-mail}

@kbd{C-n}，@kbd{C-p}でサマリのカーソルを移動させてから，スペースキーでそ
の行のメールを表示されることもできます．

メールを出したい場合は，@kbd{m}(@code{cmail-mail}) を使います．

@display
@kbd{m} (@code{cmail-mail}) : メールを出す
@end display
@findex{cmail-mail}

読んでいるメールに対する返事を出したい場合，リプライ機能(@kbd{r}
(@code{cmail-reply})や @kbd{R}(@code{cmail-reply-include-text}))を，
@code{To}, @code{CC} 全員を宛先に含めたい場合は，フォローアップ
(@kbd{f}(@code{cmail-followup}) や
@kbd{F}(@code{cmail-followup-include-text}))を使います．

@display
@kbd{r} (@code{cmail-reply}) : 返事を書く
@kbd{R} (@code{cmail-reply-include-text}) : 元のメールを引用して返事を書く
@kbd{f} (@code{cmail-followup}) : フォローを書く( Cc: 含む )
@kbd{F} (@code{cmail-followup-include-text}) : 元のメールを引用してフォロー
@end display
@findex{cmail-reply}
@findex{cmail-reply-include-text}
@findex{cmail-followup}
@findex{cmail-followup-include-text}

リプライ/フォローアップ時には読んでいるメールをもとに自動的にアドレスが
生成されます．この時の生成ルールはある程度カスタマイズが可能です．詳細は
@xref{アドレス生成の詳細}を御覧ください．

現在読んでいるメールを第三者に転送したい場合，転送機能(@kbd{z}
(@code{cmail-forward}))を使用します．

外部パッケージを導入して MIME を利用している場合は
@vindex{cmail-mime-forwarding} の設定により MIME 転送を利用する事ができ
ます．(MIME 転送では添付ファイル等がデコード可能のまま転送されます．)

@kbd{Z} (@code{cmail-alt-forward})を利用すると，MIME 転送/非MIME 転送を
切替えて転送する事ができます．

@display
@kbd{z} (@code{cmail-forward}) : 記事を転送する
@kbd{Z} (@code{cmail-alt-forward}) : MIMEと非MIMEを切替えて転送
@end display
@findex{cmail-forward}
@findex{cmail-alt-forward}

カーソル行のメールを削除する場合には@kbd{d}(@code{cmail-delete-mail})を
使います．これによってメールには削除されたことを示す@samp{D}マークがつき
ます．

@display
@kbd{d} (@code{cmail-mark-delete}) : 消去マーク (@samp{D}) を付ける
@end display
@findex{cmail-mark-delete}

カーソル行のメールを含むスレッド全体をマークする場合には@kbd{C-c^}
(@code{cmail-mark-thread})を使います．
スレッド全体に消去マークを付けるには@kbd{C-cd}(@code{cmail-th-mark-delete})を
使います．

その際，カーソル行のメールをスレッドの頭とみなすには@kbd{C-u}を付けます．

@display
@kbd{C-c^} (@code{cmail-mark-thread}) : スレッドにマーク (@samp{^}) を付ける
#kbd{C-cd} (@code{cmail-th-mark-delete}) : スレッドに消去マーク (@samp{D}) を付ける
@end display
@findex{cmail-mark-thread}
@findex{cmail-th-mark-delete}

実際の削除は@kbd{x}(@code{cmail-execute-index})を押した時にはじめて行な
われますので，間違って@samp{D}マークをつけてしまった場合，
@kbd{u}(@code{cmail-unmark})で取り消すことができます．

@display
@kbd{x} (@code{cmail-execute-index}) : @samp{D}マークのあるメールを消す
@kbd{u} (@code{cmail-unmark}) : マークを外す
@end display
@findex{cmail-execute-index}
@findex{cmail-unmark}

@samp{cmail}起動中，新しくメールが届いた場合は
@kbd{g}(@code{cmail-get-newmail})で，システムのメールボックスから
@samp{INBOX}にメールを取り込めます．

@display
@kbd{g} (@code{cmail-get-newmail}) : 新着メールを取ってくる
@end display
@findex{cmail-get-newmail}

カーソル行のメールを，別のフォルダに移動するには 
@kbd{M-m}(@code{cmail-move-to-folder})を押します．

@display
@kbd{M-m} (@code{cmail-move-to-folder}) : メールを別のフォルダに移動
@end display
@findex{cmail-move-to-folder}

@kbd{M-m} を押すとミニバッファの中で移動先のフォルダ名を問いかけられるの
で，フォルダ名を入力します．このとき，移動先のフォルダが存在しない場合は，
新たにフォルダを作成していいか，確認を求められます．移動先のフォルダがす
でに存在している場合は，@kbd{TAB}によるフォルダ名の補完が可能です．

@samp{INBOX}の中のメールは削除するか，ここで説明したように別のフォルダへ
移動するか，自動分類されない限り，読み終えたあとも @samp{INBOX}の中に
保存され続けます．
自動分類に関しては，(@pxref{自動分類})を参照してください．

現在閲覧中のフォルダを閉じて，他のフォルダに移ってその中身を閲覧するには
@kbd{v}(@code{cmail-visit-folder})を押します．@samp{cmail} では，この
ように他のフォルダへ移動して作業することを visit と呼んでいます．

@display
@kbd{v} (@code{cmail-visit-folder}) : フォルダの変更
@end display
@findex{cmail-visit-folder}

@kbd{v} を押すとミニバッファの中で移動先のフォルダ名を問いかけられます．
この時の操作は，@kbd{M-m}(@code{cmail-move-to-folder})と同じです．

保存している @samp{cmail} のフォルダを階層化して，視覚的にわかりやすい
一覧リスト表示をつくり，そこからフォルダにアクセスすることもできます．

@display
@kbd{C-cf} (@code{cmail-folders}) : フォルダ一覧モードに入る
@end display
@findex{cmail-folfers}

フォルダ一覧モードを終了して，サマリモードに戻るには @kbd{q} をタイプし
ます． 

@samp{cmail}を終了させるには@kbd{q}(@code{cmail-quit})を押します．

@display
@kbd{q} (@code{cmail-quit}) : @samp{cmail} を終る
@end display
@findex{cmail-quit}

終了時には，ユーザの指定にしたがったメールの自動分類(既読のもののみ)，
削除マークを付けられたメールの削除，フォルダのセーブが行なわれます．

ここにあげたコマンドは主なものです．コマンドの詳細は後ろのキーバインド表
を参照して下さい．

@xref{サマリモードでの操作}

@xref{フォルダ一覧モードでの操作}

@node  cmailの使い方---応用編, cmailのカスタマイズ, cmailの使い方---基本編, Top
@comment  node-name,  next,  previous,  up
@chapter cmailの使い方---応用編

@menu
* 自動分類::                    
* 検索機能::                    
* expire機能::                  
* 送信メールログ機能::          
* アドレス補完機能::            
* アドレス生成の詳細::          
* MIME対応::                    
* thread機能::                  
* フォルダ一覧モード::          
* 圧縮フォルダ::                
* user mail agent として cmail を使う::                
@end menu

@node  自動分類, 検索機能, cmailの使い方---応用編, cmailの使い方---応用編
@comment  node-name,  next,  previous,  up
@section 自動分類
@cindex{メールの自動分類}

@samp{cmail}には，メールのヘッダの情報を基に，メールを個別のフォルダに自
動分類する機能があります．これはメーリングリストからのメールの処理などに
便利です．

@samp{cmail} は以下の場合に，変数@code{cmail-folder-alist}を参照して，該
当するフォルダにメールが振り分けられます．

@itemize @bullet
@item
@samp{INBOX}で @kbd{M-a}(@code{cmail-auto-archive-all}) を押した時
@item
@samp{INBOX}で @kbd{C-u A}(@code{cmail-auto-archive}) を押した時
@item
@samp{INBOX}で @kbd{A}(@code{cmail-auto-archive}) を押した時
@item
@samp{INBOX}で @kbd{q}(@code{cmail-quit}) を押して @samp{cmail} を
終了させた時
@item
@samp{INBOX} から他のフォルダに visit した時
@end itemize

@kbd{M-a, C-u A} 以外の操作では，visit時以外は未読記事と削除/Holdマークのつ
いた記事は分類されず，INBOXに残ります．@kbd{M-a, C-u A} を押した場合では, 
未読記事も分類対象に含まれます．

visit時には，いまからvisitするフォルダが，@samp{INBOX} 内のメールの分類
先である場合は，未読でも分類され@samp{INBOX}に残りません．
他のフォルダへのvisit時には自動分類したくない，という場合は
@file{.emacs}に 
 
@example
(setq cmail-archive-on-visit nil)
@end example
@vindex{cmail-archive-on-visit}

を設定することで, この機能を抑制することができます．

また, @file{.emacs}に

@example
(setq cmail-archive-on-get t)
@end example
@vindex{cmail-archive-on-get}

という行を追加しておくと, @kbd{g}(@code{cmail-get-newmail}) で新着メール
を取り込んだ時に未読メールのまま自動分類します．

@subsection @code{cmail-folder-alist}の設定

@vindex{cmail-folder-alist}
例えば，

@itemize @bullet
@item
foo さんから来たメールをフォルダ@samp{FOO}に入れたい．
@item
Subject に test という文字列を含むメールをフォルダ@samp{test}に入れたい．
@end itemize

といった場合には，@file{.emacs}で，次のように設定します．

@example
(setq cmail-folder-alist
      '(("From" ("foo" . "FOO"))
        ("Subject" ("test" . "test"))))
@end example

これを連想リストといいます．この連想リストでは，先頭に近いほど優先順位が
高いので，foo さんからきた Subject に test を含むメールは@samp{FOO}に分
類されることになります．

@code{cmail-folder-alist}の一般形は以下の通りです．

@example
'((フィールド名 条件)@dots{})
@end example

@samp{フィールド名}は条件を検査するメールのフィールド名です．条件は以下
のいずれかの形式をとります．

@example
(フィールド値 . フォルダ名)
@end example

@samp{フィールド名}の値が@samp{フィールド値}とマッチするメールの自動分類
先を@samp{フォルダ名}とします．フォルダ名は文字列またはフォルダ名を表す
文字列を返す関数です．関数名はシンボルまたはラムダ式で指定します．

@example
関数
@end example

シンボルまたはlambda式で関数を指定できます．カレントバッファは検査中のメ
ールになっていますので，emacs lispの全ての機能を使って，分類先を決定する
事ができます．この関数の戻り値は@code{nil}または分類先のフォルダを表す文
字列で，@code{nil}の時には分類先が無い事を意味します．

変数@code{cmail-use-regexp-in-folder-alist}が@code{non-nil}の時，フィー
ルド名とフィールド値には正規表現を用いる事ができます．
@vindex{cmail-use-regexp-in-folder-alist}

@node  検索機能, expire機能, 自動分類, cmailの使い方---応用編
@comment  node-name,  next,  previous,  up
@section 検索機能

フォルダ内のメールから正規表現を使って検索を行うことが出来ます．

@findex{cmail-summary-isearch-article}
@findex{cmail-summary-search-article-forward}
@findex{cmail-summary-search-article-backward}
@display
@kbd{s} (@code{cmail-summary-isearch-article}) : メールに対するisearch
@kbd{C-c s} (@code{cmail-summary-search-article-forward}) : 前方検索
@kbd{C-c r} (@code{cmail-summary-search-article-backward}) : 後方検索
@end display

フォルダを跨る検索機能はありません．

@node  expire機能, 送信メールログ機能, 検索機能, cmailの使い方---応用編
@comment  node-name,  next,  previous,  up
@section expire機能
@cindex{expire機能}

@samp{cmail}は設定により，ある程度以上古いメールを自動的に削除する
事ができます．メーリングリストなど古いメールを保存する必要があまり無い場
合などに便利です．

@samp{cmail}はデフォルトではexpireを行いません．expireを行うために
は，expireを行うフォルダ名を変数@code{cmail-auto-expirable-folders}に設
定する必要があります．
@vindex{cmail-auto-expirable-folders}

@code{cmail-auto-expirable-folders}の値は文字列または文字列のリストで，
文字列の場合expireするフォルダにマッチする正規表現であり，文字列のリスト
の場合，expireするフォルダ名のリストとなります．

expireする「古い」メールの基準は，変数@code{cmail-default-expiry-days}で
決定され(デフォルトは7日)，変数@code{cmail-expiry-days-alist}で，フォル
ダ毎に設定できます．
@vindex{cmail-default-expiry-days}
@vindex{cmail-default-expiry-days}

@node  送信メールログ機能, アドレス補完機能, expire機能, cmailの使い方---応用編
@comment  node-name,  next,  previous,  up
@section 送信メールログ機能
@cindex{送信メールログ機能}

自分が送信したメールのログをフォルダに格納したい場合，次の事を行って下さい．

@enumerate
@item
@code{cmail-use-send-mail-archive}を@code{t}にする．
@vindex{cmail-use-send-mail-archive}

@file{.emacs}の中で設定して下さい．

@item
@code{cmail-archive-folder}の設定
@vindex{cmail-archive-folder}

これは，どのフォルダにログを格納するかを指示するものです．直接名称を指定
する事も，フォルダ名を返す関数を指定する事も出来ます．デフォルトは，
@code{"archive"}です．

@item
@code{cmail-archive-from}の設定
@vindex{cmail-archive-from}

ログに格納する際に，From行と Date行の作成を行います．その際に From行に格
納したい文字列を設定します． デフォルトは，@code{(user-login-name)}の結
果です．
@end enumerate

@node  アドレス補完機能, アドレス生成の詳細, 送信メールログ機能, cmailの使い方---応用編
@comment  node-name,  next,  previous,  up
@section アドレス補完機能
@cindex{アドレス補完機能}

@samp{cmail}はアドレス入力時に，ユーザの@file{.mailrc}と
@file{.addresses}を参照して宛名を補完します．

また, bbdb-cmailを使用している場合には, BBDBで管理されているメールアドレ
スも補完出来るようになります. 

@file{.addresses}は，電子メールアドレスと，コメント(主に本名)の対となっ
た行の連続したファイルで，空白は，スペースかタブで行なって下さい．
次に例を示します．

@example
foo                    ふーさん
bar@@scallion           ばーさん
@end example

メールの作成中もヘッダ内であれば@kbd{TAB}で，本文内でも@kbd{C-u TAB}でア
ドレスの補完ができます．

@subsection .addressesへの登録機能

上記のように@file{.mailrc}か@file{.addresses}にアドレスを登録しておく事
によって，各種補完機能が使えるようになりますが，この登録が案外面倒なもの
です． @samp{cmail}には，この登録をサポートしてくれる機能があります．

サマリ上で @kbd{C-ca} (@code{cmail-add-new-address-from-mail}) とするこ
とで，カーソルのあるメールの差出人のアドレスを@file{.addresses}に登録し
ます．
@findex{cmail-add-new-address-from-mail}


@node  アドレス生成の詳細, MIME対応, アドレス補完機能, cmailの使い方---応用編
@comment  node-name,  next,  previous,  up
@section アドレス生成の詳細
@cindex{アドレス生成の詳細}

多くの他のメールツールと同様、cmail でも，リプライ/フォローアップの時に，
宛先アドレスを参照メールを元に自動的に生成するようになっています．cmail 
では，この宛先のアドレス生成をある程度最適化できるようになっています．

アドレス生成機能の挙動は大別してリプライかフォローアップか，また，自己リ
プライ/フォローアップか通常リプライ/フォローアップかで異なります．それぞ
れの条件下でどのようなルールが適用されるのかはこの後に詳しいアドレス生成
ルールのまとめがありますので参照してください．

自己リプライ/フォローアップを cmail に判定させるために，どのアドレスが自
分自身であるかを設定しておく必要があります．@code{cmail-self-addresses} 
がそのための変数です．デフォルトは 'auto で，適当に他の変数などから類推
するようになっていますが，この自動的に生成されたアドレスが正確ではない場
合に，期待した動作とならない事がありますので注意してください．なるべくこ
の変数を明示的に指定する事をお勧めします．

また cmail では自分自身のアドレスを CC に自動的に追加するオプションを用
意しています．(@code{cmail-always-cc-me}) この時に CC に追加されるアドレ
スは，@code{user-mail-address} または @code{cmail-default-from} が明示的
に指定されていない場合 @code{cmail-self-addresses} と同様に適当に類推さ
れます．もし，CC に期待していないアドレスが追加される場合は，これらの変
数のどちらかを明示的に指定するようにしてください．

@subsection 制御用の変数類

@table @b
@item @code{cmail-self-addresses}
自分のアドレスにマッチする文字列のリスト．文字列が "regexp: " で始まって
いる場合は正規表現とみなされる．'auto の時は他の変数値 (例えば 
cmail-default-from, user-mail-address 等) から適当に作られる．デフォルト
値: 'auto

@item @code{cmail-default-from}
自分のアドレスの文字列．デフォルト値: nil

@item @code{cmail-always-cc-me}
全てのアドレス生成の処理の後に，もし自分が To にも CC にもない場合 CC に
自分のアドレスをいれる．CC に挿入されるアドレスは，cmail-self-addresses
同様他の変数値から適当に作られる．t の時は全てのメール作成時に適用される．
オプションのリストも指定できて、新しいメールを作成する時、返信メールを
作成する時、フォローアップメールを作成する時など個別に機能を on/off 可能．
デフォルト値: '(when-follow-up) (フォローアップ時のみ)

@item @code{cmail-dont-cc-me-destinations}
cmail-always-cc-me が on でも CC をつけない宛先のリスト．参加しているメー
リングリストなどを設定しておくと便利．デフォルト値: nil

@item @code{cmail-dont-cc-addresses}
アドレスを生成した後に明示的に cc から削除するアドレスのリスト．文字列が 
"regexp: " で始まっている場合は正規表現とみなされる．'self の時は
cmail-self-addresses に設定されている値が使用される．デフォルト値: 'self

@item @code{cmail-dont-reply-to-addresses}
アドレスを生成した後に明示的に to から削除するアドレスのリスト．文字列が 
"regexp: " で始まっている場合は正規表現とみなされる．'self の時は
cmail-self-addresses に設定されている値が使用される．デフォルト値: 'self
@end table

@subsection アドレス生成のルール

@itemize @b
@item 一般ルール
@itemize @bullet
@item Reply-to がある時は From のかわりにそのアドレスが宛先として使用さ
      れます．From の内容は宛先のリストには現れません．ただし強制的に 
      Reply-to を無視して From を宛先を宛先リストに含める事も可能です．
      (詳しくはこのセクションの「Reply-to の扱いについて」の項を参照)
@item フォローアップ/リプライのタイプ(通常か自己フォローか)を判定する時は
       From のアドレスが使用されます．
@item cmail-seff-addresses, cmail-dont-cc-addresses,
      cmail-dont-reply-to-addresses および cmail-dont-cc-me-destinations 
      はアドレス内の addr-spec 部分のみにマッチします。コメントや名前な
      どの部分は文字列照合の対象になりませんのでご注意ください．
@item 重複アドレスは一つに統合されます.
@item To にも CC にもあるアドレスは CC の方が消去されます.
@end itemize

@item 通常フォロー時のアドレス生成の仕様
@display
------------------------------------------------------
番号	元メール		生成アドレス
------------------------------------------------------
1-1)	From: 誰か		From: 自分		
	To:   自分,A,B		To:   自分,誰か,A,B
	CC:   C,D		CC:   C,D

1-2)	From: 誰か		From: 自分
	To:   A,B		To:   誰か,A,B
	CC:   自分,C,D		CC:   自分,C,D

1-3)	From: 誰か		From: 自分
	To:   A,B		To:   誰か,A,B
	CC:   C,D		CC:   C,D
@end display

@item 自己フォロー時
@display
------------------------------------------------------
番号	元メール		生成アドレス
------------------------------------------------------
2-1)	From: 自分		From: 自分
	To:   A,B		To:   A,B
	CC:   C,D		CC:   C,D

2-2)	From: 自分		From: 自分
	To:   自分,A,B		To:   自分,A,B
	CC:   C,D		CC:   C,D

2-2)	From: 自分		From: 自分
	To:   A,B		To:   A,B
	CC:   自分,C,D		CC:   自分,C,D
@end display


@item 通常リプライ時
@display
------------------------------------------------------
番号	元メール		生成アドレス
------------------------------------------------------
3-1)	From: 誰か		From: 自分
	To:   自分,A,B		To:   誰か
	CC:   C,D

3-2)	From: 誰か		From: 自分
	To:   A,B		To:   誰か
	CC:   自分,C,D

3-3)	From: 誰か		From: 自分
	To:   A,B		To:   誰か
	CC:   C,D
@end display


@item 自己リプライ時
@display
------------------------------------------------------
番号	元メール		
------------------------------------------------------
全て自己フォローとみなす
@end display
@end itemize

@subsection ルールの適用順

@itemize @b
@item フォローアップ時
@itemize
@item フォローアップのタイプ(通常か自己フォローか)を判定する
@item アドレスを生成
@item cmail-dont-cc-addresses & cmail-dont-reply-to-addresses 削除
@item cmail-always-cc-me が on で cmail-dont-cc-me-destinations が
cc および to にマッチしないならば自分を CC に追加
@end itemize

@item リプライ時
@itemize
@item リプライのタイプ(通常か自己リプライか)を判定する
@item 自己リプライの場合自己フォローとして処理
@item アドレスを生成
@item cmail-always-cc-me が on で cmail-dont-cc-me-destinations が
cc および to にマッチしないならば自分を CC に追加
@end itemize
@end itemize

@subsection Reply-to の扱いについて

リプライおよびフォローアップ時には通常 Reply-to にある宛先が生成アドレス
の「返信先」とみなされます．Reply-to フィールドが元のメールに存在する場
合 From に現れる宛先は，自己フォローかどうかの判定にしか使用されません．

メーリングリストなどで Reply-to が指定されている場合，Reply-to を無視し
て返信を出したい場合などが時々あります．このような使用を考慮し強制的に 
From を宛先にするための下記のようなコマンドコマンドを用意してあります．

@itemize
@item @kbd{C-cC-fr} (@code{cmail-reply-ignore-reply-to})
@item @kbd{C-cC-fR} (@code{cmail-reply-include-text-ignore-reply-to})
@item @kbd{C-cC-ff} (@code{cmail-followup-ignore-reply-to})
@item @kbd{C-cC-fF} (@code{cmail-followup-include-text-ignore-reply-to})
@end itemize

リプライの場合とフォローアップの場合は挙動が若干異なります．リプライ時は
From の宛先が Reply-to の宛先に入れ替わります．フォローアップ時は From 
が返信宛先とみなされ，Reply-to は CC リストに入れられます．


@node  MIME対応, thread機能, アドレス生成の詳細, cmailの使い方---応用編
@comment  node-name,  next,  previous,  up
@section MIME対応
@cindex{MIME対応}

@samp{cmail}は付加パッケージ(@file{tm-cmail.el}/@file{cmail-mime.el})に
よってMIMEに対応できます．MIMEヘッダを扱うためにはtm (Tools for MIME)，
あるいはSEMI (SEMI is Emacs MIME Interfaces)が必要です．

tm/SEMI の最新版は 

@display
@code{http://cvs.m17n.org/elisp/SEMI/}
@code{http://cvs.m17n.org/elisp/FLIM/}
@code{http://cvs.m17n.org/tomo/comp/emacsen/tm/tm-8/}
@end display

から ftpできます. @file{README} に従ってインストールしてください．

インストール後，@file{.emacs}に

@example
(setq cmail-use-mime t)
@end example

@vindex{cmail-use-mime}
の行を追加して下さい．

MIME対応時には以下のコマンドが追加されます．

@noindent
@example
@kbd{C-c t}       (非 preview 時の) ヘッダのデコードの on/off.
@kbd{C-c C-t}     automatic MIME preview の on/off.
@kbd{!}	          mime/viewer-mode に入る．
@end example

また以下の変数が追加されます．

@example
(defvar cmail-mime-automatic-preview t
  "*Non-nil ならば，automatic MIME preview をする．")

(defvar cmail-mime-decode-message-header cmail-mime-decode
  "*Non-nil ならば，非 automatic MIME preview 時にもヘッダの decode をする．")
@end example
@vindex{cmail-mime-automatic-preview}
@vindex{cmail-mime-decode-message-header}

@node  thread機能, フォルダ一覧モード, MIME対応, cmailの使い方---応用編
@comment  node-name,  next,  previous,  up
@section thread機能
@cindex{thread機能}

@samp{cmail} は, GNUSのSubjectモードに似たthread表示機能をデフォルトで持って
います． サマリモードの表示速度が若干低下しますが, メーリングリストなど
の話題を追いかける上で, 非常に便利な機能です．

一時的に thread 表示をやめるときは，@kbd{C-t} を入力します．
もう一度 @kbd{C-t} を押すと，再び thread を表示します．
@display
@kbd{C-t} (@code{cmail-visit-folder}) : thread 表示の切り替え
@end display

@subsection @code{cmail-sort-header-alist}の設定

@vindex{cmail-sort-header-alist}
フォルダの先頭にはインデックス領域があり，そこにメール1つ1つのサマライズ
された情報が1行ずつ収められています．

thread表示機能は，このサマリを元にthreadの上位のメールを探していくことに
よって実現されているため，メールの到着順が逆転していたりすると，せっかく
のスレッドがうまく機能しない場合がでてきます．

この問題は，自動分類やメールの移動時に，移動先のフォルダのサマリを，たと
えばSubject順にソートしておくことにより回避可能です．

@code{cmail-sort-header-alist}を設定することにより，自動分類やメールの移
動時に移動先のフォルダのサマリをどのようにソートするかを指定することがで
きます．@code{cmail-folder-alist}と同様，連想リストの先頭に近いほど優先
順位が高くなっています．

@code{cmail-sort-header-alist}の要素は以下のいずれかの形式を取ります．

@example
(key (folder @dots{}))           ;; keyが"S", "R", "A", "D", "T"のとき
(key (pattern (folder @dots{}))) ;; keyが"N", "H", "F"のとき
@end example

keyには以下の種類があります．なお，大文字小文字の区別はありません．

@itemize @bullet
@item "S": サブジェクト順
@item "R": 関連のあるサブジェクト順
@item "A": 送り主の名前順
@item "D": 日付順
@item "T": 時刻を含む日付順
@item "N": 指定されたヘッダフィールド中の数値順
@item "H": 指定されたヘッダフィールド順
@item "F": 指定された関数の戻り値順
@end itemize

以下は前者の形式の例です．

@example
(setq cmail-sort-header-alist
      '(("S" ("foo" "bar" "hoge" "uja"))
        ("A" ("glorp" "nerp"))
        ("D" ("archive"))
        ("R" ("folder" "folder_name" "etc"))))
@end example

以下は後者の形式の例です．こちらは任意のヘッダフィールドに対して指定可能
です．

@example
(setq cmail-sort-header-alist
      '(("N" ("X-MAIL-Count" ("foo" "bar")))
        ("H" ("Header-Field" ("glorp" "nerp")))
        ("F" (func_name ("folder_name" "etc")))))
@end example

@code{cmail-sort-header-alist}の指定にマッチしないフォルダは
@code{cmail-sort-header-default}に従ってソートされます (デフォルトはソー
トしない)．ただし，@code{cmail-sort-header-default}には"N", "H", "F"は指
定できません．

@findex{cmail-visit-folder}

@node  フォルダ一覧モード, 圧縮フォルダ, thread機能, cmailの使い方---応用編
@comment  node-name,  next,  previous,  up
@section フォルダ一覧モード
@cindex{フォルダ一覧モード}

保存している cmail のフォルダを階層化して，視覚的にわかりやすい
一覧リスト表示をつくり，そこからフォルダにアクセスすることができます．
この機能は 岩室元典 さん @samp{<iwa@@mmp.fujitsu.co.jp>}
によって実装されました．

@samp{cmail}はデフォルトではフォルダ一覧モードで起動しますが，

@example
(setq cmail-use-folders-mode-first nil)
@end example
@vindex{cmail-use-folders-mode-first}
@noindent
を @file{.emacs}の中で設定することによって，サマリモードで起動することが
できます．また，@code{cmail-always-display-folders}を@code{t}にすると，
画面が3ウィンドウモードとなり，左端にフォルダ一覧を常時表示するようにな
ります．このとき，フォルダ一覧とサマリとの間はTABキーで自由に行き来でき
ます．フォルダ一覧とサマリとの表示比率は
@code{cmail-window-horizontal-size}で設定します．デフォルトでは1:3に分割
されます．

@code{cmail-always-display-folders}が@code{'auto}の場合は，画面の横幅が
@code{cmail-always-display-folders-threshold}(デフォルト値は100)以上のと
きのみ3ウィンドウモードとなります．

@code{cmail-always-display-folders}のデフォルト値は通常@code{'auto}です
が，@code{cmail-use-full-window}が@code{nil}のときは@code{nil}です．
@vindex{cmail-always-display-folders}

@code{cmail-folders-unfold-dirs}に常に展開するディレクトリ名(終端には`/'が
必要)のリストを指定することにより，そのディレクトリに存在するフォルダ
は常に最上位ディレクトリから直接参照することができます．

@example
(setq cmail-folders-unfold-dirs '("DIR1/" "DIR1/DIR2/" "DIR3/"))
@end example
@vindex{cmail-folders-unfold-dirs}

なお，ディレクトリ展開の有無はキーボード操作(デフォルトでは@kbd{x}キー)に
よっても切換可能です．

@code{cmail-use-visiting-parent-dir-as-quit}を@code{t}に設定すると，フォルダ
一覧モードでTOPディレクトリ以外にいるとき，@code{cmail-folders-quit}を実行すると親
ディレクトリに移動します．
@vindex{cmail-use-visiting-parent-dir-as-quit}
@code{cmail-folders-display-all-folders}を@code{nil}に設定すると，一覧モードで
未読のメールのあるフォルダだけを表示するようになります．
@vindex{cmail-folders-display-all-folders}
@code{cmail-folders-display-unread-mails}を@code{t}と設定して未読メール
数だけを表示するとニュースリーダのような使い勝手になります．
@vindex{cmail-folders-display-unread-mails}

@node  圧縮フォルダ, user mail agent として cmail を使う, フォルダ一覧モード, cmailの使い方---応用編
@comment  node-name,  next,  previous,  up
@section 圧縮フォルダ
@cindex{圧縮フォルダ}

@samp{cmail}では，compressやgzipで圧縮されたフォルダを通常のフォルダと
同様に扱うことができます．圧縮フォルダを使用する場合には，@file{.emacs}に
以下の行を追加して下さい．

@example
(require 'jka-compr)
(setq cmail-compressed-folders 'jka-compr)
@end example
@vindex{cmail-compressed-folders}

なお，Mule-2.x(based on GNU Emacs 19.x)では，別途jam-code-guess.el(作者:
@samp{Kazushi (Jam) Marukawa}さん)が必要です．このファイルををあなたの
Emacsのロードパス上に置き，@file{.emacs}に以下の行を追加して下さい．

@example
(require 'jam-code-guess)
@end example

@node  user mail agent として cmail を使う,  , 圧縮フォルダ, cmailの使い方---応用編
@comment  node-name,  next,  previous,  up
@section user mail agent として cmail を使う
@cindex{user mail agent}

user mail agent については lisp/simple.el において説明されています。あ
る emacs lisp pacage がユーザに対してメールの作成を促す必要があったと
します。そのような場合にメール作成のために使用される emacs lisp pacage 
が user mail agent です。

例えば、M-x report-emacs-bug としてみてください。するとメール作成の
モードに入りますね。user mail agent として cmail を指定しておけば、こ
のような場合にでも cmail を利用してメールを作成することができます。

@menu
* 使い方::
* 特殊な使い方::
* 設定::
@end menu

@node  使い方, 特殊な使い方, , user mail agent として cmail を使う, cmailの使い方---応用編
@comment  node-name,  next,  previous,  up
@section 使い方
@cindex{使い方}

C-x m が user mail agent の起動に割り当れられています。

任意のバッファで C-x m とタイプしてください。サマリバッファで "m" とタイ
プした時と同じ動作になります。C-u C-x m とすると、書き掛けのメールバッファ
があればそれを開きます。

メールを出そうとする時に、わざわざサマリバッファへ移動する必要はもうあ
りません。

@node  特殊な使い方, 設定, 使い方, user mail agent として cmail を使う, cmailの使い方---応用編
@comment  node-name,  next,  previous,  up
@section 特殊な使い方
@cindex{特殊な使い方}

カレントバッファがメールメッセージを含んでいた場合には特殊な動作をさせ
ることができます。

例えばメールスプールを直接読み込んでいたとします。返事を出したいメールに
来た時点で C-u C-u C-x m とします。"R)eply or F)ollow ?" と聞いてきます
ので、例えば "r" とタイプします。すると返信を書く状態でメールバッファを
起動することができます。

"f" であればフォローになりますし、それぞれ大文字であれば元のメールを引
用します。

@node  設定, , 特殊な使い方, user mail agent として cmail を使う, cmailの使い方---応用編
@comment  node-name,  next,  previous,  up
@section 設定
@cindex{設定}

cmail を user mail agent として利用するには、.emacs に以下のように設定
します。

@example
(autoload 'cmail-mail-compose "cmail" nil t)
(setq mail-user-agent 'cmail-user-agent)
@end example

@node  cmailのカスタマイズ, 操作コマンド一覧, cmailの使い方---応用編, Top
@comment  node-name,  next,  previous,  up
@chapter cmailのカスタマイズ

@samp{cmail}はかなり自由にカスタマイズできます．特にいくつかの変数
には単なる値だけでなく，関数も設定可能です．

@samp{cmail} では，バージョン 20.x の Emacs 等に標準でついて来る
カスタマイズ機能を利用する事ができます．

カスタマイズ機能により，カスタマイズ可能な変数があらかじめ関連の
あるグループに分類されているので，目的の変数を比較的簡単に探し出し，
各変数の説明を参照しながら設定を行う事ができます．

カスタマイズ機能を利用するには以下のコマンドをタイプするか，

@example
M-x cmail-customize
@end example

または，サマリモード/フォルダ一覧モードの主モードメニューから
Customize の項を選択します．

@menu
* ヘッダ表示のカスタマイズ::    
* thread表示のカスタマイズ::    
* カスタマイズ変数一覧::        
@end menu

@node ヘッダ表示のカスタマイズ, thread表示のカスタマイズ, cmailのカスタマイズ, cmailのカスタマイズ
@comment  node-name,  next,  previous,  up
@section ヘッダ表示のカスタマイズ
@cindex{ヘッダ表示のカスタマイズ}

メール本文のバッファに表示されるヘッダは，不要なものを省略，あるいは
必要なものだけを選んで表示することができます．

変数@code{cmail-ignored-headers}は，表示しないヘッダの正規表現です．
@vindex{cmail-cmail-ignored-headers}
たとえば，@file{.emacs}の中で

@example
(setq cmail-ignored-headers "^Message-I[dD]:\\|^In-Reply-To:")
@end example

と設定すると，Message-ID と In-Reply-To ヘッダの表示を抑制します．

変数@code{cmail-always-shown-headers}は表示するヘッダの正規表現です．
@vindex{cmail-always-shown-headers}
デフォルトでは

@example
"^From \\|^X-cmail\\|^Received:\\|^Return-Path:\\|^Return-Receipt-To:\\|^Message-ID:\\|^Errors-To:\\|^References:\\|^Sender:\\|^Lines:\\|Status:\\|Replied:"
@end example

になっています．
表示したいヘッダがごく限られている場合は，
変数@code{cmail-ignored-headers}ですべてのヘッダの表示を抑制し，
あらためて変数@code{cmail-always-shown-headers}で表示したいヘッダ
を設定できます．

以下の例は，From:, Subject, Date, X-Face のヘッダだけを表示する設定です．

@example
(setq cmail-ignored-headers "^[A-Z]")
(setq cmail-always-shown-headers "^From:\\|^Subject:\\|^Date:\\|^X-Face:")
@end example

@node thread表示のカスタマイズ, カスタマイズ変数一覧, ヘッダ表示のカスタマイズ, cmailのカスタマイズ
@comment  node-name,  next,  previous,  up
@section thread表示のカスタマイズ
@cindex{thread表示のカスタマイズ}

thread の親子関係を示すインデント幅をカスタマイズする場合には, 
@file{.emacs}に次の例のような変数を設定します．

@example
(setq cmail-thread-indent 3)
@end example
@vindex{cmail-thread-indent}

この設定では, threadのインデント幅がデフォルトの2から3に深くなります．

@example
(setq cmail-thread-folder-regexp \"^.*ml$\\\\|^ml/.*$\")
@end example
@vindex{cmail-thread-folder-regexp}

この設定は, thread表示の対象となるフォルダの正規表現を指定しています．
この場合, 最後が @samp{ml} で終るフォルダ名と階層フォルダ @samp{ml}の下
のすべてのフォルダがthread表示の対象となります． デフォルトは@code{nil}で
あり, この場合には,すべてのフォルダがthread表示の対象となります．

@example
(setq cmail-thread-ignored-folder-regexp \"^INBOX$\\\\|^WORK$\")
@end example
@vindex{cmail-thread-ignored-folder-regexp}

この設定は上記の設定とは逆に, thread表示の対象外としたいフォルダの正規表
現を指定しています． この場合, @samp{INBOX}と@samp{WORK}以外のすべてのフォ
ルダがthread表示の対象となります． この設定は, 変数
@code{cmail-thread-folder-regexp}の設定に優先します． また, 上記の変数
@code{cmail-thread-folder-regexp}が@code{nil}の場合は, この変数の設定値
にmatchしたフォルダ以外がthread表示の対象フォルダになります．

なお, これらの機能を使用したくない場合には, @file{.emacs}に

@example
(setq cmail-display-thread nil)
@end example
@vindex{cmail-display-thread}

という行を追加して下さい．

@node  カスタマイズ変数一覧,  , thread表示のカスタマイズ, cmailのカスタマイズ
@comment  node-name,  next,  previous,  up
@section カスタマイズ変数一覧

カスタマイズに使われる主な変数には以下のものがあります．値の説明に [*] 
印のあるものについては，Emacs の Help から (または M-x describe-variable 
を使用し) 変数の記述を表示して参照してください．また Emacs 20.x 等カスタ
マイズ機能が使用できる環境の方は，M-x cmail-customize でカスタマイズ機能
を呼び出し，変数の説明を参照しながらカスタマイズする事ができます．
@file{cmail-vars.el}というファイルには，これらの変数に関する詳細なコメン
トがありますので，カスタマイズの際の参考にしてください．

@noindent
@format
 変数名                       解説                         デフォルト値
-----------------------------+--------------------------------+--------
 cmail-folder-alist           フォルダの自動分類に使われる     nil
 cmail-sort-header-alist      フォルダの自動ソートに使われる   nil
 cmail-sort-header-default    フォルダのデフォルトのソート方法 nil
 cmail-default-headers        cmail-mark-specified-mailsで補完 ...
                              するヘッダ名
 cmail-use-regexp-in-folder-alist                              nil
                              cmail-folder-alistで正規表現を使
                              用するか
 cmail-auto-expirable-folders 古いメールを削除するフォルダ     nil
 cmail-expiry-days-alist      フォルダ毎のexpiry daysを指定    nil
 cmail-default-expiry-days    デフォルトのexpiry days          7
 cmail-archive-on-get         新着mailのget時に自動分類するか  nil
 cmail-archive-on-quit        quit時に自動分類するか           t
 cmail-archive-on-visit       visit時に自動分類するか          t
 cmail-expunge-on-save        save前にフォルダを整理するか     t
 cmail-path                   フォルダのあるディレクトリ       "~/Mail/"
 cmail-compressed-folders nil フォルダ補完リストで.gz|.Zを取り nil [*]
                              除くか
 cmail-save-to                メールのセーブ先ディレクトリ     cmail-pathと同じ
 cmail-work-dir               コマンドを実行するディレクトリ   cmail-pathと同じ
 cmail-ok-if-backup-exists    バックアップ消去を行なうか       "DELETE"
 cmail-query-delete           メール削除の確認を行なうか       nil
 cmail-query-save-folder      フォルダセーブの確認を行なうか   nil
 cmail-check-virtual-folder-on-clean
                              virtual-folderの削除時，メールが t
                              あれば確認をとるか
 cmail-inbox-folder           INBOXフォルダの名前              "INBOX"
 cmail-query-limit-except-inbox-folder                         nil
                              cmail-inbox-folderを大きいフォル
                              ダかどうかのチェックから外すか
 cmail-spool-directory        スプールディレクトリ             rmail-spool-directory と同じ
 cmail-mail-spools            スプールファイルかPOPサーバ      nil
 cmail-cursor-fast            カーソル移動のスピード           t
 cmail-large-folder           「大きいフォルダ」の基準         50
 cmail-incoming-mails-folder  一時的コピーを格納するフォルダ   ".BACKUP"
 cmail-backup-version         フォルダのversion-control        nil
 cmail-ignored-headers        表示しないヘッダの正規表現       ...
 cmail-always-shown-headers   表示するヘッダの正規表現         nil
 cmail-use-folders-mode-first フォルダモードから起動するか     nil
 cmail-summarize-format       サマリのformat                   ...
 cmail-summarize-format-alist フォルダ毎のフォーマットを指定   nil [*]
 cmail-display-thread         thread表示をするかどうか         t
 cmail-thread-indent          thread表示の際のインデント幅     2
 cmail-thread-folder-regexp   thread 表示の対象となるフォルダ  nil [*]
 cmail-thread-ignored-folder-regexp 
                              thread 表示対象外のフォルダ      nil [*]
 cmail-thread-ignore-limit    thread表示にlimitを使用しないか  t
 cmail-thread-prepare-data-on-archive                          nil
                              自動分類時にthreadデータを作成し
                              ておくか
 cmail-use-full-window        cmailが全画面を使うか            t
 cmail-window-size            サマリとメールのwindowの割合     (1 . 5)
 cmail-window-horizontal-size フォルダ一覧とサマリの割合       (1 . 3)
 cmail-use-X-Nsubject         X-Nsubjectを使うかどうか         t
 cmail-use-mime               MIME対応機能を使うかどうか       nil
 cmail-use-mailcrypt          PGPメールを扱うかどうか          nil
 cmail-use-send-mail-archive  送信メールログ機能を使うか       nil
 cmail-archive-folder         送信メールを保存するフォルダ名   "archive"
 cmail-self-addresses         自分のアドレスにマッチする文字列 'auto
                              のリスト
 cmail-default-from           送信メールのFrom:行の内容        nil
 cmail-always-cc-me           CC に自分のアドレスをいれる      '(when-follow-up)
 cmail-dont-cc-me-destination
                              cmail-always-cc-me が on でも    nil
                              CC に自分を入れない宛先リスト
 cmail-dont-cc-addresses      CC から削除する宛先リスト        'self
 cmail-dont-reply-to-addresses
                              To から削除する宛先リスト        'self
 cmail-archive-from           送信メールログのFrom:行の内容    (user-login-name) 
 cmail-archive-on-visit       visit時にauto-archiveするか      t
 cmail-cmail-archive-on-quit  quit時にauto-archiveするか       t
 cmail-expunge-on-save        save前にフォルダを整理するか     t
 cmail-mail-insert-x-mailer   X-Mailerを付加するか             t
 cmail-reply-heading-format   リプライ時のヘッダのformat       ...
 cmail-replyaddress-without-quoted-name                        t
                              To:にアドレスだけを含めるか
 cmail-unify-multi-re         複数の"Re"をひとつにまとめるか   t
 cmail-re-regexp              Re:をつける前にサブジェクトから  [*]
                              削除する文字列のための正規表現
 cmail-remove-re              サブジェクトに"Re:"をつけない    nil
 cmail-current-point-mark     表示中のメールのインデックスを指 t
                              すマークをつけるか
 cmail-mark-delete-show-next  Dマークをつけた時次メールが未読  nil
                              であればそれを表示するか
 cmail-addresses              アドレス補完用ファイル           "~/.addresses"
 cmail-complete-header-regexp アドレス補完を行なうフィールド   [*]
 cmail-mail-query-cc          mailを出す時CCを尋ねるか         nil
 cmail-use-X-Nsubject         X-Nsubjectをサブジェクトと見なす t
 cmail-forwarded-mail-border-cons 
                              forwardする時に挿入する境界線    [*]
 cmail-rfc934-forwarding      forward時の文字エスケープ        t
 cmail-mime-forwarding        MIMEモードでも通常のフォワードを t
                              行うか
 cmail-make-References-header Referencesを使用するか           t
 cmail-print-proc             印刷関数                         [*]
 cmail-print-command          印刷コマンド                     [*]
 cmail-use-folders-mode-first 起動時にフォルダ一覧モードにする nil
 cmail-use-visiting-parent-dir-as-quit
                              TOPディレクトリ以外で
                              cmail-folders-quitしたとき親ディ
                              レクトリに移動                   nil
 cmail-cmail-highlight-mode   non-nilの時, メッセージのハイラ
                              イト機能を使用する               window-system
 cmail-highlight-mouse        マウスカーソルがサマリ行(サマリ
                              モード)やフォルダ名(フォルダ一
                              覧モード)の位置にきたときに付加
                              するface                         nil
 cmail-cite-regexp            ハイライト機能使用時における引用 [*]
                              部分識別のための正規表現
 cmail-highlight-attribute-alist
                              ハイライト機能の属性値           [*]
 cmail-mail-callback nil      サマリのリプライマーク(R)をメー  t
                              ルの送出時につけるか、メール作
                              成コマンドの投入時につけるかの
                              選択。t で送出時、nil でコマン
                              ドを実行した時。
 cmail-always-display-folders フォルダ一覧モードを常時表示する [*]
                              か
 cmail-always-display-folders-threshold                        100
                              フォルダ一覧モードの常時表示を行
                              うウィンドウ幅のしきい値
 cmail-use-folders-mode-first フォルダ一覧モードから起動するか [*]
 cmail-folders-unfold-dirs    フォルダ一覧で展開するディレク   nil [*]
                              トリのリスト
 cmail-folders-list-top       フォルダ一覧の先頭に持ってくる   "INBOX"
                              フォルダのリスト
 cmail-folders-list-bottom    フォルダ一覧の終端に持ってくる   nil
                              フォルダのリスト
 cmail-folders-display-unread-mails                            nil
                              未読メール数を表示するか
 cmail-folders-display-all-folders                             t
                              未読メールのないフォルダも表示
 cmail-delete-file-after-conversion                            nil
                              変換前のmbox/RMAIL形式のファイル
                              を削除するか
 cmail-i18n-message           一部のEmacsで日本語環境のときに  t
                              自動的に日本語メッセージを使う
 cmail-i18n-doc-language      カスタマイズ変数説明の言語指定   ja_JP
 cmail-sum-pop-up-menu-1      メッセージ操作用 pop-up メニュー [*]
 cmail-sum-pop-up-menu-2      フォルダ操作用 pop-up メニュー   [*]
 cmail-option-path-list       オプション機能用のファイルを置く [*]
                              ディクトリ
 cmail-auth-file              パスワードを保存するファイル名   "~/.cmail-auth"
 cmail-use-auth-file          ファイルにパスワードを保存する   nil
-----------------------------+--------------------------------+--------
@end format

@node  操作コマンド一覧, バグレポート, cmailのカスタマイズ, Top
@comment  node-name,  next,  previous,  up
@chapter 操作コマンド一覧
@cindex{操作コマンド一覧}

@menu
* サマリモードでの操作::        
* フォルダ一覧モードでの操作::  
@end menu

@node  サマリモードでの操作, フォルダ一覧モードでの操作, 操作コマンド一覧, 操作コマンド一覧
@comment  node-name,  next,  previous,  up
@section サマリモードでの操作
@cindex{サマリモードでの操作}

@samp{cmail}はほとんどの操作をサマリ上で行ないます．@samp{cmail}が立
ち上がると，カーソルはサマリにあります．

以下にサマリのキーバインド表を載せます．

@noindent
@format
キー    機能                            関数名
--------+-------------------------------+-------------------------------
 RET     記事の1行上スクロール           cmail-read-each-line
 C-n     サマリの下移動                  cmail-down-imme
 C-o     メールをmbox形式でセーブする    cmail-save-mail-as-mbox
 C-p     サマリの上移動                  cmail-up-imme
 C-t     thread表示/非表示の切り替え     cmail-toggle-thread
 SPC     記事の表示・上スクロール        cmail-read-contents
 %       インデックスの移動              cmail-move-index
 .       記事の表示                      cmail-show-contents
 <       メールの先頭を表示              cmail-beginning-of-mail
 =       サマリの全画面表示
 >       メールの最後を表示              cmail-end-of-mail
 ?       モード表示                      describe-mode
 *       ダイジェストの展開              cmail-burst-digest
 @@       ダイジェストの送信              cmail-send-digest
 /       条件に合うメールにマーク        cmail-mark-specified-mails
 A       メールの自動分類                cmail-auto-archive
 B       エラーメールの再送              cmail-resend-bounced-mail
 C       マークされたメールの確認        cmail-confirm-mark
 E       メールを編集する                cmail-edit
 F       元のメールを引用してフォロー    cmail-followup-include-text
 H       Holdマーク("H")を押す           cmail-mark-hold
 L       全てのサマリ表示
 N       次の未読のメールの表示          cmail-next-unread-mail
 P       前の未読のメールの表示          cmail-previous-unread-mail
 Q       フォルダのクローズ              cmail-close-folder
 R       元のメールを引用して返事を書く  cmail-reply-include-text
 S       フォルダのセーブ                cmail-save-folder
 U       メールを未読("U")に戻す         cmail-mark-unread
 V       メールのrefile先のフォルダへ    cmail-visit-saving-folder
 W       送信者の名前とアドレスを表示    cmail-name-and-address
 X       削除されるメールの確認          cmail-confirm-execute
 ^       メールにマークを付ける          cmail-mark-mail
 a       現在行のメールの発信者へメール  cmail-mail-this-line
 b       記事の下スクロール              cmail-read-reverse
 c       メールの未読マークを全て外す    cmail-catch-up-all
 d       消去マーク("D")を押す           cmail-mark-delete
 e       インデックスを編集する          cmail-edit-index
 f       フォローを書く(Cc:含む)         cmail-followup
 g       新着メールを取ってくる          cmail-get-newmail
 h       キーバインドの表示              describe-mode
 i       インデックスの移動              cmail-move-index
 j       記事の1行上スクロール           cmail-read-each-line
 k       記事の1行下スクロール           cmail-read-each-line-backward
 l       サマリの再表示                  cmail-make-summary
 m       メールを出す                    cmail-mail
 n       次のメールの表示                cmail-next-mail
 o       メールをファイルにセーブする    cmail-save-mail
 p       前のメールの表示                cmail-previous-mail
 q       cmailを終る                     cmail-quit
 r       返事を書く                      cmail-reply
 s       メールのrefile先を表示する      cmail-saving-folder
 t       ヘッダの表示状態の切替          cmail-toggle-header
 u       マークを外す                    cmail-unmark
 v       フォルダの変更                  cmail-visit-folder
 w       フォルダをセーブする            cmail-save-folder
 x       消印のあるメールを消す          cmail-execute-index
 z       記事をフォワードする            cmail-forward
 |       メールをコマンドへパイプ        cmail-pipe
 DEL     記事の下スクロール
 
 C-cf    フォルダ一覧モードに入る        cmail-folders
 C-ca    アドレスを.addressesに登録      cmail-add-new-address-from-mail
 C-c^    スレッドにマークを付ける        cmail-mark-thread
 C-cd    スレッドに消去マーク("D")を押す cmail-th-mark-delete
 C-cC-sn 番号順のサマリソート            cmail-sort-by-number
 C-cC-ss サブジェクト順のサマリソート    cmail-sort-by-subject
 C-cC-sd 日付順のサマリソート            cmail-sort-by-date
 C-cC-sC-d 時間も含めてサマリソート      cmail-sort-by-time
 C-cC-sa 送り主の名前順のサマリソート    cmail-sort-by-author
 C-cC-sb バイト数順のサマリソート        cmail-sort-by-bytes
 C-cC-v  cmailのバージョン表示           cmail-version
 C-cC-x  古いメールに削除マークを付ける  cmail-expire-mark
 
 M-p     表示中のメールを印刷する        cmail-print
 M-s     インデックスを並べ替える(egg版) cmail-sort-index
 M-o     サマリ順にメールを並べ替える    cmail-reorder-folder
 M-n     フォルダの名称変更              cmail-rename-folder
 M-k     フォルダの削除                  cmail-kill-folder
 M-y     フォルダのコピー                cmail-copy-folder
 M-d     フォルダの整理                  cmail-diet-folder
 M-r     インデックスを再構成            cmail-remake-folder-headings
 M-f     フォルダを変更                  cmail-visit-folder
 M-l     サマリのリミットを設定する      cmail-set-summary-limit
 M-c     メールをフォルダにコピー        cmail-copy-to-folder
 M-m     メールをフォルダに移動          cmail-move-to-folder
 M-^     すべてのメールにマークをつける  cmail-mark-all
 M-u     未読マークを外す                cmail-mark-active
 M-a     未読メールを含む自動分類        cmail-auto-archive-all

 M-tc    フォルダをmbox形式で出力する    cmail-c2m
 M-tm    mboxからメールをコンバート      cmail-m2c
 M-tr    RMAILからメールをコンバート     cmail-r2c
--------+-------------------------------+-------------------------------
@end format

@node  フォルダ一覧モードでの操作,  , サマリモードでの操作, 操作コマンド一覧
@comment  node-name,  next,  previous,  up
@section フォルダ一覧モードでの操作
@cindex{フォルダ一覧モードでの操作}

  サマリモードで，@kbd{C-cf}とタイプするとフォルダ一覧モードに入ります．
  以下にフォルダ一覧モードでのキーバインドを載せます．

@noindent
@format
キー    機能                            関数名
--------+-------------------------------+-------------------------------
 p       カーソルの上移動                cmail-folders-previous-line
 n       カーソルの下移動                cmail-folders-next-line
 k       カーソルの上移動                cmail-folders-previous-line
 j       カーソルの下移動                cmail-folders-next-line
 P       上の未読メールのあるフォルダへ  cmail-folders-previous-unread-folder
         移動
 N       下の未読メールのあるフォルダへ  cmail-folders-next-unread-folder
         移動
 SPC     カーソル行のフォルダ/ディレクト cmail-folders-visit-folder
         リに入る
 C-m     カーソル行のフォルダ/ディレクト cmail-folders-visit-folder
         リに入る
 u       上位のディレクトリに移動する    cmail-folders-visit-parent-dir
 d       最上位のディレクトリに移動する  cmail-folders-visit-top-dir
 x       カーソル行がディレクトリ展開さ  cmail-folders-toggle-unfold
         れたフォルダならそのディレクト
         リを閉じる．ディレクトリならそ
         のディレクトリを展開する
 v       直接指定でフォルダに入る        cmail-folders-visit-folder-directly
 m       メールを書く                    cmail-mail
 g       新着メールを取ってくる          cmail-folders-get-newmail
 q       サマリ画面に戻る(※1)           cmail-folders-quit
         もしくはcmailを終了する(※2)
         サブディレクトリでquitしたとき，
         上位のディレクトリに戻る(※3)
 Q       INBOXを除く全フォルダのクローズ cmail-folders-close-all-folders
 M-w     全てのフォルダをセーブしてフォ  cmail-folders-update
         ルダディレクトリの再走査を行う．
         C-uが与えられた場合, メモリ上の
         フォルダ情報を破棄してから実行
         する
 M-y     カーソル行のフォルダのコピー    cmail-folders-copy-folder
 M-c     カーソル行のフォルダのコピー    cmail-folders-copy-folder
 C       カーソル行のフォルダのコピー    cmail-folders-copy-folder
 M-n     カーソル行のフォルダの名称変更  cmail-folders-rename-folder
 R       カーソル行のフォルダの名称変更  cmail-folders-rename-folder
 M-k     カーソル行のフォルダの削除      cmail-folders-kill-folder
 D       カーソル行のフォルダの削除      cmail-folders-kill-folder
 h       キーバインドの表示              describe-mode
 ?       キーバインドの表示              describe-mode
--------+-------------------------------+-------------------------------
※1: @code{cmail-use-folders-mode-first}が@code{nil}のとき
※2: @code{cmail-use-folders-mode-first}が@code{t}のとき
※3: @code{cmail-use-visiting-parent-dir-as-quit}が@code{t}のとき
@end format

@node  バグレポート, 謝辞, 操作コマンド一覧, Top
@comment  node-name,  next,  previous,  up
@chapter バグレポート

「どうしたらいいのだろう」といった疑問をお持ちになった場合，FAQを御覧
になって下さい．あなたの疑問に対する答えが書いてあるかも知れません．

また，@samp{cmail}のホームページもあります．

@display
@code{http://cmail.sourceforge.jp/}
@end display

それでもわからない場合や，実際に使用してみて，バグを発見したり，「あーし
たらどうか」とか「これはないんじゃない」といった感想をお持ちになりました
ら，@samp{cmail}ユーザのためのメーリングリストに参加されてはどうでしょう
か? 参加希望の方は

@display
cmail-request@@ne.nal.go.jp
@end display
@cindex{メーリングリスト}

まで
@display
・名前
・職業
・メールを受けたいアドレス
(・その他，PR など )
@end display

を書いたメールを送って下さい．現時点では@samp{cmail}の主なサポートはこの
メーリングリストで行なわれています．最新のバージョンの配布もここで行なわ
れますので，参加をお勧めします．

また，現在の@samp{cmail}の保護者のアドレスを以下にあげておきます．
@cindex{保護者}

@display
matz@@ruby-lang.org
@end display

@node  謝辞, Concept Index, バグレポート, Top
@comment  node-name,  next,  previous,  up
@chapter 謝辞

以下に挙げる皆さんの協力がなければ今の@samp{cmail}はありませんでし
た．ここに感謝を表します．

まず@samp{chain-mail}を最初に開発して下さった林 亮さんに感謝します．そし
て活発に提案・要求を行なって@samp{cmail}を良いものにするべく協力して下さっ
たcmail mailing-listのメンバの皆さんに感謝します．みなさん，ありがとう．

@node     Concept Index, Function Index, 謝辞, Top
@comment      node-name, next,        previous,  up
@unnumbered Concept Index

@printindex cp

@node     Function Index, Variables Index, Concept Index, Top
@comment      node-name, next,        previous,  up
@unnumbered Function Index

@printindex fn

@node Variables Index,  , Function Index, Top
@comment    node-name,          next,       previous,  up
@unnumbered Variable Index

@printindex vr

@summarycontents
@contents
@bye

Local variables:
fill-column: 72
end:
