Не смотря на возможность уведомления пользователя о близком превышении квоты, нет гарантии, что пользователь заметит это предупреждающие письмо в своем ящике.
В то же время надежная доставка электронной корреспонденции для некоторых пользователей может быть очень критичным бизнес процессом и должно быть взято под контроль IT отделом. Один из вариантов такого контроля — предупреждение администраторов о скором превышении квоты каким-либо пользователем. Реализация на примере Nagios NRPE для dovecot:
Предполагается, что у вас уже установлен NRPE демон и всё настроено для работы с ним. Квоты смотрим утилитой doveadm. Примеры взяты с CentOS 6.
Добавим в /etc/sudoers изменения для возможности запуска doveadm через NRPE под пользователем nagios:
Комментируем строчку
# Defaults requiretty
Добавляем строчку
nagios ALL=NOPASSWD: /usr/bin/doveadm
В /etc/nagios/nrpe.cfg добавим определение новой команды:
command[check_dovecot_quota]=/usr/lib64/nagios/plugins/check_dovecot_quota.sh -w 95
Поместим в /usr/lib64/nagios/plugins/check_dovecot_quota.sh скрипт:
#!/bin/sh
doveadm=`which doveadm 2>/dev/null`
function help {
echo -e "\n\tThis plugin check quota usage for all users and display overlimit users. \n\n$0:\n\t-w <%>\tSets the WARNING usage in percent\n"
exit -1
}
# Getting parameters:
while getopts "w:c:h" OPT; do
case $OPT in
"w") warning=$OPTARG;;
"h") help;;
esac
done
# Checking parameters:
[ "$warning" == "" ] && echo "ERROR: You must specify warning level" && help
result=`sudo $doveadm -f tab quota get -A 2>/dev/null | grep STORAGE | awk -v warn=$warning '{if ($6 > warn) print $1":"$6"%;"}'`
if [ "$result" != "" ]; then
echo "WARNING quota limit alert: some quota exceed $warning% usage; see long output;"
for i in $result; do
echo $i
done
exit 1
else
echo "OK. all quota limits are not exceeded"
exit 0
fi
Проверяем работу в nagios