メールの自動削除
IMAPサーバを運用していると、どんどん溜まっていくメールが問題となってくる。
Cyrus IMAPにおいて、quotaでメール制限をすることができるが、できれば制限はしたくない。
読んでいないメールを自動で削除することも可能みたいだが、まずは、ゴミ箱を期限付きで削除する運用を考えたい。
ipurgeは共有フォルダしか通常は削除できませんが、"-f"オプションをつけると、ユーザ領域のメールボックスも対象に出来ます。
コマンドラインで、全ユーザのゴミ箱で7日以上経過したメールを削除する場合は、
> sudo -u cyrus /usr/local/cyrus/bin/ipurge -d 7 -f -X 'user.*.Trash'
メールアカウントに"."を使っている場合で、imapd.confにて、
unixhierarchysep: yes
を設定した場合は、
> sudo -u cyrus /usr/local/cyrus/bin/ipurge -d 7 -f -X 'user/*/Trash'
これを実行すると以下のようなメッセージが表示される。
Working on user/foo/Trash... total messages 8 total bytes 18230 Deleted messages 2 Deleted bytes 11284 Remaining messages 6 Remaining bytes 6946
cyrus.confのEVENTS{}に対して、設定可能であるが、
'user/*/Trash'と書いても動かない。
crontabに設定して運用している。
もうちょっと調べてみよう...
ちなみに、ユーザ内のメールで30日以上経過したメールを毎日0時にまるごと削除する場合は、
EVENTS { cleanup cmd="ipurge -d 30 -f -X" at=0000 }
とすればよい。
可能であれば、受信箱(INBOX)を削除指定して、削除されたくなければ、フォルダーに振り分けてもらう運用にしたいのだが、どう設定すればよいのかいろいろ考えたが難しいぞ。