I'm using Dovecot (+postfix) to host some personal imap accounts on a private server (Maildir format). I've got one account that receives mostly automated mails, and I want to be able to purge messages beyond a given date (say 30 days).
I know that since maildir uses flat files, I can literally just delete messages doing something similar to the following with bash:
for i in $(find /var/spool/vmail/host1/user/cur/ -mtime +30); do rm $i done
I dislike this approach for a few reasons. First, and most plainly, it seems crude. When running complex server software, its rarely a good idea in the field of systems administration to be bluntly deleting files out from under the running applications. It feels wrong. How does this affect dovecot's monitoring of the files and indexing? What if the files happen to be open in an email client? Etc.
Emotions aside, I also very much dislike running an automated 'rm' that has the power to wipe out a lot of my email if something goes pearshaped with the script.
I can think of several possible solutions that don't require subversive operations on the maildirs, but I've never used them and therefore don't know if they're actually feasible:
- Use a tool designed to manipulate maildirs. Something akin to postfix's postqueue and postsuper tools come to mind, but I don't know if such an app exists.
- Use a setting within dovecot that expires old maildir data. As I understand it this will be available in 1.1 (yay!); unfortunately that's not an option for me until 1.1 is available as stable in my server os.
- Use a scriptable mua that has the capability to check mail under said account and automatically delete based on age. I know very little of tools in this area, so again I don't know if such an application exists.
Any pointers you might have would be much appreciated.
Thanks, Matt