doveadm expunge rekursiv ohne iterate

Von | 25. März 2016

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

Schreibe einen Kommentar

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.