web-dev-qa-db-ja.com

Maildirから古い電子メールを削除する

私は現在、Debianサーバー上のMaildirインストールの1つのフォルダーにある古い電子メールを削除する方法を見つけようとしています。基本的に私がやりたいのは、毎日cronジョブを実行して、Maildir内の特定のフォルダーで古い電子メールをチェックし、設定された日数より古い場合はそれらを削除することです。

Maildirからの電子メールを日付でフィルタリングする簡単な方法はありますか、それともすべての電子メールをテキストとして読み取り、タイムスタンプを探し、変換し、記載されている日数を差し引いて、現在の日数と比較する必要がありますか?日付?

すでにもっと良いホイールが出ているのなら、ホイールを発明したくないので、誰かが私を助けてくれたら嬉しいです。

ありがとう!

注:私はPostfix2.9.6とDovecot2.1.7でDebian7.8を使用しています

3
comfreak

あなたはdovecotを持っているので、doveadm(1)でそれを行うことができます。

たとえば、30日前にユーザーのごみ箱フォルダに保存されたメールを削除します。

doveadm expunge mailbox Trash savedbefore 30d -u <user>

すべてのユーザーに-Aフラグを使用できます。一致するメールを最初に確認する場合は、search/fetchコマンドを使用します-doveadm-search(1)を参照してください。

doveadm search mailbox Trash savedbefore 30d -u <user> |
   while read guid uid; do
     doveadm fetch -u <user> body mailbox-guid $guid uid $uid > msg.$uid
   done
7
nkms