[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
9.1 メッセージの自動削除 | ||
9.5 メッセージのアーカイブ |
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
Expire とは、指定した期間を過ぎた古いメッセージを削除する機能です。
しかし、wl-expire
ではメッセージを単純に消すだけではなく、指定したアーカ
イブフォルダに移動することも出来ます。
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
wl-expire-alist
を設定して、フォルダモードで e、もしくはサマ
リモードで M-e を押します。
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
wl-expire-alist
の設定次にwl-expire-alist
の設定例を示します。このwl-expire-alist
の書き方一つで expire の実施方法が大きく変わりますので、慎重に設定してく
ださい。最初のうちはwl-expire-use-log
を t
にセットしておく
と良いでしょう。
(setq wl-expire-alist
'(("^\\+trash$" (date 14) remove)
;; 削除する。
("^\\+tmp$" (date 7) trash)
;; |
各リストの要素は
(フォルダの正規表現 削除メッセージの指定 削除先) |
となっています。リストの先頭からフォルダの正規表現にマッチするかど
うかを調べます。もし、フォルダの正規表現にマッチしないフォルダで、
expire を実行しても何もしません。また、2,3 番目の要素のいずれかが
nil
であれば expire しません。
削除メッセージの指定には次のものを指定します。
(number n1 [n2])
フォルダにあるメッセージ数に応じて削除を行います。
n1 は削除後のメッセージ数で、 例えば値が 500 なら最新の 500 個を残して残りを削除することになります。
n2 は expire を実行するためのメッセージの総数で、省略すると n1 + 1 になります。例えば値が 510 ならメッセージが 510 以上のとき に expire を実行することになります。これは自動実行で expire を行うように した場合、頻繁にメールが来るフォルダでは毎回 expire を実行するようになる ので、メールを読むまでに時間がかかり、煩わしくなってしまいます。そこで n2 を n1 よりも大きめの値に設定することで、一定数溜まるまでは expire を実行しないようにできます。
また、wl-summary-expire-reserve-marks
で指定したメッセージ(重要マー
クや新規・未読マークの付いたメッセージ)は削除しないようになっていますが、
もし、wl-expire-number-with-reserve-marks
が non-nil の場合、この
ようなメッセージも含めて 500 個になるように expire します。nil
の場合は上記メッセージ以外で 500 になるように expire します。
(date d1)
メッセージの日付により削除を行います。
d1 は現在より何日前のメッセージを削除するどうかであり、 例えば値が 7 なら 7日より前のメッセージを削除します。 なお、この日付とはメッセージの ‘Date:’ フィールドの日付であり、 メッセージがフォルダに入った日付ではないことに注意してください。
もし、メッセージに ‘Date:’ フィールドがなかったり、‘Date:’ フィー ルドが不正な値なら、expire されませんので手で削除するなりして下さい。
削除先には次のものを指定します。
remove
即メッセージを削除します。
hide
メッセージをサマリから見えなくします(削除はされません)。
trash
メッセージを wl-trash-folder
に移動します。
メッセージをstringで指定したフォルダに移動します。
アーカイブフォルダを指定すると便利ですが、‘$’ マークの付いた重要メッ セージなどは移動されないので、下記の標準関数を使う方がより良いです。
指定の関数を呼び出します。
指定した関数には次の3つの引数、フォルダ名、削除するメッセージのリスト、
そしてサマリの msgdb 情報が渡されます。また、関数名の後に関数独自の引数も
指定できます。なお、この関数にはwl-summary-expire-reserve-marks
で
指定したメッセージも含んだリストが渡されますので、独自に関数を作る場合は
注意してください。
ここで指定できる関数には、標準で次の4つが用意されています。そのうち3つは指 定した方法でアーカイブフォルダにメッセージを移動するもので、古いメッセー ジをフォルダから削除しながら別ファイルに圧縮して保存しておくことができま す。残り1つはメッセージを MH フォルダに振り分けるものです。
wl-expire-archive-number1
削除対象のメッセージ番号に対するアーカイブフォルダにリファイルします。例
えば、102 番であるなら ‘wl-00100.zip’、390 番であるなら
‘wl-00300.zip’、などのようにです。なお、
wl-expire-archive-files
を 200 にすると、‘wl-00000.zip’,
‘wl-00200.zip’, ‘wl-00400.zip’, … にリファイルしていきま
す。
リファイル先のアーカイブフォルダは削除元のフォルダ名に基づいて次のように
決定されます。(このとき、アーカイブフォルダは
elmo-archive-treat-file
が non-nil の場合として扱われます)
‘ArchiveDir/foldername-xxxxx.zip’
例えば ‘+ml/wl’ は ‘$ml/wl;zip’ (‘~/Mail/ml/wl-00100.zip’)となります。
‘ArchiveDir/foldertype/foldername-xxxxx.zip’
例えば、‘%#mh/ml/wl’ は ‘$imap4/#mh/ml/wl;zip’ (‘~/Mail/imap4/#mh/ml/wl-00100.zip’)となります。
すなわち、localdir の場合は種別がパス名に含まれませんが、それ以外は種別
がパス名に含まれるのです。
また、wl-expire-archive-folder-prefix
により、
アーカイブフォルダに付ける prefix を制御できます。
wl-expire-archive-folder-prefix
の説明を良く見ておいてください。
wl-expire-archive-number2
指定した個数ごとにアーカイブフォルダにリファイルします。
‘wl-expire-archive-number1’
と異なる点はメッセージ番号に関係なくアーカイブフォルダが指定数に達するまで
そのフォルダにリファイルする、という点です。
なお、リファイル先のアーカイブフォルダは wl-expire-archive-number1
と同じように決定されます。
wl-expire-archive-date
メッセージの日付(年月)ごとにアーカイブフォルダにリファイルします。
例えば、1998年12月のメッセージは $folder-199812;zip
にリファイル
されます。なお、日付の部分以外のアーカイブフォルダ名は
wl-expire-archive-number1
と同じように決定されます。
また、上記の3つの標準関数では wl-expire-alist
での第1引数に
non-nil を指定すると、フォルダのメッセージ番号をそのまま保存できます。例
えば、次のように関数名の後に続けて指定します。
("^\\+ml/wl$" (number 300 310) wl-expire-archive-number1 t) |
引数を指定しない場合は、各アーカイブフォルダごとに 1 から順に番号を与え て保存されます。
wl-expire-localdir-date
メッセージの日付(年月)ごとに、例えば、‘+ml/wl/1999_11/’, ‘+ml/wl/1999_12/’ といった MH フォルダにリファイルします。
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
削除先に remove
や trash
、フォルダ名、標準関数のいずれを指
定した場合でも、wl-summary-expire-reserve-marks
で指定したマークの
メッセージ(以下、reserveメッセージと呼びます)は残すようになってい
ます。
この変数にはデフォルトで、重要マーク、新規マーク、未読マークが設定されて いるので、これらのマークのついたメッセージは削除されないことになります。 ただし、この変数には一時的マークは指定できないため(すなわち削除されるた め)、expire を実行する前に一時的マークは処理しておいてください。
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
サマリに移動したときに自動的に expire を実行するには次のように設定します。 ただし、この場合は確認せずに自動実行するため、フォルダの正規表現などに誤 りがないかどうかを十分確認してから設定して下さい。
(add-hook 'wl-summary-prepared-pre-hook 'wl-summary-expire) |
また、フォルダモードで各フォルダごとに expire を実行できるのはもちろん、
グループ単位の実行も可能です。従って、‘Desktop’ グループを指定すれ
ばwl-expire-alist
にマッチする全てのフォルダで expire を実行します。
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
上記の標準関数 wl-expire-archive-number1
などで作成したアーカイブ
フォルダを扱う場合は、変数 elmo-archive-treat-file
を non-nil に設
定しておく必要があります。
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
remove
を指定する場合は、まず trash
にして期待通りにメール
が wl-trash-folder
に移動されることを確認してから remove
に変えるとよいでしょう。いきなり remove
を指定するのは危険です。
また、wl-expire-archive-number1
などの関数を利用する場合、まずは使
用するアーカイバタイプ(zip
や lha
)などのフォルダを試しに作
って、正しく追加できるかどうかを確認してください。たとえ、
wl-expire-alist
や elmo-archive
の設定が正しくても、アーカ
イブプログラムが正しく動かなければどこにも保存されずにメッセージが消えて
しまうかも知れません。
アーカイブフォルダの動作が確認でき、実際に expire を実行するようになれば、
ログを活用してください。wl-expire-use-log
を t
にすると、
‘~/.elmo/expired-log’には以下のような記録が残ります。
delete +ml/wl (593 594 595 596 597 598 599) move +ml/wl -> $ml/wl-00600;tgz;wl (600 601 602) |
最初の項目は動作を示すもので、‘delete’, ‘copy’, ‘move’ が あります。次が expire を実行したフォルダ名で、‘copy’ と ‘move’ の場合は‘->’に続けてコピーもしくは移動先のフォルダ名が記録されます。 最後の項目は、実際に削除や移動されたメッセージ番号のリストです (‘copy’ や ‘move’ の場合、移動後ではなく移動前のメッセージ番号 です)。
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
標準で用意されている3つの関数では、reserve メッセージはアーカイブフォルダ
にコピーしますが、元のフォルダからは削除しないようになっています。なお、
重要マークなどは常に残るため、何度もコピーされることがないように
‘~/.elmo/expired-alist’ に記録するようになっています。ただしこれは
reserve メッセージが refile 対象になったときの話です。
wl-summary-archive
などでコピーされる場合は記録を残しません。
ログ機能を有効にしていた場合は、リファイル時には通常 ‘move’ が記 録されますが、reserve メッセージが含まれていると、‘copy’ と ‘delete’ に分けて記録されます。これは reserve メッセージを含めたメッ セージをコピーした後、reserve メッセージを除いたメッセージを削除する、 という処理を行っているためです。
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
wl-expire-alist
初期設定は nil
。
expire を行うフォルダと expire 方法の指定を行います。詳しくは上記の
wl-expire-alist
の設定をご覧下さい。
wl-summary-expire-reserve-marks
初期設定は以下のリスト。
(list wl-summary-flag-mark wl-summary-new-uncached-mark wl-summary-new-cached-mark wl-summary-unread-uncached-mark wl-summary-unread-cached-mark) |
expire を行っても、フォルダには残しておくメッセージのマークを指定します。 マークには永続的マークのみ指定できます。 一時的マークは指定できません。
デフォルトのようにリストで指定するとそのマークのメッセージを残せる他、以 下の指定もできます。
all
永続マークの付いたすべてのメッセージを残します。
つまり、デフォルトで設定されているマーク以外に
wl-summary-read-uncached-mark
が含まれます。
none
どんなマークの付いたメッセージであっても、通常の既読メッセージと同じ扱い をします。すなわち、‘$’ マークの付いた重要メッセージであっても削除 されます。
wl-expire-archive-files
初期設定は 100。 ひとつのアーカイブフォルダに保持するメッセージ数を指定します。
wl-expire-number-with-reserve-marks
初期設定は nil
。
Non-nil にすると、
削除メッセージの指定で number
を指定したとき、
残しておくメッセージ数に wl-summary-expire-reserve-marks
で設定さ
れたメッセージを含めます。
wl-expire-archive-get-folder-function
初期設定は wl-expire-archive-get-folder
。
削除先の標準関数でアーカイブフォルダ名を取得する関数を指定します。 次の3つの変数により簡易なフォルダ名の変更できますが、もっと複雑な指定を したい場合は新たに関数を作ってこの変数に設定します。
関数wl-expire-archive-get-folder
のカスタマイズ変数には次の
ものがあります。
wl-expire-archive-folder-name-fmt
wl-expire-archive-folder-type
wl-expire-archive-folder-prefix
wl-expire-archive-folder-name-fmt
初期設定は ‘%s-%%05d;%s’。
wl-expire-archive-number1
およびwl-expire-archive-number2
で
使用されるアーカイブのフォルダの format
形式の文字列を指定します。
なお、2度 format
で指定するため、
番号の部分は必ず ‘%%d’ にしなくてはなりません。
もし、変更する場合は wl-expire-archive-folder-num-regexp
も合わせるようにしてください。
wl-expire-archive-date-folder-name-fmt
初期設定は ‘%s-%%04d%%02d;%s’。wl-expire-archive-date
で使用
されるアーカイブのフォルダの format
形式の文字列を指定します。な
お、2度 format
で指定するため、番号の部分は必ず ‘%%d’ にしな
くてはなりません。また、メッセージの年と月を与えるため、‘%%d’ は2つ
必要です。
もし、変更する場合は wl-expire-archive-date-folder-num-regexp
も合わせるようにしてください。
wl-expire-archive-folder-type
初期設定は zip
。
アーカイブフォルダのアーカイバタイプを指定します。
wl-expire-archive-folder-prefix
初期設定は nil
。
アーカイブフォルダに付ける prefix を指定します。
ただし、アーカイブフォルダに prefix (ディレクトリ構造)を付ける仕様は
おまけ機能ですので、取り扱いは慎重に行って下さい。
最悪の場合,アーカイブファイルを壊す恐れがあります。
nil
prefix は付きません。
short
例えば、‘+ml/wl’ では prefix ‘wl’ が付き、 ‘$ml/wl-00000;zip;wl’ となります。
t
例えば、‘+ml/wl’ では prefix ‘ml/wl’ が付き、
‘$ml/wl-00000;zip;ml/wl’ となります。
wl-expire-archive-folder-num-regexp
初期設定は ‘-\\([-0-9]+\\);’。
elmo-list-folders
による複数のアーカイブフォルダ名から
番号を取得するための正規表現を指定します。
wl-expire-archive-folder-name-fmt
に対応して設定してください。
wl-expire-archive-date-folder-num-regexp
初期設定は ‘-\\([-0-9]+\\);’。
elmo-list-folders
による複数のアーカイブフォルダ名から
番号を取得するための正規表現を指定します。
wl-expire-archive-date-folder-name-fmt
に対応して設定してください。
wl-expire-delete-oldmsg-confirm
初期設定は t
。
Non-nil の場合、既に存在しているアーカイブフォルダの最大メッセージ番号よりも
古いメッセージがあった場合に確認してから削除します。
nil
の場合は確認せずに削除します。
なお、標準関数の引数に non-nil を指定して番号を保持するようにした場合の み有効です。
wl-expire-use-log
初期設定は nil
。
Non-nil にすると、‘~/.elmo/expired-log’に expire の実行結果を記録します。
なお、ファイルに追加していく一方なので、適当に手で消す必要があります。
wl-expire-add-seen-list
初期設定は t
。
Non-nil の場合、expire によりメッセージをリファイルした場合、既読情報を
リファイル先のフォルダに伝えるようにします。
ただし、リファイル先のフォルダを Wanderlust 上から読まないと、
‘~/.elmo/’以下にある ‘seen’ ファイルが大きくなっていくので、
アーカイブフォルダなどに単に保存しておくだけなら
nil
に設定しておくと良いでしょう。nil
に設定しても、
リファイルしたアーカイブフォルダを読むときに新規メッセージ扱いされるだけで、
expire などの動作には影響はありません。
wl-expire-folder-update-msgdb
初期設定は t
。
t
の場合、フォルダモードで expire を実行するときに、
サマリ情報を update してから expire を実行する。
また、フォルダ名の正規表現のリストを指定した場合は、マッチしたフォルダの
みサマリ情報を update する。
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
M-x wl-summary-archive でフォルダ全体をアーカイブフォルダにコピーしま す。既にアーカイブフォルダがある場合、新規メッセージのみ追加します。
wl-expire-alist
と同じ様に、フォルダ名に応じてどのようにアーカイブ
するかを wl-archive-alist
で指定します。例えば以下のようになりま
す。
(setq wl-archive-alist '(("^\\+tmp$" wl-archive-date) ("^\\+outbox$" wl-archive-number2) (".*" wl-archive-number1))) |
各リストの要素は次のようになります。
(フォルダの正規表現 削除関数) |
このようにフォルダの正規表現の後には関数しか指定できません。 標準では次の3つの関数
wl-archive-number1
wl-archive-number2
wl-archive-date
が用意されてます。名前からお解りの通り、次の点を除いて Expire 用に用意されて いる物と同じ動作をします。
フォルダの全メッセージを番号ごとや日付ごとにまとめてアーカイブしたい場合 は、これらの関数を使用するとよいでしょう。 また、expire を行う前のバックアップや動作を確認するのにも有効です。 もっとも、アーカイブ後に expire でリファイルすると、リファイルせずに削除 するだけになります。
デフォルトではコピー先のアーカイブフォルダは
wl-expire-archive-get-folder-function
に従って自動的に決定されますが、
prefix argument を付けて C-u M-x wl-summary-archive で実行すると、
指定したフォルダにコピーすることができます。
しかし、単純に1つのアーカイブフォルダにコピーするだけなら、
wl-summary-copy-region
などで全メッセージをアーカイブフォルダにコ
ピーすることでも可能なため、おまけの機能でしかありません
(つまり、動作確認は不十分です)。
このアーカイブフォルダの決定方法は wl-summary-expire
と同じものを
用いているため、カスタマイズ変数の中で次に示すものが関係してきます。
wl-expire-archive-files
wl-expire-archive-get-folder-function
wl-expire-archive-folder-name-fmt
wl-expire-archive-folder-type
wl-expire-archive-folder-prefix
wl-expire-archive-folder-num-regexp
[ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
wl-archive-alist
初期設定は以下のリスト。
((".*" wl-archive-number1)) |
アーカイブフォルダにコピーする処理を行う関数を指定します。この関数には、 フォルダ名、フォルダ内にあるメッセージのリスト、サマリの msgdb 情報、の3つ の引数が渡されます。もちろんユーザが独自に作って指定することができます。
[ << ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
この文書はYasutaka SHINDOHによって2011年5月月11日にtexi2html 1.82を用いて生成されました。