如何从本地服务器的邮箱中删除超过指定时间的邮件

如何从本地服务器的邮箱中删除超过指定时间的邮件

一些自动进程(例如使用 cron 定期执行的进程)会生成大量消息。我希望自动删除超过一个月的消息,这样我的邮箱就不会变得太大。

我尝试使用 bash 脚本存档旧消息并尝试将其从邮箱中删除,但我从系统收到此消息:

Mailbox /var/spool/mail/username was modified or is in use now.
It's not safe to complete the operation...

我在 exim 和 postfix 上都遇到了同样的问题(在不同的服务器上)。

我想我可以使用 bash 或 python 模拟本地电子邮件客户端(如 mutt),但我不知道该怎么做。我对使用 maildir 不感兴趣,因为有成千上万条小消息,放在一个邮箱里更易于管理。

这是使用邮件池和本地客户端的本地服务器。我们不使用 imap 或向服务器外发送消息。

我将非常感激任何提示。

答案1

grepmail命令可以完成您想要的操作。您也可以使用 mail[x] 命令来实现这一点,只要您有一点小聪明。我建议这样做:

mailx <<EOF
s 1-$ mbox
q
EOF

grepmail ...

这会将系统邮箱中的所有邮件保存到名为 的文件中mbox。它还会从系统邮箱中删除这些邮件。然后您可以grepmail在该mbox文件上运行。

相关内容