[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

25. メイルの閲覧rmail

rmailは, 受け取ったメイルを読んだり処理したりするためのEmacsの サブシステムです. rmailは, メイルメッセージをrmailファイルと呼ばれるファイルに格納します. rmailファイル内のメッセージを読むには, rmailモードという特別なメジャーモードで行います. このモードでは, メイルを取り扱うコマンドを実行するように ほとんどのアルファベット文字を再定義しています. コマンドrmail-modeでrmailモードに切り替えます. するといつものようにフックrmail-mode-hookが実行されます. しかし, このコマンドを直接実行しないでください. 正しいrmailファイルを訪問しているバッファでない限り, このコマンドはまともに動きません.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

25.1 rmailの基本概念

もっとも簡単なrmailの使い方では, ‘~/RMAIL’という1つのrmailファイルにすべてのメイルを保存します. これを主rmailファイル(primary Rmail file)といいます. コマンドM-x rmailは, 主rmailファイルを読み込み, inbox (40) 内の新しいメイルを併合して, 最初の未読メッセージを表示して メイルを読み始められるようにします. 変数rmail-file-nameで, 主rmailファイルの名前を指定します.

rmailは, rmailファイルの1つのメッセージだけが見えるようにナロイングします. 表示されているメッセージをカレントメッセージ(current message)と 呼びます. rmailモードの特別なコマンドを使えば, カレントメッセージを削除(41) する, 別のファイルへコピーする, 返信を送る, 別のメッセージへ移動することができます. また, 複数のrmailファイルを作って, それらのあいだでメッセージを移すこともできます.

rmailファイル内では, 一般にメッセージは受け取った順に並べられます. 別の順序にソートすることもできます. メッセージにはメッセージ番号(message numbers) として連続した整数が割り振られます. カレントメッセージの番号は, rmailのモード行に表示され, そのあとにファイル内の総メッセージ数も表示されます. jキーにメッセージ番号を指定すれば, その番号のメッセージに移動できます (see section メッセージ間での移動).

Emacsの習慣に従って, rmailファイルの変更は ファイルを保存したときにだけ反映されます. srmail-save)で保存しますが, 削除(see section メッセージの削除)と 指定されたメッセージをファイルからまず抹消します. 抹消せずにファイルを保存するには, C-x C-sを使います. さらに, inboxから新着メイルを併合したあとにも rmailファイルを保存します (see section rmailファイルとinbox).

rmailを終了するにはqrmail-quit)を使います. (メッセージを)抹消しrmailファイルを保存してから, 別のバッファに切り替えます. しかし, 正しく「終了」する必要はありません. rmailから別のバッファへ切り替えて, そのあと戻らなければ終了したことになります. (rmailコマンドb, rmail-buryがこれを行う. ) (変更したファイルにするのと同様に) rmailファイルを確実に保存するようにしてください. これには, C-x sがよいでしょう (see section ファイルを保存する).


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

25.2 メッセージをスクロールする

rmailが表示するメッセージが画面に入りきらないとき, 残りの部分を読むにはスクロールする必要があります. これには, C-v, M-v, M-<を使いますが, rmailではスクロールを頻繁に行うので, もっと簡単な操作を用意してあります.

<SPC>

先へ進める(scroll-up).

<DEL>

まえへ戻す(scroll-down).

.

メッセージの先頭へ戻る(rmail-beginning-of-message).

メッセージを読むときもっとも多く行うことは 画面単位でのスクロールなので, rmailでは, <SPC>と<DEL>は, それぞれ, C-vscroll-up)とM-vscroll-down)の 同義になっています.

コマンド.rmail-beginning-of-message)は, 選択されているメッセージの先頭に移動します. このコマンドはM-<とまったく同じというわけではありません. まず, マークを設定しません. さらに, カレントメッセージを変更してあるとバッファの境界を再設定します.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

25.3 メッセージ間での移動

もっとも基本的な操作は, メッセージを読むことです. rmailでこれを行うには, メッセージをカレントメッセージにします. メッセージは受け取った順に並んでいるので, 通常はファイルの中を順に移動して読んでいきます. rmailに入ると, カレントメッセージにしたことがない最初のメッセージから始まります (つまり, 未読を意味する‘unseen’属性が付いている最初のもの. see section rmailの属性). 先へ進めば他の新しいメッセージを読めます. まえへ戻れば古いメッセージを読み直せます.

n

削除されたメッセージを飛ばして, 削除されていないつぎのメッセージへ移動する (rmail-next-undeleted-message).

p

削除されていないまえのメッセージへ移動する (rmail-previous-undeleted-message).

M-n

削除されたメッセージも含めてつぎのメッセージへ移動する (rmail-next-message).

M-p

削除されたメッセージも含めてまえのメッセージへ移動する (rmail-previous-message).

j

最初のメッセージへ移動する. 数引数nを指定すると, メッセージ番号nのメッセージへ移動する (rmail-show-message).

>

最後のメッセージへ移動する(rmail-last-message).

<

最初のメッセージへ移動する(rmail-first-message).

M-s regexp <RET>

正規表現regexpに一致するつぎのメッセージへ移動する (rmail-search).

- M-s regexp <RET>

正規表現regexpに一致するまえのメッセージへ移動する.

npは, rmailでメッセージ間を移動する普通の方法です. これらのコマンドは, メッセージ間を順々に移動していきますが, 期待どおりに削除されたメッセージは飛び越えます. コマンドの定義名はrmail-next-undeleted-messagermail-previous-undeleted-messageです. 削除されたメッセージを飛び越したくない場合, たとえば, 削除されたメッセージをアンデリート(42)したいときは, (npの)変形である M-nM-prmail-next-message, rmail-previous-message)を使います. これらのコマンドに数引数を指定すると, 反復回数とみなします.

rmailでは, 数字を打つだけで数引数を指定できます. 始めにC-uを打つ必要はありません.

M-srmail-search)コマンドは, rmailにおける探索を行います. 通常のインクリメンタルサーチコマンドC-sもrmailで使えますが, これはカレントメッセージの中だけを探索します. M-sコマンドの目的は, 他のメッセージを探すことです. 正規表現(see section 正規表現の構文)を読み終えてから, つぎのメッセージの先頭から一致するものを探し始めます. そしてみつかったメッセージを選択します. regexpが空だとM-sは最後に使った正規表現を再使用します.

ファイル内で逆向きに他のメッセージを探索するには, M-sに負の数引数を指定します. rmailでは, - M-sと打てばよいのです.

ラベルをもとにメッセージを探索することもできます. See section ラベル.

メッセージ番号を指定してメッセージへ移動するには, メッセージ番号を引数としてjrmail-show-message)を使います. 引数がないとjは最初のメッセージを選択します. <rmail-first-message)も最初のメッセージを選択します. >rmail-last-message)は最後のメッセージを選択します.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

25.4 メッセージの削除

メッセージを保存しておく必要がなくなったら, そのメッセージを削除(delete)できます. 「無視せよ」という意味の削除印をメッセージに付けます. すると, いくつかのrmailコマンドはそのメッセージが存在しないものとして扱います. しかし, そのメッセージはまだrmailファイルの中にあって, メッセージ番号も付いています.

rmailファイルを抹消(expunging)すると, 削除印が付いたメッセージを本当に消し去ります. 残ったメッセージには番号を順に振り直します. 抹消は, アンダイジェスト(see section ダイジェストメッセージ)を除いて, メッセージ番号を変更する唯一の動作です.

d

カレントメッセージを削除し, 削除されていないつぎのメッセージへ移動する (rmail-delete-forward).

C-d

カレントメッセージを削除し, 削除されていないまえのメッセージへ移動する (rmail-delete-backward).

u

カレントメッセージをアンデリートする, あるいは, 削除されたまえのメッセージへ戻ってアンデリートする (rmail-undelete-previous-message).

x

rmailファイル(の削除の付いたメッセージ)を抹消する (rmail-expunge).

rmailにはメッセージを削除するコマンドが2つあります. どちらもカレントメッセージを削除し, 別のメッセージを選択します. drmail-delete-forward)は すでに削除したメッセージを飛ばしてつぎのメッセージへ移動しますが, C-drmail-delete-backward)はまえのメッセージへ移動します. 指定した方向に削除されていないメッセージがないときは, 削除したばかりのメッセージがカレントメッセージのままです. どちらのコマンドに対しても, 数引数を指定すると, 削除後の移動方向を反転します.

rmailがメッセージを削除するときはいつでも, rmail-delete-message-hookに登録されている関数(群)を起動します. フック関数が起動されるときには, メッセージに削除印が付いていますが, rmailバッファではそのメッセージはカレントメッセージのままです.

削除したすべてのメッセージをrmailファイルから本当に消すには xrmail-expunge)と打ちます. これを実行するまえならば, アンデリート(undelete), つまり, メッセージの削除印を消すことができます. アンデリートコマンド, urmail-undelete-previous-message)は dコマンドの効果をほとんどの場合打ち消します. カレントメッセージが削除されていれば, カレントメッセージをアンデリートします. そうでなければ, 削除されたメッセージが みつかるまでまえへ戻り, そのメッセージをアンデリートします.

普通はudをアンドゥできます. なぜなら, dで削除したメッセージを まえへ戻って探してそのメッセージをuがアンデリートするからです. しかし, dがメッセージを削除してから 後続のすでに削除されたメッセージを飛び越す場合には, うまくいきません. この場合, uコマンドは飛び越したメッセージのうちの 最後のものをアンデリートします. この問題を回避する簡単な方法はありません. ですが, uコマンドを繰り返せば, 最終的にはアンデリートしたいメッセージに辿り着きます. あるいは, M-pコマンドで目的の削除されたメッセージに移動してから uを打ってアンデリートします.

削除されたメッセージには, ‘deleted’という属性が付きます. その結果, カレントメッセージが削除されていると モード行に‘deleted’と表示されます. メッセージを削除する, あるいは, アンデリートすると, 実際には, メッセージにこの属性を付加する, あるいは, 取り去るだけです. See section rmailの属性.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

25.5 rmailファイルとinbox

オペレーティングシステムは, inboxと呼ばれるファイルに 到着したメイルを格納します. rmailを起動すると, movemailと呼ばれるCプログラムが走り, inboxから主rmailファイルへ新着メッセージをコピーします. ただし, 主rmailファイルには, 以前のrmailセッションで保存したメッセージも 入っています. 実際にrmailで読むメイルはこのファイルの中にあるのです. この操作を, 新着メイルの取得といいます. rmail内でgと打てば, いつでも新着メイルを取得できます.

変数rmail-primary-inbox-listには, 主rmailファイルのinboxとなるファイルのリストを格納します. この変数を明示的に設定しなければ, 環境変数MAILで初期化するか, あるいは, 最後の手段として, デフォルトのinboxを使うことを意味する nilに設定します. デフォルトのinboxはオペレーティングシステムに依存して, ‘/var/mail/username’, ‘/usr/spool/mail/username’, ‘/usr/mail/username’になります.

システムのデフォルトを調べるには, C-h v rmail-primary-inbox <RET>を使います. コマンドset-rmail-inbox-listで, 任意のrmailファイルに対して使うinboxファイルを指定できます. 複数のrmailファイルの扱い方を参照してください.

rmailファイルとinboxに分ける理由は2つあります.

  1. inboxのファイル形式は, オペレーティングシステムや 使用するメイルソフトに依存して異なる. rmailの一部分だけが違いを知っていればよく, しかも, rmail独自の形式への変換方法だけを知っていればよい.
  2. メイル紛失という危険を犯さずにinboxを参照するのはたいへん厄介である. というのは, メイル配送プログラムと相互排除を行う必要があるから. さらに, オペレーティングシステムごとに相互排除の手法が異なる. いったんinboxからメイルを取り出し, あとは別のrmailファイルを使う方式では, rmailファイルしか扱わないのでrmailの各所で相互排除する必要がなくなる.

rmailでは独自の内部形式(Babyl形式)を使っています. 当初からUNIXやGNUシステムの普通のinbox形式で十分であると気づいていて, inbox形式を内部形式として使おうと計画しています. しかし, たとえファイルの形式が同一であっても, rmailファイルはinboxファイルとは独立して存在し続けるでしょう.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

25.6 複数のrmailファイルの扱い方

rmailはデフォルトでは個人の主rmailファイルを操作します. このファイルは, ‘~/RMAIL’という名前で, システムのinboxファイルから到着メイルを受け取ります. しかし, 別のrmailファイルを作ってそれをrmailで編集することもできます. これらのファイルはそれぞれ独自のinboxからメイルを受け取ったり, あるいは, rmailコマンドでそれらのあいだでメッセージを移せます (see section ファイルへのメッセージのコピー).

i file <RET>

fileをEmacsに読み込み, それに対してrmailを実行する (rmail-input).

M-x set-rmail-inbox-list <RET> files <RET>

現在のrmailファイルに対してメイルを取り込むinboxファイルを指定する.

g

現在のrmailファイルのinboxから新着メイルを取得する (rmail-get-new-mail).

C-u g file <RET>

inboxファイルfileから新着メイルを取得する.

主rmailファイル以外のファイルに対してrmailを実行するには, rmailでirmail-input)コマンドを使います. このコマンドは, 指定されたファイルをrmailモードで訪問します. rmailの外からでもM-x rmail-inputを使えます.

iで読み込むファイルは, 通常, 正しいrmailファイルであるべきです. そうでなければ, rmailは既知のさまざまな形式を用いて メッセージに分解しようと試みます. それに成功すれば, ファイル全体をrmailファイルに変換します. 存在しないファイル名を指定すると, iコマンドは新たなrmailファイル用の新しいバッファを初期化します.

メニューからrmailファイルを選択することもできます. まず, メニューバーから項目Classifyを選びます. 続いて, Classifyメニューから項目Input Rmail Fileを選びます. そして, 望みのrmailファイルを選択します. 変数rmail-secondary-file-directoryと 変数rmail-secondary-file-regexpで, メニューに含めるべきファイルを指定します. 最初の変数では探すべきディレクトリを指定し, 2番目の変数ではディレクトリ中のどのファイルか (正規表現に一致するもの)を指定します. これらの変数は出力用のファイルを選択するときにも使われます.

各rmailファイルには, inboxファイル名の一覧を持たせることができます. この一覧は, M-x set-rmail-inbox-list <RET> files <RET>で指定します. 引数には, コンマで区切っていくつもファイル名を書けます. 引数が空でもかまいませんが, その場合, そのファイルにはinboxがないという指定になります. いったんinboxの一覧を指定すれば, 新たに指定し直さない限り, rmailファイルはそれを覚えています.

特別な例外として, 主rmailファイルにinboxファイルを指定しないと, システム標準のinboxを使用します.

grmail-get-new-mail)コマンドは, 指定されたinboxから現在のrmailファイルにメイルを併合します. rmailファイルにinboxが指定されていなければ, gは何もしません. コマンドM-x rmailも, 主rmailファイルに新着メイルを併合します.

普通のinboxでないファイルからメイルを併合するには, C-u gのようにgキーに数引数を指定します. すると, ファイル名を読み取り, そのファイルからメイルを併合します. gに引数を指定したときには, inboxファイルを削除したり変更したりしません. したがって, これは, メッセージファイルを別のメッセージファイルへ 併合する一般的な方法です.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

25.7 ファイルへのメッセージのコピー

以下のコマンドで, rmailファイルから別のファイルへメッセージをコピーできます.

o file <RET>

デフォルトではrmailファイル形式を用いて, カレントメッセージのコピーをファイルfileへ追加する. (rmail-output-to-rmail-file).

C-o file <RET>

デフォルトではシステムのinboxファイル形式を用いて, カレントメッセージのコピーをファイルfileへ追加する.

w file <RET>

メッセージのヘッダ‘Subject’からデフォルトのファイル名を作り, メッセージの本文だけをファイルfileに書き出す.

コマンドoC-oは, カレントメッセージを指定したファイルへコピーします. そのファイルは, rmailファイルでもシステムのinbox形式でもかまいません. 出力コマンドは, ファイルの形式を確かめその形式に従って メッセージのコピーを書き込みます.

メッセージをUNIXのmailファイル形式のファイルにコピーする場合, これらのコマンドは現在表示しているヘッダもコピーします. 表示(しコピー)するヘッダを指定したい場合には, あらかじめtコマンドを使ってください.

コマンドoC-oは2つの点で異ります. それぞれ, 独自のデフォルトのファイル名を持ち, ファイルが既存でない場合に使用する形式も別です. 新たにファイルを作成するとき, oコマンドはrmail形式を使いますが, C-oコマンドはシステムのinbox形式を使います. デフォルトのファイル名は, oでは最後にoで使ったものになり, C-oも最後にC-oで使ったものです.

出力ファイルが, 現在Emacsバッファで訪れているrmailファイルのときには, 出力コマンドはメッセージをバッファにコピーします. そのバッファをファイルに保存するのはユーザーの責任です.

ときどき, ファイルの内容をそのまま本文にしたようなメッセージを 受け取ることもあるでしょう. wrmail-output-body-to-file)コマンドで, (メッセージのヘッダを除いて)本文をファイルに保存できます. こうしたメッセージでは, ‘Subject’フィールドに意図するファイル名が 入れていることがままあるので, wコマンドはデフォルトの出力ファイル名に ‘Subject’フィールドを使います. しかし, ミニバッファでファイル名を読み取るので, 好きなファイル名を指定できます.

メニューを使ってrmailファイルにメッセージを出力することもできます. まず, メニューバーの項目Classifyを選択し, Classifyメニューから項目Output Rmail File Menuを選択します. そして, 望むrmailファイルを選択します. これは, oコマンドのように, カレントメッセージをそのファイルに出力します. 変数rmail-secondary-file-directoryと 変数rmail-secondary-file-regexpで, メニューに含めるべきファイル名を選択します. 最初の変数では探すべきディレクトリを指定し, 2番目の変数ではディレクトリ中のどのファイルか (正規表現に一致するもの)を指定します.

メッセージをコピーすると, もとのメッセージには‘filed’属性が付きます. そのメッセージがカレントメッセージになると, モード行に‘filed’と表示されます. メイルメッセージをそれぞれ1個だけにしておきたい場合には, 変数rmail-delete-after-outputtを設定します. すると, コマンドoC-oは, メッセージをコピーすると もとのメッセージを削除します. (必要ならば, もとのメッセージをアンデリートできます. )

システムのinbox形式でファイルにメッセージをコピーするときには, rmailで今表示しているヘッダフィールドを使います. したがって, tコマンドを使ってヘッダ全体を見えるようにしてから メッセージをコピーすると, ヘッダ全体がコピーされます. See section メッセージの表示.

変数rmail-output-file-alistを使うと, カレントメッセージの内容に基づいて デフォルトの出力ファイルを賢く指定できます. 値はつぎの形式の要素から成るリストである必要があります.

 
(regexp . name-exp)

カレントメッセージがregexpで指定されるパターンに一致すると, デフォルトの出力ファイル名はname-expになります. 複数の要素がメッセージに一致する場合は, 最初に一致した要素がデフォルトのファイル名になります. 部分要素name-expは, ファイル名を指定する文字列か, より一般的には, 文字列としてファイル名を返すLisp式です. 変数rmail-output-file-alistは, oC-oの両方に適用されます.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

25.8 ラベル

各メッセージには分類のためにいろいろなラベル(label)が付きます. 各ラベルには名前があって, 名前が異なれば別のラベルです. どのラベルもメッセージに付いているか付いていないかのどちらかです. 少数のラベル名には標準的な意味があり, 適切な場合にはrmailが自動的にメッセージに付けます. これらの特別なラベルを属性(attribute)と呼びます. それ以外のすべてのラベルはユーザーだけが付けます.

a label <RET>

カレントメッセージにラベルlabelを付ける (rmail-add-label).

k label <RET>

カレントメッセージからラベルlabelを取り去る (rmail-kill-label).

C-M-n labels <RET>

ラベル群labelsのどれか1つを持つつぎのメッセージへ移動する (rmail-next-labeled-message).

C-M-p labels <RET>

ラベル群labelsのどれか1つを持つまえのメッセージへ移動する (rmail-previous-labeled-message).

C-M-l labels <RET>

ラベル群labelsのどれかを持つすべての メッセージのサマリを作成する (rmail-summary-by-labels).

コマンドarmail-add-label)と krmail-kill-label)で, カレントメッセージに任意のラベルを付けたり取り去ったりできます. 引数が空の場合は, もっとも最近に付けたり取り去ったりしたものと 同じラベルを意味します.

分類するためのラベルをメッセージにいったん付ければ, そのラベルを使って2つのこと, つまり, 移動とサマリ作成ができます.

コマンドC-M-n labels <RET>rmail-next-labeled-message) は, ラベル群labelsのどれか1つを持つつぎのメッセージへ移動します. 引数labelsには, 1つのラベル名, あるいは, コンマで区切って複数のラベル名を指定します. C-M-prmail-previous-labeled-message)も同様ですが, まえのメッセージへ向かって逆向きに移動します. これらのコマンドに対する数引数は, 反復回数になります.

コマンドC-M-l labels <RET>rmail-summary-by-labels) は, 指定したラベルの集まりの中の少なくとも1つのラベルを持つような メッセージからなるサマリを表示します. 引数labelsは, 1つのラベル名, あるいは, コンマで区切った複数のラベル名です. サマリについては, See section rmailのサマリ機能.

C-M-n, C-M-p, C-M-lに対する引数labelsが空の場合には, これらのコマンドのどれかにもっとも最近に指定したラベルの集まりを意味します.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

25.9 rmailの属性

deleted’や‘filed’のようなラベルのいくつかには 組み込みの意味付けがあり, 適切なときに自動的にメッセージに付けられたり取り去られたりします. このようなラベルを属性(attribute)と呼びます. 以下はrmailの属性の一覧です.

unseen

メッセージが一度もカレントメッセージになったことがないことを意味する. inboxファイルから取り込またときにメッセージに付けられ, メッセージがカレントメッセージになると取り去られる. rmailを起動すると, まずこの属性を持つ最初のメッセージが表示される.

deleted

メッセージが削除されたことを意味する. 削除コマンドが付け, アンデリートコマンドが取り去る (see section メッセージの削除).

filed

メッセージは他のファイルへコピーされたことを意味する. ファイル出力コマンドが付ける (see section 複数のrmailファイルの扱い方).

answered

メッセージに返信したことを意味する. rrmail-reply)コマンドが付ける. see section 返事の送信.

forwarded

メッセージを他者に転送したことを意味する. frmail-forward)コマンドが付ける. see section 返事の送信.

edited

rmail内でメッセージのテキストを編集したことを意味する. see section メッセージの編集.

resent

メッセージを再送信したことを意味する. M-xrmail-resendコマンドが付ける. see section 返事の送信.

これら以外のすべてのラベルはユーザーだけが付けたり取り去ったりするのであって, 標準的な意味はまったくありません.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

25.10 返事の送信

rmailには, メイルの送信にメイル(mail)モードを使うコマンドが いくつかあります. メイル(mail)モードの使用方法については, rmailから使えるある種の機能も含めて, See section メイルの送信. 本節では, メイル(mail)モードへ入るrmailに特有のコマンドを説明します. メイル送信のための通常のキー, C-x m, C-x 4 m, C-x 5 mは, rmailモードでも使え, その動作もまったく同じであることに注意してください.

m

メッセージを送信する(rmail-mail).

c

書き始めたメッセージの編集を再開する(rmail-continue).

r

カレントメッセージに対する返事を送信する(rmail-reply).

f

カレントメッセージを他のユーザーに転送する(rmail-forward).

C-u f

カレントメッセージを他のユーザーに再送信する(rmail-resend).

M-m

送信できずに戻ってきたメッセージを再度送信する (rmail-retry-failure).

rmailからメッセージを送信するのは, ほとんどの場合, 読んでいるメッセージに返信するためでしょう. それには, rrmail-reply)と打ちます. すると, C-x 4 mのように 別のウィンドウに‘*mail*’バッファが表示されますが, 返事を出そうとするメッセージに基づいて ‘Subject’, ‘To’, ‘CC’, ‘In-reply-to’の ヘッダフィールドがあらかじめ埋められています. ‘To’フィールドにはそのメッセージの送信者が書かれ, ‘CC’フィールドにはそのメッセージのすべての受信者が書かれます.

変数rmail-dont-reply-to-namesを使うと, ‘CC’に自動的に含まれる受信者から特定の受信者を除くことができます. この変数の値は(文字列で表した)正規表現である必要があります. この正規表現に一致する受信者は‘CC’フィールドから除かれます. デフォルトの値は, あなた自身の名前と‘info-’で始まる名前です. (このような名前は, 大規模なメイリングリストで全員に送信するために使う習慣があるから. )

CC’フィールドを完全に省いて返信したいときには, 数引数を指定して返信コマンドを入力します. つまり, C-u r1 rです.

ひとたび‘*mail*’バッファが初期化されれば, メイルの編集や送信は通常どおりです (see section メイルの送信). あらかじめ用意されたヘッダフィールドが適切でなければ, 編集してかまいません. また, メイル(mail)モードのコマンドを使うこともでき (see section メイルモード), C-c C-yコマンドでもとの返信メッセージをヤンクすることもできます. rmailバッファに切り替えてから別のメッセージを選択し, もとに戻って新しいカレントメッセージをヤンクしてもかまいません.

メッセージが相手先へ届かない場合があります. メイル配送プログラムは, 通常, 失敗したメッセージを失敗メッセージに同封して 発信者に送り返します. rmailのコマンドM-mrmail-retry-failure)は, 同じメッセージを再送する準備をします. 前回と同じ本文とヘッダフィールドで‘*mail*’バッファを立ち上げます. すぐにC-c C-cと打つと, 前回とまったく同様にメッセージを再送信します. あるいは, 本文やヘッダを編集してから送信することもできます. 変数rmail-ignored-headers(see section メッセージの表示)と同じ形式の 変数rmail-retry-ignored-headersは, 再送信するときに送信に失敗したメッセージから取り除くヘッダを制御します. デフォルトではnilです.

rmailからメッセージを送信する別の場面は, 他のユーザーにメッセージを転送(forward)することでしょう. frmail-forward)はこれを簡単に行えるようにします. つまり, カレントメッセージをテキストとして‘*mail*’バッファを初期化し, ‘Subject’も転送メッセージである旨の初期化をします. あとは, 受信者を埋め込んで送信するだけです. メッセージを転送したとき, 受信者はあなた『から』メッセージを受け取りますが, 内容はもとのメッセージのままです.

転送されるメッセージは, 2つの区切り行に挟まれています. また, 各行は, 行頭に‘- ’を挿入してハイフンで始まるように 修正されます. 転送メッセージを受け取って, たとえばプログラムのソースコードのように 文書以外に何か役立つようなものが含まれているときには, このような変更をもとに戻せたら便利です. これを行うには, 転送メッセージを選択して M-x unforward-rmail-messageと打ちます. このコマンドは, 挿入された‘- ’を削除してもとのメッセージを取り出し, それをrmailファイルのカレントメッセージの直後に別のメッセージとして挿入します.

再送(resending)は転送に似ている別の手段です. 異なる点は, 再送はもともとの送信者『から』メッセージをもう一度送ることです. また, あなたから送られたことを示すために ‘Resent-from’と‘Resent-to’のヘッダフィールドが付加されます. rmailでメッセージを再送するには, C-u fを使います. (frmail-forwardを実行するが, 数引数を指定するとrmail-resendを実行するようになっている. )

mrmail-mail)コマンドは, 返信ではない送信メッセージを編集し始めるのに使います. ヘッダフィールドは空のままです. このコマンドとC-x 4 mとの唯一の違いは, ちょうどrがするように C-c C-yでrmailバッファを参照できるようにすることです. したがって, mコマンドでメッセージに返信したり転送したりできます. rfでできることは何でもできます.

crmail-continue)コマンドは, 書きかけのメッセージの編集を完了したり, 送信したメッセージを変更したりするために ‘*mail*’バッファの編集を再開します.

変数rmail-mail-new-framenil以外の値を設定すると, メッセージの送信を始めるすべてのrmailコマンドは編集用に新しいフレームを 作ります. メッセージを送信したり‘Mail’メニューの項目‘Don't Send’を使うと, このフレームは削除されます.

メッセージを送信するためすべてのrmailコマンドは, あなたが選択したメイル作成方式を使います (see section メイル作成方式).


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

25.11 rmailのサマリ機能

サマリ(summary)とは, rmailファイルにあるメイルの概要を示すために 1メッセージにつき1行の情報を収めたバッファです. 各行には, メッセージ番号, 送信者, ラベル, サブジェクト(‘Subject’の内容)が表示されます. ほとんどすべてのrmailコマンドはサマリバッファでも有効で, サマリの現在行が指すメッセージに適用されます. サマリバッファでポイントを動かすと, ポイントがある行が指すメッセージを選択します.

1つのサマリバッファは, それに対応した1つのrmailファイルにしか適用されません. 複数のrmailファイルを編集している場合には, それぞれに専用のサマリバッファを作れます. サマリバッファの名前は, rmailバッファの名前に‘-summary’を 付け加えたものです. 通常, 一度に表示されるサマリバッファは1つだけです.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

25.11.1 サマリの作成

現在のrmailファイルのサマリを作成するコマンドを説明します. いったんrmailファイルに対するサマリバッファを作っておくと, (メッセージの削除/抹消, 新着メイルの取得などで) rmailファイルが変更されると自動的にサマリも更新されます.

h
C-M-h

すべてのメッセージのサマリを作成する(rmail-summary).

l labels <RET>
C-M-l labels <RET>

指定したラベルのいずれかを含むメッセージのサマリを作成する (rmail-summary-by-labels).

C-M-r rcpts <RET>

指定した受信者名のいずれかを含むメッセージのサマリを作成する (rmail-summary-by-recipients).

C-M-t topic <RET>

指定した正規表現topicに一致するサブジェクトを持つ メッセージのサマリを作成する(rmail-summary-by-topic).

コマンドhC-M-hrmail-summary)は, 現在のrmailファイルのサマリバッファを このファイルの全メッセージのサマリで満たします. そして, 別のウィンドウにサマリバッファを表示し選択します.

C-M-l labels <RET>rmail-summary-by-labels)は, ラベルlabelsのいずれかを含むメッセージに対する部分的なサマリを作ります. labelsはラベル名をコンマで区切ったものである必要があります.

C-M-r rcpts <RET>rmail-summary-by-recipients)は, 受信者名rcptsのいずれかを含むメッセージに対する部分的な サマリを作ります. rcptsはメイルアドレスをコンマで区切ったものである必要があります.

C-M-t topic <RET>rmail-summary-by-topic)は, 正規表現topicに一致するサブジェクトを持つメッセージに対する 部分的なサマリを作成します.

どのrmailファイルにも1つのサマリバッファしかないことに注意してください. ある種類のサマリを作成すると, それ以前のサマリは消されてしまいます.

変数rmail-summary-window-sizeは, サマリウィンドウに使う行数を指定します. 変数rmail-summary-line-count-flag は, 各メッセージのサマリ行にメッセージの行数を表示するかどうかを制御します.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

25.11.2 サマリでの編集

rmailバッファ自体にできることは, rmailサマリバッファでもほとんどできます. 実際, いったんサマリバッファを作っておけば, rmailバッファに切り替える必要はありません.

サマリバッファ上でポイントを行から行へ移動するだけで, サマリバッファからrmailバッファのさまざまなメッセージを選択し表示できます. どんなEmacsコマンドを使ってポイントを移動してもかまいません. コマンドを実行し終ったときにポイントがある行がどこであっても, rmailバッファのそれに対応するメッセージが選択されます.

ほとんどすべてのrmailコマンドは, rmailバッファと同様にサマリバッファ でも機能します. つまり, dはサマリバッファでもカレントメッセージを削除し, uはアンデリートし, xは抹消します. oC-oはカレントメッセージをファイルに書き込みます. rは返信を開始します. サマリバッファにいても, <SPC>と<DEL>を使ってカレントメッセージをスクロールできます.

メッセージのあいだを移動するrmailコマンドもサマリバッファで使えますが, 事情が少々違っています. つまり, 現在サマリが作られているメッセージのあいだでしか移動できません. また, rmailバッファが必ず画面に表示されるようにします. (カーソル移動のコマンドはrmailバッファの内容を更新しますが, rmailバッファがウィンドウに表示されていなければ表示されません. ) 以下はこれらのコマンドの一覧です.

n

(削除された)「deleted」となっている行を 飛び越してつぎの行に移動し, そのメッセージを選択する.

p

(削除された)「deleted」となっている行を 飛び越してまえの行に移動し, そのメッセージを選択する.

M-n

つぎの行に移動し, そのメッセージを選択する.

M-p

まえの行に移動し, そのメッセージを選択する.

>

最後の行に移動し, そのメッセージを選択する.

<

最初の行に移動し, そのメッセージを選択する.

M-s pattern <RET>

カレントメッセージから始めてpatternに一致するメッセージを探索する. みつかったメッセージを選択し, サマリバッファ内のそのメッセージに対応する行にポイントを移動する.

rmailバッファで, 削除, アンデリート, 新着メイルの取得, 別のメッセージの選択を実行すると, サマリバッファを必ず更新します. 変数rmail-redisplay-summarynil以外ならば, これらのコマンドを実行するとサマリバッファは画面に表示されます.

サマリを使い終ったらQrmail-summary-wipe)と打って サマリバッファのウィンドウを削除します. サマリでrmailを終了することもできます. qrmail-summary-quit)はサマリウィンドウを削除し, rmailファイルを保存してrmailを抜け, 別のバッファに切り替えます.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

25.12 rmailファイルのソート

M-x rmail-sort-by-date

現在のrmailファイルのメッセージを日付順にソートする.

M-x rmail-sort-by-subject

現在のrmailファイルのメッセージを‘Subject’順にソートする.

M-x rmail-sort-by-author

現在のrmailファイルのメッセージを筆者名順にソートする.

M-x rmail-sort-by-recipient

現在のrmailファイルのメッセージを受け手名順にソートする.

M-x rmail-sort-by-correspondent

現在のrmailファイルのメッセージを他の文通者名順にソートする.

M-x rmail-sort-by-lines

現在のrmailファイルのメッセージを行数順にソートする.

M-x rmail-sort-by-keywords <RET> labels <RET>

現在のrmailファイルのメッセージをラベル順にソートする. 引数 labelsは, コンマで区切られたラベルの並びである必要がある. ラベルの順序がメッセージの順序を決める. 最初のラベルを持つメッセージが最初にきて, 2番目のラベルを持つものが2番目にくるというようになる. 指定したラベルも持たないメッセージは最後にくる.

rmailのソートコマンドは, 順序を保存するソート(stable sort)を行います. 2つのメッセージのどちらを先にするか明確な基準がないときには, その順序関係は保存されます. これを用いれば, 複数の基準でソートできます. たとえば, rmail-sort-by-dateを使ってから rmail-sort-by-authorを使うと, 同じ筆者のメッセージは日付順に並びます.

数引数を指定するとこれらのすべてのコマンドは逆順序に並べます. つまり, 新しいものから古いものへ, 大きなものから小さなものへ, アルファベットの逆順にメッセージをソートします.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

25.13 メッセージの表示

初めてメッセージを表示するとき, rmailはメッセージのヘッダを 整形し直してから表示します. むだな表示を削るために重要でないヘッダフィールドを隠します. tコマンドを使うと, ヘッダ全体を表示したり再度整形することができます.

t

ヘッダ全体を表示するかどうかを切り替える(rmail-toggle-header).

ヘッダの整形では, 各ヘッダフィールドの重要性に基づいて ほとんどのヘッダフィールドを削除することになります. 変数rmail-ignored-headersには, このようにして隠すヘッダフィールドを 指定する正規表現を記述します. ヘッダフィールドの先頭部分がこの正規表現に一致すると そのフィールド全体を隠します.

rmailは整形を行うまえにもとのヘッダ全体を保存します. これを見るにはtrmail-toggle-header)コマンドを使います. カレントメッセージの整形されたヘッダを捨て, もとのヘッダを表示します. tを再度実行すると, メッセージのヘッダを再度整形します. メッセージを選択し直しても再度整形します.

この結果として, (see section メッセージの編集) 整形されたヘッダを(eコマンドで)編集しても, そのあとにtを使うと編集したものは破棄されます(see section メッセージの編集). 一方, tのあとにeを使って もとの(整形していない)ヘッダを編集すると, その変更は保存されます.

tコマンドに数引数を付けると, 正の引数ならは整形したヘッダを表示し, ゼロか負ならばヘッダ全体を表示します.

複数のフォントを使えるウィンドウシステムで使用すると, rmailは特に重要なある種のヘッダフィールドを強調表示します. デフォルトでは, ‘From’フィールドと‘Subject’フィールドです. 変数rmail-highlighted-headersには, 強調表示したいヘッダフィールドを 指定する正規表現を記述します. ヘッダフィールドの先頭部分がこの正規表現に一致すると そのフィールド全体を強調表示します.

テキストの前景や背景に標準的でない色を指定すると, うまく強調表示できないこともあります. そのような場合には, highlightフェイスに別の色を指定します. highlightフェイスはrmail以外の強調表示にも使われるので, 指定を行う価値があります. 方法は, See section 複数タイプフェイスの利用.

rmailの強調表示をすべてやめるには, 変数rmail-highlighted-headersnilを設定してください.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

25.14 メッセージの編集

rmailモードでも通常のEmacsコマンドのほとんどを使えますが, C-M-nC-M-hのように他の目的のためにrmailで再定義された ものもいくつかあります. しかし, rmail バッファは通常読み出し専用であり, アルファベット文字のほとんどもrmailコマンドとして再定義されています. メッセージのテキストを編集したいときには, rmailコマンドeを使う必要があります.

e

カレントメッセージを通常のテキストとして編集する.

ermail-edit-current-message)コマンドは, rmailモードからrmail編集(rmail-edit)モードに移行します. このモードは, テキスト(text)モードとほとんど同じ別のメジャーモードです. モード行にこの変化が表示されます.

rmail編集(rmail-edit)モードでは, 文字は通常どおり挿入でき, rmailコマンドは使えません. メッセージを編集し終えてrmailへ戻るには, C-c C-cと打ちます. するとrmailモードに戻ります. あるいは, 行った編集をすべて取り消してrmailモードに戻るには, C-c C-]と打ちます.

rmail編集(rmail-edit)モードに入るとき, フックtext-mode-hookが実行されます. それからフックrmail-edit-mode-hook が実行されます (see section フック). メッセージには属性‘edited’ が付けられます. さらに, メッセージのヘッダ全体が表示されるので, メッセージの本文と同様にヘッダも編集できます. ヘッダに対する変更も保存されます.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

25.15 ダイジェストメッセージ

ダイジェストメッセージ(digest message)は, 数個のメッセージをまとめて運ぶためのメッセージです. ダイジェストは管理人のいるメイリングリスト上で使われます. 1日単位などの一定期間内にリスト宛に受け取ったすべてのメッセージを 1つのダイジェストにまとめて加入者に送ります. 合計のサイズが同じであったとしても, ダイジェストにして送るほうが 個々にメッセージを送るよりコンピュータの使用時間がずっと少なくてすみます. というのは, メイル送信に必要なメッセージあたりのネットワーク上の オーバーヘッドがとても大きいからです.

ダイジェストメッセージを受け取ったならば, もっとも簡単な読み方は, それをアンダイジェスト(undigestify)して 個々のメッセージに戻すことです. そうすれば好きなように, 個々のメッセージを読んだり削除したりできます.

アンダイジェストするには, ダイジェストメッセージを選び, コマンドM-x undigestify-rmail-messageを打ちます. これは, (ダイジェストメッセージ内の)サブメッセージを別々の rmailメッセージとして取り出し, ダイジェストのあとに それらのメッセージを挿入します. ダイジェストメッセージ自体は削除されます.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

25.16 rmailファイルからinbox形式への変換

コマンド M-x unrmailは, rmail形式のファイルを (システムのメイルボックス形式としても知られる)inbox形式に変換します. こうすると, そのファイルを別のメイル編集ツールでも使えるようになります. 2つの引数, rmailファイル名と変換後のファイル名を指定する必要があります. M-x unrmailはrmailファイル自体には変更を加えません.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

25.17 rot13メッセージの読み方

特定の読者に不快を与える可能性があるメイリングリストのメッセージは, rot13と呼ばれる単純な方法で暗号化してある場合があります. この名前は, アルファベットを13文字分巡回させることに由来します. これは機密保持のためではなく, そのような機能もありません. 不快に感じるかもしれない読者が メッセージの本当の本文を見ないようにするために使います.

rot13暗号を使っているバッファを見るには, コマンドM-x rot13-other-windowを使います. テキストを表示するときに暗号を解いて 別のウィンドウにカレントバッファを表示します.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

25.18 movemailとPOP

新着メイルを取得するとき, rmailはまずinboxファイルからrmailファイルに 新着メイルをコピーします. それから, rmailファイルを保存します. そして, inboxファイルの内容を消します. こうすると, システムがクラッシュするとinboxとrmailファイルに メイルを重複して持つことになりますが, メイルを紛失することはありえません. 変数rmail-preserve-inboxnil以外ならば, rmailは, inboxファイルからrmailファイルに新着メイルをコピーしてから inboxファイルの内容を消しません. たとえば, 旅行中は携帯コンピュータでPOPを介してメイルを調べ, メイルをサーバーに残しておいてあとでワークステーションに保存するように するには, このような設定をします.

場合によっては, rmailは間接的にinboxファイルから新着メイルをコピーします. まず, movemailプログラムを実行して, inboxから‘~/.newmail-inboxname’という中間ファイルに メイルを移動します. それから, rmailは中間ファイルから新着メイルを併合して rmailファイルを保存してから中間ファイルを削除します. これを実行中の都合が悪いときにクラッシュすると中間ファイルが残ってしまい, rmailがつぎにinboxから新着メイルを 取得するときにまたそのファイルを使ってしまいます.

rmailが‘~/.newmail-inboxname’のデータを独自形式(Babyl形式) に変換できないと, 同じデータでトラブルが再発しないように ファイル名を‘~/RMAILOSE.n’ (nは名前が一意になるような整数)に変えます. このファイルを調べて, rmailが解釈できなかったメッセージ (たぶん, コントロール下線の文字, 8進コード037を使ったメッセージかもしれない) を探してそれを削除します. そうしてから, 1 gコマンドを使って修正したファイルから 新着メイルを取り込みます.

inboxファイルにデータを保存するかわりに, POPと呼ばれる方法を用いてユーザーのinboxのデータを参照する 場合もあります. movemailをコンパイルするときにマクロMAIL_USE_POPを定義して コンパイルすればmovemailはPOPを使って動きます. (Emacsをインストールするとき, ‘--with-pop’を指定してconfigureを実行すれば, このようにできる. ) movemailはPOP3でしか動かず, POPの古いバージョンでは使えません.

movemailを適切にコンパイルしてインストールしたとすると, rmailファイルのinboxリストで, ‘po:username’の形の『ファイル名』でPOPのinboxを指定できます. movemailは, そのような名前に対しては, POPサーバーに対する接続を開きます. MAILHOST環境変数で, どのマシンでサーバーを探すかを指定します.

POP経由でメイルを参照するにはパスワードが必要です. 変数rmail-pop-passwordnil以外のときは, これはPOPに対してを使うパスワードを指定します. あるいは, 変数rmail-pop-password-requirednil以外ならば, rmailはユーザーにパスワードを尋ねます.

movemailにコマンド行オプションを追加する必要があるときには, 変数rmail-movemail-flagsに指定したいオプションのリストを設定します. inboxの内容を保存するオプション‘-p’を指定するために この変数を使わないでください. かわりにrmail-preserve-inboxを使ってください.

読者のサイトでインストールしたmovemailプログラムは, Kerberos認証を使うかもしれません. その場合, rmail-pop-passwordrmail-pop-password-requiredが設定されて いなければ, POPでメイルを取得するときにデフォルトで Kerberos認証を使います.

POPサーバーによってはメッセージを逆順序に保存します. そのようなサーバーで受信順にメイルを読むには, rmail-movemail-flagsにフラグ‘-r’を追加して, ダウンロードしたメッセージを逆順にするように movemailに指示します.


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by 新堂 安孝 on September 22, 2009 using texi2html 1.82.