一些自动进程(例如使用 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
文件上运行。