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