#!/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