印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
Linux 古いメールをバックアップして削除したい

メールを色々な場所から読む場合,サーバに残す設定にすると便利。しかし,サーバには容量制限があるので,古いメールは順次消していきたい。そういうアプリケーションがないかと探してみたが,見当たらない。自分で作るしかなさそうだ。

■ ■ ■

サーバに残っているメールを,古いものからバックアップして,バックアップしたものから順次削除していきたい。そういうアプリケーションがないかと探してみると,archivemail というのがあった。Python で書かれており,十分な機能を備えている。古いメールを1か月単位でアーカイブして圧縮してくれる。しかし,残念ながら IMAP4 のみの対応となっている。欲しいのは POP3 と POP over SSL に対応しているものなのだ。

調べてみると,同じことを考えている人を見つけた (six olq: 指定日以前のメールを削除)。これじゃ。わしが欲しいのはこれなんじゃ。あめゆじゅとてちてけんじゃ。

要求仕様もほぼ同じで,次のような感じにしたい。

  • POP3, POP over SSL に対応するクライアント
  • 日付は Received: で判断
  • 指定日以前のメールをアーカイブできて,削除もできる
  • アーカイブは1か月毎にまとめて,ファイル名には年と月をつけることができる
  • cron で1日1回起動することを想定

メールを1度読んだかどうかに関わらずアーカイブして削除したいので,Status は見ないことにする。

言語に Perl を採用するとすれば,使えそうなモジュールは2つある。Net::POP3Mail::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 の使い方)。

Posted by n at 2005-10-25 01:29 | Edit | Comments (0) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?