Skip to content

Papierkorb automatisch leeren und alte Nachrichten löschen

Mit der Zeit werden die Mailboxen der User immer voller und benötigen mehr und mehr Speicher auf dem Server. Besonders ärgerlich ist es, wenn veraltete E-Mails bis in alle Ewigkeit im Papierkorb der Nutzer schlummern und der Trash Ordner nicht regelmäßig geleert wird. Dem kann man mit der Expire-Funktion von Dovecot aber entgegenwirken.

Damit die Expire-Funktion funktioniert, muss bei einer MySQL-basierten Nutzerverwaltung sichergestellt werden, dass das Kommando zum Auflisten aller Nutzer korrekt ist. Es befindet sich in der /etc/dovecot/dovecot-sql.conf.ext. Bei mir sieht die SQL Query dazu wie folgt aus:

....
# Query to get a list of all usernames.
iterate_query = SELECT local_part AS username, domain FROM mailbox

Da eine manuelle Löschung aber unbequem ist, empfiehlt es sich, eine Automatik zu benutzen, die nun eingestellt werden soll: Die Konfiguration des Expire Plugins ist sehr schnell erledigt. In die Datei /etc/dovecot/conf.d/90-plugin.conf wird beispielsweise folgendes eingetragen.

....
plugin {
  expire = Trash
  expire = Trash.*
}

Das Expire Plugin löscht noch nichts selbstständig – es überwacht nur die Timestamps eingehender E-Mails, sodass das spätere Löschen effizienter und schneller abläuft. Für das automatische Löschen wird nun ein täglich startender Cronjob im Linux-System erstellt.

50 1 * * * doveadm expunge -A mailbox Trash savedbefore 30d >/dev/null 2>&1

Dokumentation