从 Maildir 中删除旧电子邮件

从 Maildir 中删除旧电子邮件

我目前正在尝试弄清楚如何删除 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

相关内容