Da ich dovecot mit staticdb einsetze und diverse Clients im Einsatz sind, welche nicht ordentlich aufräumen, habe ich folgendes Script zu meinen täglichen Cronjobs gepackt. Enthält noch keine Returncodes etc. – quick and dirty halt 😉
Einfach das SQL-Statement und ganz unten die eMailadresse anpassen und (wenn man so faul ist wie ich) nach cron.daily speichern. Wer sonst nichts mit cron zu schaffen hat: „KEINE“ Punkte im Namen verwenden. (Beispiel „geloeschteloeschen“ ist OK, nicht aber „geloeschteloeschen.sh“!)
#!/bin/bash
#Script: Jan Ligendza v.25.03.2016
#info AT ligit.de# Variable mit Benutzern aus DB fuellen (SQL-Statement ggf. anpassen. Hier werden die kompletten eMail-Adressen zurückgegeben. Beispiel: hans.wurst@hier.dort)
MAILUSER=$(mysql –host=DATENBANKHOST –user=BENUTZER –password=’PASSWORT‘ –database=DATENBANK –skip-column-names –execute=“SELECT email from virtual_users;“)# Variable Zeile für Zeile abarbeiten und die Postfächer bereinigen („Geloescht und aelter als 7Tage“)
MAILINFO=$(while read line
do
MAILBOXUSR=“$line“
echo „USER: $MAILBOXUSR“
MAILBOXEN=$(doveadm mailbox list -u „$MAILBOXUSR“ 2>&1)# Zweite Variable Zeile für Zeile abarbeiten um alle Ordner incl. Unterordnern zu erwischen, da doveadm expunge unbedingt die mailbox (den Ordner) wissen will
while read line
do
doveadm mailbox status -u „$MAILBOXUSR“ „messages unseen vsize“ „$line“ 2>&1
doveadm -v expunge -u $MAILBOXUSR mailbox „$line“ DELETED savedbefore 7d 2>&1
done <<< „$MAILBOXEN“echo -e
done <<< „$MAILUSER“)# Infomail versenden
echo „$MAILINFO“ | mail -s ‚mail: dovecot expunge information‘ email@adresse.j0Rr