Танкист Апокалипсиса
Лениво стало отвечать на вопросы (нечастые, правда) относительно того, что "почему почта не приходит", написал скрипт для оповещения владельцев почтовых ящиков о скором переполнении. За основу взял вот этот вариант: lvogdt.wordpress.com/2013/02/01/cyrus-quota-war... . Сходу он у меня не запустился, поскольку был рассчитан, похоже, на более старые версии IMAP. Этот скрипт работает с версией 2.5.6.
Что делает: читает список квот почтовых ящиков, выделяет строки, относящиеся непосредственно к хранилищу, сортирует список по убыванию заполненности ящиков, при заполнении ящика на 98 и более процентов пишет сообщение в лог, посылает пользователю письмо с просьбой почистить ящик. При заполнении ящика на 90 и более процентов, пишется письмо администратору с перечнем проблем.
Что делает: читает список квот почтовых ящиков, выделяет строки, относящиеся непосредственно к хранилищу, сортирует список по убыванию заполненности ящиков, при заполнении ящика на 98 и более процентов пишет сообщение в лог, посылает пользователю письмо с просьбой почистить ящик. При заполнении ящика на 90 и более процентов, пишется письмо администратору с перечнем проблем.
#!/bin/sh
MAILTO='[email protected]'
LOGFILE='/var/log/imap_quota_warnings.log'
TMPFILE=`mktemp /tmp/quota_warner.XXXXXX`
TMPFILE2=`mktemp /tmp/quota_warner2.XXXXXX`
TMPFILE3=`mktemp /tmp/quota_warner3.XXXXXX`
OVERQUOTA_COUNTER=0
WARNQUOTA_COUNTER=0
HOST=$(hostname)
cleanup_and_exit(){
rm "$TMPFILE" "$TMPFILE2" "$TMPFILE3"
exit 0
}
trap cleanup_and_exit 0 1 2 3 7 13 15
su - cyrus -c /usr/bin/quota | grep " STORAGE " | sort -k2nr > "$TMPFILE"
echo "Output from $0 on $HOST: " >> "$TMPFILE2"
while read QUOTA PERCENTAGE ACTUSAGE RESOURCE USER ; do
LOGIN=${USER/user./}
if [ -z "$USER" ]; then
# no USER (and no ACTUSAGE) means: user has no quota at all
continue
fi
if [ $PERCENTAGE -lt 90 ]; then
continue
fi
DATE=$(date)
QUOTAMB=$(echo "$QUOTA/1024" | bc)
ACTMB=$(echo "$ACTUSAGE/1024" | bc)
if [ $PERCENTAGE -gt 98 ]; then
((OVERQUOTA_COUNTER++))
echo "$DATE : $LOGIN is using $ACTMB Mb ($PERCENTAGE %) of configured maximum: $QUOTAMB (quota)." >> "$LOGFILE"
echo "Добрый день!" > $TMPFILE3
echo "Пожалуйста, почистите почтовый ящик, поскольку он заполнен на $PERCENTAGE %." >> $TMPFILE3
echo "Спасибо и удачного дня." >> $TMPFILE3
echo "Служба IT." >> $TMPFILE3
echo "Hello!" >> $TMPFILE3
echo "Clear your mailbox, please, because it has $PERCENTAGE % filled." >> $TMPFILE3
echo "Thank you and good luck." >> $TMPFILE3
echo "IT dept." >> $TMPFILE3
echo "-----" >> $TMPFILE3
echo "$MAILTO" >> $TMPFILE3
mail -s "Mailbox overquota (Ящик переполнен)" -r $MAILTO `echo $LOGIN| awk -F ! {'print $2'}`@`echo $LOGIN| awk -F ! {'print $1'}` < "$TMPFILE3"
fi
((WARNQUOTA_COUNTER++))
echo "$LOGIN is using $ACTMB Mb ($PERCENTAGE %) of configured maximum: $QUOTAMB (quota)." >> "$TMPFILE2"
done < "$TMPFILE"
mail -s "IMAP quota report from $HOST: $OVERQUOTA_COUNTER error(s), $WARNQUOTA_COUNTER warning(s)" -r $MAILTO $MAILTO < "$TMPFILE2"
cleanup_and_exit
if [ $PERCENTAGE -lt 90 ];
then
continue
fi