1f6c8a416b
Additional example for expunge, useful for cleanup of old mails. I used this to clean mails that were older than 5 years.
53 Zeilen
2,2 KiB
Markdown
53 Zeilen
2,2 KiB
Markdown
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](https://wiki.dovecot.org/Tools/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 **all** mails (of all users) in **all** folders that are **older** than 52 weeks (internal date of the mail, not the date it was saved on the system => `before` instead of `savedbefore`). Useful for deleting very old mails on all users and folders (thus especially useful for GDPR-compliance).
|
|
|
|
```
|
|
docker-compose exec dovecot-mailcow doveadm expunge -A mailbox % before 52w
|
|
```
|
|
|
|
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](https://wiki.dovecot.org/Tools/Doveadm/SearchQuery#section_date_specification) or [search keys](https://wiki.dovecot.org/Tools/Doveadm/SearchQuery#section_search_keys) have a look at [man doveadm-search-query](https://wiki.dovecot.org/Tools/Doveadm/SearchQuery)
|
|
|
|
## 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
|
|
# Path to mailcow-dockerized, e.g. /opt/mailcow-dockerized
|
|
cd /path/to/your/mailcow-dockerized
|
|
|
|
/usr/local/bin/docker-compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 2w
|
|
/usr/local/bin/docker-compose exec -T 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
|
|
```
|