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.

Angepasst werden müssen folgende Elemente im Skript:

  • warntext Textdatei mit der Warnmeldung (s.u.)
  • mail_addy Mailadresse 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…).
  • 51200 Maximalgröße der Mailbox in kb (hier 50 MB – 1 MB = 1024 kb).

Nicht vergessen, dass Skript für root ausführbar zu machen:

Nun fehlt noch der Mailtext, der aus der Datei /usr/local/etc/overquota_warning.txt kommt, die folgendermaßen aussieht:

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:

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!