zimbra-script/zimbra_clear_mail_queue.sh

49 lines
2.1 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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