[Postfixbuch-users] Suche policy-Dienst für Quotas
Christian Boltz
postfixbuch at cboltz.de
Mo Jun 1 18:33:55 CEST 2009
Hallo zusammen,
Am Montag, 1. Juni 2009 schrieb Peer Heinlein:
> Am Montag, 1. Juni 2009 schrieb Gregor Hermens:
> > Mehr bringt imho nichts. An einer brauchbaren Lösung, die rejected
> > statt bounced wäre ich aber auch sehr interessiert.
>
> Je nach Anzahl der Postfächer kann man es sich leisten, einen
> Cron-Job alle Stunde
>
> a) eine Volumenberechnung (du -s) auf das Maildir oder
> b) einen Blick in die Quota-Datei von Dovecot
>
> werfen zu lassen um dann daraus kurz in LDAP oder SQL eine Access-Map
> zu bauen.
In diesem Fall ist text/plain die einfachere Lösung ;-)
> Wer zuviele Mails hat, steht dort eben als REJECT drin.
>
> Und schwupp ist das für die Annahme geregelt.
So, ich hab mir endlich mal die Zeit genommen, ein Script dafür zu
schreiben. War einfacher als ich ursprünglich gedacht hatte ;-)
#!/bin/bash
cd /home/mailbox
for dir in */*; do
test -f $dir/maildirsize || continue
# Die Umrechnung von Byte zu kByte in maildirsize durch Abschneiden
# der letzten 3 Ziffern ist nicht optimal, reicht aber erstmal ;-)
quota=$(sed -n 's/...S//p' < $dir/maildirsize)
used=$(du -s $dir | sed 's/\t.*//')
# Debugging 1: Füllstand aller Postfächer ausgeben
# echo $quota $used $dir >&2
# Debugging 2: Füllstand der overquota-Postfächer ausgeben
# test "$used" -gt "$quota" && echo $quota $used $dir >&2
test "$used" -gt "$quota" && echo $dir
done | sed 's§\(.*\)/\(.*\)§\2@\1 450 Mailbox is over quota§' > \
/etc/postfix/overquota.new
diff /etc/postfix/overquota.new /etc/postfix/overquota >/dev/null || {
mv /etc/postfix/overquota.new /etc/postfix/overquota && \
postmap /etc/postfix/overquota
}
Laufzeit: ein paar Sekunden bei 400 Postfächern.
Die Einbindung erfolgt wenig sensationell mit
check_recipient_access hash:/etc/postfix/overquota,
in den smtpd_recipient_restrictions.
Das Script selbst wird per Cronjob aufgerufen.
Grund für die Verwendung von diff sind zwei Dinge:
- Vermeidung von unnötigen Reloads der overquota-map
- ich sehe am Dateidatum, wann die letzte "echte" Änderung bei den
übervollen Postfächern war
Bleibt noch die Frage, wie sich maildrop bei einem fast vollen Postfach
(sprich: noch 1 Byte frei ;-) verhält - stellt es dann noch eine Mail
zu oder bounct es bereits, weil die Mail größer als 1 Byte ist?
(Weiß das jemand oder muss ich es selbst testen?)
Gruß
Christian Boltz
--
Auf Windows 95 laufen so ziemlich alle Spiele. Für ernsthaftes Arbeiten
sollte man aber zusätzlich ein Betriebssystem installieren.
Mehr Informationen über die Mailingliste Postfixbuch-users