私は現在、Debianサーバー上のMaildirインストールの1つのフォルダーにある古い電子メールを削除する方法を見つけようとしています。基本的に私がやりたいのは、毎日cronジョブを実行して、Maildir内の特定のフォルダーで古い電子メールをチェックし、設定された日数より古い場合はそれらを削除することです。
Maildirからの電子メールを日付でフィルタリングする簡単な方法はありますか、それともすべての電子メールをテキストとして読み取り、タイムスタンプを探し、変換し、記載されている日数を差し引いて、現在の日数と比較する必要がありますか?日付?
すでにもっと良いホイールが出ているのなら、ホイールを発明したくないので、誰かが私を助けてくれたら嬉しいです。
ありがとう!
注:私はPostfix2.9.6とDovecot2.1.7でDebian7.8を使用しています
あなたは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