49 lines
2.1 KiB
Bash
49 lines
2.1 KiB
Bash
|
#!/bin/bash
|
|||
|
|
|||
|
############################################################№
|
|||
|
# Удаление из почтовой очереди сообщений зависших с ошибкой:
|
|||
|
# "lost connection with 127.0.0.1"
|
|||
|
#############################################################
|
|||
|
# Автор: Сергей Калинин
|
|||
|
# https://nuk-svk.ru
|
|||
|
# svk@nuk-svk.ru
|
|||
|
##############################################################################
|
|||
|
|
|||
|
# Количество сообщений после которого нужно бить тревогу
|
|||
|
MESSAGE_COUNT=30
|
|||
|
ZIMBRA_BIN_PATH="/opt/zimbra/common/sbin/"
|
|||
|
ZABBIX_SENDER="/usr/bin/zabbix_sender"
|
|||
|
MAIL_SERVER=${HOSTNAME}
|
|||
|
|
|||
|
TODAY=$(date +"%d")
|
|||
|
|
|||
|
# получаем список потребных сообщений из очереди
|
|||
|
MESSAGE_LIST=$(${ZIMBRA_BIN_PATH}/postqueue -p | grep -A 1 -B 1 "lost connection with 127.0.0.1")
|
|||
|
#MESSAGE_LIST=$(cat /tmp/queue | grep -A 1 -B 1 "lost connection with 127.0.0.1")
|
|||
|
|
|||
|
# считаем их количество иесли превышает установленное значение завершаем скрипт с ошибкой
|
|||
|
MSG_COUNT=$(echo "${MESSAGE_LIST}" | cut -d " " -f 1 | grep -E "[A-Z0-9].+" | wc -l)
|
|||
|
# отправлям данные в заббикс
|
|||
|
${ZABBIX_SENDER} -c /etc/zabbix/zabbix_agentd.conf -s "${MAIL_SERVER}" -k queue.error.message.count -o $MSG_COUNT
|
|||
|
|
|||
|
if [ "${MSG_COUNT}" -ge "${MESSAGE_COUNT}" ]; then
|
|||
|
echo "Many error messages"
|
|||
|
exit 1
|
|||
|
fi
|
|||
|
|
|||
|
# Удаление сообщений старше 1 дня
|
|||
|
echo "${MESSAGE_LIST}" | while read LINE; do
|
|||
|
MSG_DAY=$(echo ${LINE} | grep -E "^[A-Z0-9].+" | awk '{print $3,$4,$5,$6}')
|
|||
|
if [[ -n ${MSG_DAY} ]]; then
|
|||
|
# определяем дату (число) сообщения
|
|||
|
MSG_DAY=$(date -d "$(echo ${LINE} | grep -E "^[A-Z0-9].+" | awk '{print $3,$4,$5,$6}')" +%d)
|
|||
|
#echo $MSG_DAY
|
|||
|
if [ ${MSG_DAY} != ${TODAY} ]; then
|
|||
|
MESSAGE_ID=$(echo "${LINE}" | cut -d " " -f 1 | grep -E "[A-Z0-9].+")
|
|||
|
# echo "$MSG_DAY $MESSAGE_ID"
|
|||
|
# Delete messages
|
|||
|
${ZIMBRA_BIN_PATH}/postsuper -d $MESSAGE_ID
|
|||
|
fi
|
|||
|
fi
|
|||
|
done
|