从 Maildir 中删除旧电子邮件

com*_*eak 4 email postfix dovecot maildir

我目前正在尝试弄清楚如何删除 Debian 服务器上 Maildir 安装文件夹中的旧电子邮件。基本上我想要做的是每天运行一个 cron 作业,以便检查 Maildir 中的特定文件夹中是否有旧电子邮件,如果它们比设定的天数早,则将其删除。

是否有一种简单的方法可以按日期从 Maildir 过滤电子邮件,或者我是否必须将每封电子邮件作为文本阅读,查找时间戳,将其转换,减去提到的天数,然后将其与当前进行比较日期?

如果已经有更好的轮子,我不想发明轮子,所以如果有人能帮助我做到这一点,我会很高兴。

谢谢!

注意:我使用的是带有 Postfix 2.9.6 和 Dovecot 2.1.7 的 Debian 7.8

小智 8

既然你有 dovecot,你就可以用 doveadm(1) 做到这一点。

例如删除用户在 30 天前保存在垃圾箱文件夹中的邮件:

doveadm expunge mailbox Trash savedbefore 30d -u <user>
Run Code Online (Sandbox Code Playgroud)

您可以对所有用户使用 -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
Run Code Online (Sandbox Code Playgroud)