d282a6a760
This makes the following changes: - remove the need for an additional Ofelia container in favor of the already running ofelia-mailcow container - list Ofelia labels as more readable dictionary (like in mailcow's docker-compose.yml) - fix the scheduling format by adding a field for seconds and a link to the Go cron documentation
135 Zeilen
5,5 KiB
Markdown
135 Zeilen
5,5 KiB
Markdown
Wenn Sie alte Mails aus den Ordnern `.Junk` oder `.Trash` löschen wollen oder vielleicht alle gelesenen Mails, die älter als eine bestimmte Zeitspanne sind, können Sie das dovecot-Tool doveadm [man doveadm-expunge](https://wiki.dovecot.org/Tools/Doveadm/Expunge) verwenden.
|
|
|
|
## Der manuelle Weg
|
|
|
|
Dann wollen wir mal loslegen:
|
|
|
|
Löschen Sie die Mails eines Benutzers im Junk-Ordner, die **gelesen** und **älter** als 4 Stunden sind
|
|
|
|
|
|
=== "docker compose (Plugin)"
|
|
|
|
``` bash
|
|
docker compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'Junk' SEEN not SINCE 4h
|
|
```
|
|
|
|
=== "docker-compose (Standalone)"
|
|
|
|
``` bash
|
|
docker-compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'Junk' SEEN not SINCE 4h
|
|
```
|
|
|
|
Lösche **alle** Mails des Benutzers im Junk-Ordner, die **älter** als 7 Tage sind
|
|
|
|
=== "docker compose (Plugin)"
|
|
|
|
``` bash
|
|
docker compose exec dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 7d
|
|
```
|
|
|
|
=== "docker-compose (Standalone)"
|
|
|
|
``` bash
|
|
docker-compose exec dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 7d
|
|
```
|
|
|
|
Löscht **alle** Mails (aller Benutzer) in **allen** Ordnern, die **älter** als 52 Wochen sind (internes Datum der Mail, nicht das Datum, an dem sie auf dem System gespeichert wurde => `before` statt `savedbefore`). Nützlich zum Löschen sehr alter Mails in allen Benutzern und Ordnern (daher besonders nützlich für GDPR-Compliance).
|
|
|
|
=== "docker compose (Plugin)"
|
|
|
|
``` bash
|
|
docker compose exec dovecot-mailcow doveadm expunge -A mailbox % before 52w
|
|
```
|
|
|
|
=== "docker-compose (Standalone)"
|
|
|
|
``` bash
|
|
docker-compose exec dovecot-mailcow doveadm expunge -A mailbox % before 52w
|
|
```
|
|
|
|
Löschen von Mails in einem benutzerdefinierten Ordner **innerhalb** des Posteingangs eines Benutzers, die **nicht** gekennzeichnet und **älter** als 2 Wochen sind
|
|
|
|
=== "docker compose (Plugin)"
|
|
|
|
``` bash
|
|
docker compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'INBOX/custom-folder' not FLAGGED not SINCE 2w
|
|
```
|
|
|
|
=== "docker-compose (Standalone)"
|
|
|
|
``` bash
|
|
docker-compose exec dovecot-mailcow doveadm expunge -u 'mailbox@example.com' mailbox 'INBOX/custom-folder' not FLAGGED not SINCE 2w
|
|
```
|
|
|
|
!!! info
|
|
Für mögliche [Zeitspannen](https://wiki.dovecot.org/Tools/Doveadm/SearchQuery#section_date_specification) oder [SearchQuery](https://wiki.dovecot.org/Tools/Doveadm/SearchQuery#section_search_keys) schauen Sie bitte in [man doveadm-search-query](https://wiki.dovecot.org/Tools/Doveadm/SearchQuery)
|
|
|
|
## Job-Scheduler
|
|
|
|
### ĂĽber das Host-System cron
|
|
|
|
Wenn Sie eine solche Aufgabe automatisieren wollen, können Sie einen Cron-Job auf Ihrem Rechner erstellen, der ein Skript wie das folgende aufruft:
|
|
|
|
=== "docker compose (Plugin)"
|
|
|
|
``` bash
|
|
#!/bin/bash
|
|
# Pfad zu mailcow-dockerized, z.B. /opt/mailcow-dockerized
|
|
cd /pfad/zu/ihrer/mailcow-dockerized
|
|
|
|
docker compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 2w
|
|
docker compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' SEEN not SINCE 12h
|
|
[...]
|
|
```
|
|
|
|
=== "docker-compose (Standalone)"
|
|
|
|
``` bash
|
|
#!/bin/bash
|
|
# Pfad zu mailcow-dockerized, z.B. /opt/mailcow-dockerized
|
|
cd /pfad/zu/ihrer/mailcow-dockerized
|
|
|
|
docker-compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' savedbefore 2w
|
|
docker-compose exec -T dovecot-mailcow doveadm expunge -A mailbox 'Junk' SEEN not SINCE 12h
|
|
[...]
|
|
```
|
|
|
|
Um einen Cronjob zu erstellen, können Sie `crontab -e` ausführen und etwas wie das Folgende einfügen, um ein Skript auszuführen:
|
|
|
|
```
|
|
# Jeden Tag um 04:00 Uhr morgens ausfĂĽhren.
|
|
0 4 * * * /pfad/zu/ihr/expunge_mailboxes.sh
|
|
```
|
|
|
|
### ĂĽber Docker Job Scheduler
|
|
|
|
Um dies mit einem Docker-Job-Scheduler zu archivieren, verwenden Sie diese docker-compose.override.yml mit Ihrer mailcow:
|
|
|
|
|
|
```
|
|
version: '2.1'
|
|
|
|
services:
|
|
|
|
dovecot-mailcow:
|
|
labels:
|
|
ofelia.enabled: "true"
|
|
ofelia.job-exec.dovecot-expunge-trash.schedule: "0 0 4 * * *"
|
|
ofelia.job-exec.dovecot-expunge-trash.command: "doveadm expunge -A mailbox 'Junk' savedbefore 2w"
|
|
ofelia.job-exec.dovecot-expunge-trash.tty: "false"
|
|
|
|
```
|
|
|
|
Wir fĂĽgen unserem Dovecot-Container ein paar Labels hinzu, um den Job-Scheduler zu aktivieren und ihm in einem Cron-kompatiblen Scheduling-Format mitzuteilen, wann er laufen soll. Hinweis: Ofelia verwendet das [Scheduling-Format](https://pkg.go.dev/github.com/robfig/cron?utm_source=godoc) der Cron-Implementierung von Go, die mit einem Eintrag fĂĽr Sekunden statt fĂĽr Minuten beginnt.
|
|
|
|
Diese docker-compose.override.yml löscht jeden Tag um 4 Uhr morgens alle Mails, die älter als 2 Wochen sind, aus dem Ordner "Junk". Um zu sehen, ob alles richtig gelaufen ist, können Sie nicht nur in Ihrer Mailbox nachsehen, sondern auch im Docker-Log von Ofelia, ob es etwa so aussieht:
|
|
|
|
```
|
|
common.go:124 â–¶ NOTICE [Job "dovecot-expunge-trash" (8759567efa66)] Started - doveadm expunge -A mailbox 'Junk' savedbefore 2w,
|
|
common.go:124 â–¶ NOTICE [Job "dovecot-expunge-trash" (8759567efa66)] Finished in "285.032291ms", failed: false, skipped: false, error: none,
|
|
```
|
|
|
|
Wenn der Vorgang fehlgeschlagen ist, wird dies angegeben und die Ausgabe von doveadm im Protokoll aufgefĂĽhrt, um Ihnen die Fehlersuche zu erleichtern.
|
|
|
|
Falls Sie weitere Jobs hinzufügen wollen, stellen Sie sicher, dass Sie den "dovecot-expunge-trash"-Teil nach "ofelia.job-exec." in etwas anderes ändern, er definiert den Namen des Jobs. Die Syntax der Labels finden Sie unter [mcuadros/ofelia](https://github.com/mcuadros/ofelia).
|
|
|