Eigenes “Mail over Quota”-Skript für Linux-MTAs
Wenn man einen Mail-Server betreibt, gibt es eine Reihe von Möglichkeiten, den Speicherplatz für die Benutzer zu begrenzen. Hier wird eine einfache Lösung für den Eigenbau gezeigt.
Manche MTA (Mail Transfer Agents) bringen eine eigene Quota-Verwaltung mit, andere sind auf den Quota-Dienst des Kernels angewiesen. Diese sind meistens schick und mächtig, jedoch nicht immer anwendbar (z.B. bei virtuellen Benutzern, u.ä.). Deshalb hier ein kleines Skript zur Behandlung von E-Mails. Das Skript kann unter dem Namen overquota_handling.sh im Verzeichnis /usr/local/sbin/ gespeichert werden.
#!/bin/sh
#
# OverQuota Warning
#
# Version 1.0 26.01.2009
# Autor: Maximilian Kalus
# Script Home - blog.beimax.de
#
#Warnungstext
warntext=/usr/local/etc/overquota_warning.txt
# E-Mail des Admins (kann auch lokale Adresse sein)
mail_addy="root@localhost"
# Nur root darf dieses Script ausfuehren
whoami=$(/usr/bin/id -un)
if [ "$whoami" != "root" ]; then
echo "Only 'root' can run this script: $0"
exit 1
fi
# Benutzer auslesen, deren Mailbox voll ist
hard=$(for USER in `ls /mailboxes`; do du -s "/mailboxes/$USER"; done | awk '$1 > 51200 {print $1":"$2}')
#Warnungen herausschicken
for overquota in $hard; do
kbytes=$(echo $overquota | awk -F':' {'print $1'})
user_name=$(echo $overquota | awk -F':' {'print $2'} | awk -F'/' {'print $3'})
mbytes=$(($kbytes / 1024))
sed -e "s/XXXSIZE/$mbytes/" -e "s/XXXBOX/$user_name/" $warntext | mail $user_name -b $mail_addy -s "Ihre Mailbox ist voll!"
done
exit 0
# end of script
Angepasst werden müssen folgende Elemente im Skript:
warntextTextdatei mit der Warnmeldung (s.u.)
mail_addyMailadresse des Administrators, der Mailkopien bekommen soll.
`ls /mailboxes`; do du -s "/mailboxes/$USER"muss an die Mailboxstruktur des Servers angepasst werden – hier gehe ich davon aus, dass unter diesem Verzeichnis die Mailbox-Verzeichnisse liegen, die jeweils den Namen des Kontos haben (z.B. Verzeichnis info@meinserver.de für gleichnamige Mailbox). Man kann auch anders an die Mailboxnamen kommen, genau wie die Größe der Mailboxen (je nachdem – hier wird maildir angenommen…).
-
51200Maximalgröße der Mailbox in kb (hier 50 MB – 1 MB = 1024 kb).
Nicht vergessen, dass Skript für root ausführbar zu machen:
chmod 700 /usr/local/sbin/overquota_handling.sh
chown root.root /usr/local/sbin/overquota_handling.sh
Nun fehlt noch der Mailtext, der aus der Datei /usr/local/etc/overquota_warning.txt kommt, die folgendermaßen aussieht:
Dies ist ein automatisch erstellter Hinweis des E-Mail-Systems
Ihre Mailbox ist ueber dem Limit von 50 MB. Bitte laden Sie Ihre Mails
herunter oder loeschen Sie diese aus Ihrem IMAP-Konto!
Hinweise:
Warnung betrifft Mailbox XXXBOX
XXXSIZE MB sind in dieser Mailbox.
Ihr Mailsystem.
Natürlich kann man einen sinnvolleren Text nehmen :-) Wichtig hier sind die beiden Platzhalter XXXBOX und XXXSIZE, die die E-Mail-Adresse respektive die Größe der Mailbox enthalten, sobald sie verschickt wurden.
Als letztes kann man das Skript ausführen, wobei man es am besten automatisiert. Das kann man z.B. mit Hilfe eines crontab -e erstellen, wenn man root ist. Dem crontab kann man dann folgende Zeile hinzufügen:
0 1 * * * /usr/local/sbin/overquota_handling.sh
Das Skript wird dann jeden Tag um 1:00h ausgeführt.
Denkbar sind Erweiterunger des Skripts, z.B. persönliche Anrede der Warnmail, automatisches Sperren der Accounts oder automatisches Löschen von alten E-Mails… Aber das ist eine andere Geschichte!
- 0 Kommentare