[Postfixbuch-users] cyrus quota script

Stefan Schmidt s.schmidt at jacobs-university.de
Do Dez 4 17:09:31 CET 2008


Hallo Holm,

On Thursday 04 December 2008 12:23:02 Holm Kapschitzki wrote:
> kennt jemand ein Perlscript, welches von Cyrus die derzeitige Quota /
> Belegung ausliest und dem Mailboxinhaber eine Nachricht sendet, daß
> die Mailbox voll oder zu x% gefüllt ist?

So in der Art. Das Script läuft bei uns ein Mal am Tag per cron und 
erstellt eine Hitliste mit den Top-Quota-Usern nach stdout und schickt 
Mails an die betreffenden User mit einer Nachricht mit dem Füllstand.

Bei uns haben die User lokale Accounts (mit Shell /bin/false), 
Authentifizierung also per saslauthd/PAM, daher hole ich die Namen aus 
der /etc/passwd.

Momentan ist die Benachrichtigung auf User mit Quota zwischen 90 und 
100% begrenzt, das darfst du natürlich anpassen. Ausserdem gibt es für 
Kunden mit einem aktuellen Quota von mehr als 1GB keinen Hinweis 
darauf, dass sie sich an den Support wenden sollen, wenn sie mehr haben 
wollen.

====
#!/bin/bash
export PATH=/sbin:/usr/sbin:/usr/bin:/bin
for n in $(su - cyrus -s /bin/bash -c quota | egrep -v Trash | \
           tail +2 | sort -k2nr | expand | sed s/^[\ ]*//g | \
           tr -s " " | tr " " _ ); do
  QUOTA=$(echo "scale=0; $(echo $n | cut -f1 -d_)/1024" | bc -l)
  TOTAL=$(echo $n | cut -f1 -d_)
  PERCENTAGE=$(echo $n | cut -f2 -d_)
  ACTUSAGE=$(echo "scale=0; $(echo $n | cut -f3 -d_)/1024" | bc -l)
  USER=$(echo $n | cut -f4 -d_ | cut -f2 -d/)
  if [ $PERCENTAGE -lt 90 ]; then
    exit
  fi
  if [ $PERCENTAGE -lt 100 ]; then
    REALNAME="$(grep "^$USER:" /etc/passwd | cut -f5 -d:)"
    echo $USER $QUOTA $ACTUSAGE $PERCENTAGE $REALNAME
    (cat << EOF
Dear REALNAME,

the space you are using on the mail server for storing your mails
is ACTUSAGE MB currently. This is PERCENTAGE% of your current limit
of QUOTA MB.
Please free some space in your mailbox, as on reaching the limit
the mail server stops receiving mails for your account.

EOF
    if [ $TOTAL -lt 1000000 ]; then
      cat << EOF
If you feel needing more space on the mail server, please contact
<Mailadresse des IT Helpdesk>.

EOF
    fi
    cat << EOF
Your Senior Chief Executive Hannebambel Int-EDV,

Stefan Schmidt
Idiot vom Dienst
EOF
    )| m4 -DUSER=$USER -DPERCENTAGE=$PERCENTAGE -DACTUSAGE=$ACTUSAGE \
          -DQUOTA=$QUOTA -DREALNAME="$REALNAME" | \
          mail -r "<helpdesk at example.com>" \
               -s "Your actual mailbox usage is near quota" \
               $USER at example.com
  fi
done
====

Viel Spass,

Stefan
-- 
Stefan Schmidt
Network Manager

Jacobs University Bremen gGmbH
Campus Ring 1 | 28759 Bremen | Germany

Commercial registry: Amtsgericht Bremen, HRB 18117
CEO: Prof. Dr. Joachim Treusch
Chair Board of Governors: Prof. Dr. Karin Lochte



Mehr Informationen über die Mailingliste Postfixbuch-users