Mailquota Warnung für ISPConfig3

Um unseren Benutzern einen kleinen Hinweiß zu geben wenn Ihre Mailbox zu 85% und zu 90% belegt ist, können wir folgendes Script nutzen:

Als erstes legen wir ein File an das die Email sendet:

nano /usr/local/bin/quota-warning.sh

und kopieren folgendes Script hinein:

#!/bin/sh
# Should be run by the Local Delivery Agent
#set -x
SCRIPT_NAME="quota-warning.sh"
MAIL_TO=$2
MAIL_BCC="[email protected]"
MAIL_FROM="[email protected]"
MAIL_QUOTA_PERCENT=$1
MAIL_SUBJECT="Ihre Mailbox ist zu “$1″% voll!"
BIN_CAT="/bin/cat"
BIN_DATE="/bin/date"
BIN_HOSTNAME="/bin/hostname"
BIN_LOGGER="/usr/bin/logger"
BIN_MV="/bin/mv"
BIN_STAT="/usr/bin/stat"
#set -x
# set misc values
HOSTNAME="`${BIN_HOSTNAME}`"
# set mail value
MAIL_DATE="`${BIN_DATE} ‘+%a, %d %b %Y %T %z (%Z)’`"
MAIL_MESSAGE_ID="`${BIN_DATE} ‘+%Y%m%d%H%M%S’`@${HOSTNAME}"
#To: ${MAIL_TO}
# write out message
${BIN_CAT} < < EOF | /usr/lib/dovecot/dovecot-lda -d $MAIL_TO -o “plugin/quota=maildir::noenforcing"
From: ${MAIL_FROM}
Subject: ${MAIL_SUBJECT}
Message-Id: <${MAIL_MESSAGE_ID}>
Date: ${MAIL_DATE}
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
Info:
===
Hallo,
Dein Postfach ist zu ${MAIL_QUOTA_PERCENT}% gefüllt.
Bitte lösche E-Mails oder leere einmal Deinen Papierkorb.
Vielen Dank.
EOF
[ "$?" -gt 0 ] && ${BIN_LOGGER} -p mail.error -t “${SCRIPT_NAME}(${MAIL_TO})" “writing message failed" && exit 1
# log warning attempt
${BIN_LOGGER} -p mail.info -t “${SCRIPT_NAME}(${MAIL_TO}) ${MAIL_QUOTA_PERCENT}%" “delivered!"
exit 0

Jetzt vergeben wir die Rechte:

chown vmail:vmail /usr/local/bin/quota-warning.sh
chmod 750  /usr/local/bin/quota-warning.sh

Nun müssen wir noch die Datei /etc/dovecot/dovecot.conf anpassen: nano /etc/dovecot/dovecot.conf

plugin {
   quota = dict:user::file:/var/vmail/%d/%n/.quotausage
   sieve=/var/vmail/%d/%n/.sieve
   quota_warning = storage=95%% quota-warning 95 %u
   quota_warning2 = storage=80%% quota-warning 80 %u
}
# Example quota-warning service. The unix listener’s permissions should be
# set in a way that mail processes can connect to it. Below example assumes
# that mail processes run as vmail user. If you use mode=0666, all system users
# can generate quota warnings to anyone.
service quota-warning {
   executable = script /usr/local/bin/quota-warning.sh
   #user = dovecot
   user = vmail
   unix_listener quota-warning {
      user = vmail
   }
}

Nach einem Neustart von Dovecot /etc/init.d/dovecot restart bekommen eure User Emails gesendet wenn das Postfach sich dem Ende nähert.