我目前正在尝试弄清楚如何删除 Debian 服务器上 Maildir 安装的一个文件夹中的旧电子邮件。基本上,我想要做的是每天左右运行一个 cron 作业,检查 Maildir 中的特定文件夹中是否有旧电子邮件,如果它们超过设定的天数,则将其删除。
有没有一种简单的方法可以按日期从 Maildir 中过滤电子邮件,或者我是否必须将每封电子邮件作为文本读取,查找时间戳,进行转换,减去提到的天数,然后将其与当前日期进行比较?
如果已经有更好的轮子,我就不想再发明轮子了,所以如果有人能帮助我做到这一点,我会很高兴。
谢谢!
笔记:我正在使用 Debian 7.8 和 Postfix 2.9.6 以及 Dovecot 2.1.7
答案1
因为您有 dovecot,您可以使用 doveadm(1) 来实现这一点。
例如删除用户在垃圾文件夹中保存的 30 天前的邮件:
doveadm expunge mailbox Trash savedbefore 30d -u <user>
您可以对所有用户使用 -A 标志,如果您想首先检查匹配的邮件,请使用搜索/获取命令 - 请参阅 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