В настоящее время я пытаюсь выяснить, как я могу удалить старые электронные письма в одной папке установки Maildir на сервере Debian. По сути, я хочу запускать задание cron каждый день или около того, которое проверяет определенную папку в Maildir на наличие старых писем и удаляет их, если они старше установленного количества дней.
Есть ли простой способ фильтровать электронные письма из Maildir по дате, или мне нужно читать каждое электронное письмо как текст, искать метку времени, преобразовывать ее, вычитать указанное количество дней и затем сравнивать с текущим? Дата?
Я не хочу изобретать колесо, если уже есть лучшие колеса, поэтому я был бы рад, если бы кто-нибудь мог мне в этом помочь.
Спасибо!
Примечание: Я использую Debian 7.8 с Postfix 2.9.6 и Dovecot 2.1.7
Поскольку у вас есть dovecot, вы можете сделать это с помощью doveadm (1).
Например, удаление почты, сохраненной в папке «Корзина» для пользователя до 30 дней:
doveadm expunge mailbox Trash savedbefore 30d -u <user>
Вы можете использовать флаг -A для всех пользователей, и если вы хотите сначала проверить письма, которые соответствуют, используйте команды search / fetch - см. 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