49 lines
2.1 KiB
Bash
Executable File
49 lines
2.1 KiB
Bash
Executable File
#!/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
|