#!/bin/bash # # Plugin to monitor incoming Postgrey # # Parameters understood: # # config (required) # autoconf (optional) # MAIL_LOG=${logfile:-/var/log/mail.log} LOGTAIL=${logtail:-`which logtail`} STATEFILE=/var/lib/munin/plugin-state/postgrey.offset if [ "$1" = "autoconf" ]; then if [ -f "${MAIL_LOG}" -a -n "${LOGTAIL}" -a -x "${LOGTAIL}" ] ; then echo yes exit 0 else echo no exit 1 fi fi if [ "$1" = "config" ]; then echo 'graph_title Postgrey daily filtering' echo 'graph_order delayed passed whitelisted' echo 'graph_category mail' echo 'graph_vlabel Count' ## echo 'graph_args --base 1000 -l 0' echo 'delayed.label delayed' echo 'passed.label passed' echo 'whitelisted.label whitelisted' exit 0 fi delayed=U passed=U whitelisted=U TEMP_FILE=`mktemp -t munin-postgrey.XXXXXX` if [ -n "$TEMP_FILE" -a -f "$TEMP_FILE" ] then # get the newest entries with logtail and reduce the dataset with a first filter # FR: je pogne juste les entrees qui ont rapport, pour reduire la taille du tempfile # FR: logtail va chercher les dernieres entrees du mail_log en se basant sur le STATEFILE $LOGTAIL ${MAIL_LOG} $STATEFILE | egrep 'postgrey|Greylisted' > ${TEMP_FILE} delayed=`grep 'Recipient address rejected.*Greylisted' ${TEMP_FILE} | wc -l` passed=`grep 'postgrey\[[0-9]*\]: delayed [0-9]* seconds:' ${TEMP_FILE} | wc -l` whitelisted=`grep 'postgrey\[[0-9]*\]: whitelisted:' ${TEMP_FILE} | wc -l` /bin/rm -f $TEMP_FILE fi echo "delayed.value ${delayed}" echo "passed.value ${passed}" echo "whitelisted.value ${whitelisted}"