1,8 KiB
If you want to delete old mails out of the .Junk
or .Trash
folders or maybe delete all read mails that are older than a certain amount of time you may use dovecot's tool doveadm man doveadm-expunge.
The manual way
That said, let's dive in:
Delete a user's mails inside the junk folder that are read and older than 4 hours
docker-compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'Junk' SEEN not SINCE 4h
Delete all user's mails in the junk folder that are older than 7 days
docker-compose exec dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 7d
Delete mails inside a custom folder inside a user's inbox that are not flagged and older than 2 weeks
docker-compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'INBOX/custom-folder' not FLAGGED not SINCE 2w
!!! info For possible time spans or search keys have a look at man doveadm-search-query
Make it automatic
If you want to automate such a task you can create a cron job on your host that calls a script like the one below:
#!/bin/bash
/usr/local/bin/docker-compose exec dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 2w
/usr/local/bin/docker-compose exec dovecot-mailcow doveadm expunge -A mailbox 'Junk' SEEN not SINCE 12h
[...]
To create a cron job you may execute crontab -e
and insert something like the following to execute a script:
# Execute everyday at 04:00 A.M.
0 4 * * * /path/to/your/expunge_mailboxes.sh