Мониторим квоты почтовых ящиков в dovecot


Не смотря на возможность уведомления пользователя о близком превышении квоты, нет гарантии, что пользователь заметит это предупреждающие письмо в своем ящике.
В то же время надежная доставка электронной  корреспонденции для некоторых пользователей может быть очень критичным бизнес процессом и должно быть взято под контроль 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

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *