「ゴミ箱」機能
*******

MH-JP には新機能として、削除したメールをためる専用のフォルダを用意しました。Windows95 などでも見かける「ゴミ箱」機能です。

メールの削除は MH では rmm コマンドで行ないます。が、このコマンドを実行してもメールが本当に消えるわけではなく、例えば、~/Mail/inbox/50 が ~ /Mail/inbox/,50 とか ~/Mail/inbox/#50 などの名前に変更されるだけです。これらの ',' や '#' で始まってるファイルは MH からは見えなくなってますが、依然としてディスクの領域は占めたままです。

これらの「MH で削除された」メールを本当にディスクから消去する機能は MH にはありません。これらを本当に消去し、ディスク領域を解放するには unix の rm コマンドなどを使います。また、本当に消す前であれば、unix のコマンドを使って元のファイル名に変更することで「MH で削除された」メールを復活出来るようになってます。

元来 MH は削除(というかディスク領域の解放)に関しては積極的な関与をしてこなかったのですが、「ゴミ箱」機能を使うことで MH 上からメールの本当の削除 (ディスク領域の解放)を行なうことができるようになります。

なお、この機能はデフォルトでは OFF に設定されています(従来と完全互換)。

実際の動作
=====

ゴミ箱機能を有効にすると以下のように動作します。

  * 通常のフォルダーのメールを rmm するとゴミ箱フォルダに refileされる

  * ゴミ箱フォルダのメールを rmm すると本当に消す。

  * メールの復活はゴミ箱フォルダから refile することで行なう

要するに、ゴミ箱フォルダとは削除したメールが集められるフォルダです。このフォルダのメールを削除すると本当に消えてしまうという点を除けば、ゴミ箱フォルダは普通のフォルダと同じです。ですから、例えば、ゴミ箱フォルダに入っているメールの一覧は「ゴミ箱フォルダで scan する」ことで得られます。

設定方法
====

ゴミ箱機能はデフォルトでは off になっています(バックワードコンパチ)。この機能を使うには ~/.mh_profile にて Trash-Folder: という属性の指定を行ないます。

MH にはフォルダー名が + で始まってる場合は ~/Mail/ からのパスで、@ で始まってる場合は、カレントフォルダーからの相対パスになるという仕様があります。この規則は、ゴミ箱フォルダにも適用することができます。

ゴミ箱を1つだけ作る場合
------------

書式は

             Trash-Folder: +ゴミ箱フォルダ名

です。例えばゴミ箱フォルダを trash という名前にする時は

             Trash-Folder: +trash

と書きます。XXXX の直下に一つだけゴミ箱フォルダができ、そこに全ての削除メールが入ります。

各フォルダにゴミ箱を作る場合
--------------

フォルダ毎にゴミ箱を作りたい場合は以下のように書きます。

     	Trash-Folder: @trash

こう設定した場合は、例えば +inbox のメールを消すと +inbox/trash に移動し、され、+project のメールを消すと +project/trash に移動します。

ゴミ箱機能を使わないとき
============

以下の2つのケースが考えられます。

削除メールをディスク上に残す場合
----------------

この場合は Trash-Folder: の指定をしないようにすればいいです。そうすれば、今までと同じ動作をします。

完全に消してしまう場合
-----------

rmmproc: を指定します。rmmproc: は Trash-Folder: よりも優先度が高いので、 rmmproc: を指定した場合、Trash-Folder: は無視されます。

指定例

     	rmmproc: /bin/rm

この場合、rmm コマンドで /bin/rm が実行されるので(名前が変わるだけだったり、ゴミ箱に移動するだけではなくて)完全に、ディスク上から消え去ります。

MH-e での動作
=========

ゴミ箱フォルダは MH-e でも(もちろん!)有効です。ゴミ箱フォルダがない場合は、作るかどうかを聞いて来ますが、MH-e で使う場合は質問をせずにいきなり作成します。

その他細かいこと
========

ゴミ箱フォルダの名前
----------

ゴミ箱を1つだけ作ると指定した場合、同じ名前のフォルダが別の場所にあってもそれはゴミ箱フォルダとしては機能しません。例えばゴミ箱フォルダの名前が +trash の場合、+foo/trash はゴミ箱フォルダとしては働きません。

各フォルダに対してゴミ箱フォルダを作成すると指定した場合、ゴミ箱フォルダとして機能するのはそれがディレクトリの末尾である場合のみです。例えばゴミ箱フォルダの名前が @trash の場合、+foo/trash はゴミ箱フォルダとしては働きますが、+foo/trash/bar は通常のフォルダとみなされます。(つまりここで refile した場合、+foo/trash/bar/trash に移動する)。

上記の動作を見てもわかるように、ゴミ箱フォルダの名前を一度決めたらそれを変更しないように、またゴミ箱フォルダと同じ名前のフォルダを作らないようにした方が無難です(^_^;。

ゴミ箱フォルダに移動するもの・しないもの
--------------------

ゴミ箱フォルダに入るのは「ユーザーが消せ」と指定したものだけです。つまり、 rmm コマンドを発行したものだけしかゴミ箱フォルダには入りません。# つきのメールが残る状況としては他にも

 1. send した時、draft を #draft などにする。Draft-Folder: を指定してる場合は ~/Mail/drafts/1 が ~/Mail/drafts/#1 になったりする。

 2. anno した時、ヘッダーを追加する前のメッセージを #50 などに変えて保存する。

などがありますが、これらに関しては今までと同じように # つきで残ります。 (ゴミ箱フォルダを作成しても、そこには移動しない)。

ゴミ箱フォルダ @.
----------

ゴミ箱フォルダに以下の指定を行なうと、本来のゴミ箱フォルダを作らずにいきなりメールが消えるようになります。

             Trash-Folder: @.

@. を一応説明しておくと、要するに「カレントフォルダがゴミ箱フォルダ」であり、「ゴミ箱フォルダにあるメールは rmm すると即座に消す」というところから「いきなり消す」という動作になります。これは @ 指定の副産物でいささかトリッキーな方法です。