Linux Install Memo

サーバー管理者によるLinux関連ソフトのインストールメモ

Home » □溜め込みメールの掃除ツール(IMAP版)

□溜め込みメールの掃除ツール(IMAP版)

IMAP版の場合には、Maildir の中を全てスキャンすればいいので、POP3
の時よりも少しは簡単かも!?

最初は Email::Folder や Email::Delete::Maildir モジュールを使おう
かと思ったけど、今ひとつ使い勝手が悪いので、これらのモジュールを
参考にしつつ

・指定したフォルダからファイル一覧を取得
・メールファイルとして解析して、メール送信日時を取得
・送信日が古く、かつメールファイル生成日も古いなら削除

という処理にする。

> #!/usr/bin/perl -w
>
> use File::Find::Rule;
> use Email::Simple;
> use HTTP::Date;
>
> # 検査対象日時を算出(90日以上前)
> $old_day = 90;
> $oldlimit = time – ($old_day * 24 * 60 * 60); # day * hour * min * sec
>
> print “———-\n”;
>
> # メールファイルの一覧を取得($oldlimit より前に生成されたメールファイルが対象)
> my @mail_files = File::Find::Rule->file()
> ->mtime(“< $oldlimit") > ->in(“/home/hogehoge/Maildir”);
>
> # 対象メールを検査
> foreach $file (@mail_files)
> {
> # メールファイルを開く
> open(FILE, $file);
>
> # メールファイルを構造体に変換
> my $mail = Email::Simple->new(do { local $/; $_ = ; });
>
> # メールの送信日時を取得&変換
> $timestamp = str2time($message->header(“Date”));
>
> # メールの送信日時が削除対象日時より前なら
> if ($timestamp < $oldlimit) > {
> # 削除する
> unlink $file;
> }
>
> }
>
> exit 0;

たぶんIMAP版の方がPOP3版よりも断然処理速度が速いと思われる。

Name of author

Name: admin

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です