今日、複数のメールアカウントを使っている人間も多いと思うが、自分で管理すべきメールボックスに、2度と開封することのない多量のメッセージを溜め込んだままにしてはいないだろうか。特に管理者アカウント宛に届けられるのは、自動送信されるイベント類の定期通知メールが多く、こうしたものは目を通すことがあるとしても、せいぜい1度だけ開いて終わるのが関の山のはずだ。こうした不要メッセージの山を手軽に処分したいと思うなら、本稿で紹介する archivemail というツールの使用を検討すべきだろう。ここで行われるアーカイブ化処理は、ディスクスペースの空き容量を増やすと同時に、メールクライアントのパフォーマンス向上にも貢献するはずだ。
archivemailの入手法に関しては、たいていのディストリビューションのソフトウェアリポジトリに収録されているが、ソースのtarボールを入手して自力でインストールすることもできる。なお同プロジェクトのWebサイトにアクセスしてみると、1年前にリリースされたarchivemail-0.7.2が最新バージョンとされているが、これは開発活動の中止を意味している訳ではなく、開発サイドの説明によると現在は次バージョンのリリースに向けて、新機能の追加、バグの修正、コードのスリム化といった作業が進行中とのことだ。
archivemailの場合、IMAP、mbox、MH、Maildirフォーマットのメールボックスをサポートしている。そしてarchivemailで処理するメールボックスについては、その正確なパスを指定しなくてはならない。例えばメールクライアントとしてEvolutionを使用しているなら~/.evolution/mail/local/Inbox.sbd/が、同じくThunderbirdの場合は~/.mozilla-thunderbirdにあるディレクトリが、デフォルト設定下のメールボックス用に使われているはずだ。ただし実際のメールボックスの格納位置は、メールクライアントの種類だけでなく各自のユーザ設定でも異なってくるものだが、デフォルト設定として各ユーザのhomeディレクトリの下層に置かれるケースが多いことは憶えておいても損はしないだろう。いずれにせよ、archivemailを使用する際にはメールボックスの正確なフルパス指定が必要となるが、これを省略してメールボックスの名前だけを入力することも可能で、その場合はカレントディレクトリが適用されることになる。
メールボックスを指定したarchivemailをデフォルト設定下で実行すると、180日以上経過したすべてのメッセージが自動的にアーカイブ化される。この経過日数は-dコマンドオプションにより変更でき、こうしたオプション類は「archivemail options mailbox 」という構文で指定すればいい。例えば「archivemail -d 40 trip」を実行すると、指定メールボックスのtrip中にて受信後40日以上経過したメッセージ群を圧縮したファイルがtrip_archive.gzという名称で作成される。そして、ここでアーカイブ化対象となったメッセージ群は、メールボックスから自動的に削除されるようになっているのだ。
同様に-Dオプションを用いると、先のような経過日数ではなく、明示的な日付指定によるarchivemailの制御もできる。例えば先のtripメールボックスにて2008年7月4日(July 4, 2008)以前のメッセージ群をアーカイブ化したければarchivemail -D '4 Jul 2008' tripと指定すればいい。
こうした日付指定は、先のようなフォーマット以外にも'2008-07-04'や'4 July 2008'という表記が利用できる。その際の注意点としては、一重引用符で囲むことと、年の数字を4桁のフル表記にすることだ(archivemailは2桁の年表記は扱えない)。こうしたコマンドラインオプションの使い方に不慣れなうちは、-nというコマンドオプション指定でarchivemailを実行させてみればいいだろう。この-nオプションを付けた場合のarchivemailは、対象となるファイルを実際に処理する代わりに“当該オプションの指定下ではどのような処理が行われるか”という情報を表示してくれるのだ。以下の出力はこうしたドライランモードにて、10月20日(20 October)以前のメッセージを処理させるよう指定した結果である。
$ archivemail -D '20 Oct 2008' -n trip:
trip:
I would have archived 9 of 16 message(s) (1.2MB of 2.0MB) in 0.0 seconds
デフォルト設定下のarchivemailは圧縮ファイルをメールボックスと同じディレクトリに作成するが、作成先をユーザ指定するには-oオプションを使用すればよく、例えば「archivemail -d 90 -o ~/mail-archives/ trip」というコマンドは、90日以上経過したメッセージ群を~/mail-archives/ディレクトリにアーカイブ化する。ただし指定された圧縮先ディレクトリが存在しなかった場合、archivemailからはエラーが出されるので、こうしたディレクトリは事前に用意しておかなくてはならない。
