cmail は Emacs 系エディタの上で動くメイル管理システム、 すなわち、ユーザのメイルの表示・編集・送信を支援するシステムです。
cmail はもともと林 亮さんによって version 1.* が作られました。その後、まつもとゆきひろさんが 大規摸な改造を行なって現在 (version 2.*) に至っています。
cmail には以下に挙げるような特長があります。
「基本機能は simple に、拡張機能は外部のパッケージを利用する」
cmail は他のパッケージで実現できる拡張機能については 積極的にそれを利用し、 そのためのインターフェースを充実させることに努めています。 これによって cmail は車輪を再発明するという 「にせの短気 (*1) 」 にとらわれることをさけ、 同時に cmail 本体を肥大化させないようにしています。 ユーザは自分の望む外部のパッケージを併用することで、 好みの機能を cmail に付加することができます。 また、外部オプションをより統合した形で提供するための 枠組を用意しているので、サポートされているオプションは cmail customize からオンオフおよび基本設定が可能です。
(詳細は cmail と併用可能な主な外部パッケージ もごらんください。)
フォルダ単位のメイル管理
cmail は、ユーザのメイルをフォルダという単位でまとめて管理を行ないます。 そのフォルダ毎に、サマリ (それぞれのメイルの日付や発信者、表題等を1行にまとめたもの) を羅列し、ユーザはそのサマリから任意のメイルを選択し、 そのメイルを読んだり、編集したり、 または任意のキーでサマリをソートしたりすることができます。
1フォルダ1ファイルなのでメイルの管理が比較的簡単です。 また jam-zcat.el (Copyright (C) 1991, 1992, 1994 Kazushi Marukawa.)、 jka-compr.el (Copyright (C) 1993, 1994 Free Software Foundation, Inc.) などを使えば 圧縮されたフォルダも扱えます。
逆に悪い特徴としては、1フォルダ1フォルダのために、フォルダ内の メッセージの数が多くなる、または巨大なメッセージが多数存在する 場合ファイル書きこみや、ファイル内のメッセージ速度が極端に低下 するという特徴があります。このため、自動分類や古いメッセージの 自動削除機能などフォルダのサイズ増加を抑える機能を充実させて います。
Emacs カスタマイズ対応
ほとんどのオプション変数は Emacs カスタマイズを利用して説明 を参照しながら設定できます。
英語または日本語でプロンプト、エラーメッセージ、および Emacs
のカスタマイズ機能の説明の表示
プロンプト、エラーメッセージ、および Emacs カスタマイズ のオプションの説明などは日本語が表示できる Emacsen であれば 日本語で表示できます。日本語の使えない Emacsen の場合は英語 表示も選択できます。
操作性がGNUSに似ている(これについては異論もある)
サマリベースの操作性が、Emacs 上のニュースリーダー
である GNUS/Gnus の Subject モードに似ているように
設計されました。
(サマリモードの画面のスナップショット:GIF 15KByte)
GNUS と同様にサマリのスレッド表示もできます。
cmail-2.59.6 以降からは、GNUS の Group バッファに
似たファルダ一覧の表示を行い、
選択を容易にするための機能も追加されました。
メイルの自動分類機能
メイルのヘッダの情報を基に、 ユーザの設定にしたがってメイルをフォルダに 自動分類する機能があります。 メイリングリストからのメイルの処理などに便利です。
メイルの expire 機能
フォルダ毎に、ある程度以上古いメイルを自動的に削除 する事ができます(expire 機能)。 メイリングリストなど古いメイルを保存する必要が あまり無い場合などに便利です。
アドレス補完機能
cmail にはアドレス補完機能がついています。 補完は、ミニバッファの アドレス入力時だけでなく、メイルバッファのヘッダ部分でも行われます。
mbox形式、RMAIL形式との変換ツールが用意されている。
mbox 形式との相互変換ツールと、 RMAIL形式から cmail 形式への変換ツールを用意して、 他のメイラ {から|へ} の移行を積極的にサポートします。 現時点ではmhとの相互変換はサポートされていませんが、 mbox形式を経由すれば可能です。 また、RMAIL 形式のファイルをフォルダに変更するための perl スクリプトも用意されています。
GNU Emacs 19.x, 20.x 21.x ベースの複数の Emacsen
に対応している。
現在 GNU Emacs 版でいうところの 19.x, 20.x, 及び 21.x、もしくは これをベースにした Emacsen (XEmacs 21, Meadow-1.x など) の上で 同じように動作するように設計されています。 (GNU Emacs 19.x のうち 19.28 またはこれをベースにしている Emacsen は内部メモリ処理やファイルサイズ処理の関係で、 大きなフォルダやファイルを扱う場合にメモリが足りなくなる などの障害が報告されていますので、なるべく 19.34 で利用 されることをお勧めします。)