メールを色々な場所から読む場合,サーバに残す設定にすると便利。しかし,サーバには容量制限があるので,古いメールは順次消していきたい。そういうアプリケーションがないかと探してみたが,見当たらない。自分で作るしかなさそうだ。
サーバに残っているメールを,古いものからバックアップして,バックアップしたものから順次削除していきたい。そういうアプリケーションがないかと探してみると,archivemail というのがあった。Python で書かれており,十分な機能を備えている。古いメールを1か月単位でアーカイブして圧縮してくれる。しかし,残念ながら IMAP4 のみの対応となっている。欲しいのは POP3 と POP over SSL に対応しているものなのだ。
調べてみると,同じことを考えている人を見つけた (six olq: 指定日以前のメールを削除)。これじゃ。わしが欲しいのはこれなんじゃ。あめゆじゅとてちてけんじゃ。
要求仕様もほぼ同じで,次のような感じにしたい。
メールを1度読んだかどうかに関わらずアーカイブして削除したいので,Status は見ないことにする。
言語に Perl を採用するとすれば,使えそうなモジュールは2つある。Net::POP3 と Mail::POP3Client である。プロトコルの対応は以下の通り。
モジュール名 | バージョン | 対応プロトコル |
Net::POP3 | 1.19 | POP3, APOP |
Mail::POP3Client | 2.17 | POP3, APOP, POP over SSL |
POP over SSL に対応しているのは POP3Client なので,こちらに決定。ヘッダのフォーマットは RFC 2822 (rfc2822) - Internet Message Format にある。パースには Mail::MboxParser::Mail が使えそう。Perl モジュールを使えば,比較的簡単に実装できるかも。最終的には archivemail と同等の仕様にしたいが,archivemail はオプションあり過ぎなのでヘコタレそうな気配も若干したりして。
2005年12月11日追記:
chewmail という Perl スクリプトを見つけました。これが使えれば全て解決?
2006年1月22日追記:
chewmail に必要な Perl モジュールをインストールしました(nlog(n): chewmail インストールの準備)。
2006年10月31日追記:
chewmail のインストール方法と使い方についてまとめました(nlog(n): chewmail の使い方)。
Master Archive Index
Total Entry Count: 1957