mailcow-dockerized-docs/docs/manual-guides/Dovecot/u_e-dovecot-expunge.de.md
accolon d282a6a760
Update the Dovecot Expunge instructions (#533)
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
2023-02-12 13:03:45 +01:00

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).