MailCow Housekeeping – Papierkorb & Junk automatisch leeren

MailCow bietet keine UI-Option zum automatischen Leeren von Papierkorb und Junk. Mit einem Ofelia-Job in der docker-compose.override.yml lässt sich das Problem einfach und serverweit lösen – inklusive Erklärung, warum savedbefore nicht funktioniert und before die richtige Wahl ist.

Wer einen eigenen MailCow-Mailserver betreibt, kennt das Problem: Im Papierkorb und im Junk-Ordner sammeln sich über Monate und Jahre tausende E-Mails an. Die User löschen nicht selber die Mails aus dem Spam-Ordner und leeren nie den Papierkorb, mit Ergebnis, dass die Mailordner riesig groß werden. Eine Einstellung in der Benutzeroberfläche gibt es leider nicht. Die Lösung: Ein automatischer Job über Ofelia – den in MailCow integrierten Scheduler.

Das Problem

MailCow bietet in der Admin-Oberfläche keine Möglichkeit, Mails im Papierkorb oder Junk nach X Tagen automatisch zu löschen. Wer doveadm expunge mit dem Parameter savedbefore versucht, stellt fest: Es passiert nichts. Der Grund ist, dass savedbefore nur Mails mit gesetztem \Deleted-Flag berücksichtigt – normale Mails im Trash-Ordner haben dieses Flag aber nicht. Der korrekte Parameter lautet stattdessen before.

Die Lösung: Ofelia-Job via docker-compose.override.yml

Erstelle im MailCow-Wurzelverzeichnis (z. B. /opt/mailcow-dockerized/) die Datei docker-compose.override.yml mit folgendem Inhalt:

services:
  dovecot-mailcow:
    labels:
      ofelia.enabled: "true"
      ofelia.job-exec.trash-expunge.schedule: "0 4 * * *"
      ofelia.job-exec.trash-expunge.command: "doveadm expunge -A mailbox Trash before 30d"
      ofelia.job-exec.junk-expunge.schedule: "0 4 * * *"
      ofelia.job-exec.junk-expunge.command: "doveadm expunge -A mailbox Junk before 20d"

Danach MailCow neu starten:

docker compose down && docker compose up -d

Was passiert genau?

  • Täglich um 4:00 Uhr werden die Jobs automatisch ausgeführt.
  • Papierkorb (Trash): Alle Mails älter als 30 Tage werden endgültig gelöscht.
  • Junk: Alle Mails älter als 20 Tage werden endgültig gelöscht.
  • -A: Gilt für alle Benutzer auf dem Server.
  • before: Filtert nach Empfangsdatum – unabhängig vom Gelöscht-Flag.

Vorab testen

Vor dem ersten automatischen Lauf empfiehlt sich ein manueller Test. Zuerst nur anzeigen, was gelöscht werden würde:

docker compose exec dovecot-mailcow doveadm search -A mailbox Trash before 30d

Wenn die Ausgabe plausibel aussieht, direkt löschen:

docker compose exec dovecot-mailcow doveadm expunge -A mailbox Trash before 30d

Logs prüfen

Ob die Ofelia-Jobs korrekt ausgeführt werden, lässt sich einfach prüfen:

docker compose logs ofelia-mailcow

Damit läuft die automatische E-Mail-Bereinigung vollständig im Hintergrund – ohne manuelle Eingriffe und ohne Änderungen an der MailCow-Kerndatei.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Vielleicht gefällt dir auch folgendes?

WordPress Cookie Plugin von Real Cookie Banner