diff --git a/plugins/other/amavis b/plugins/other/amavis new file mode 100755 index 00000000..f650319f --- /dev/null +++ b/plugins/other/amavis @@ -0,0 +1,81 @@ +#!/bin/sh +# +# Plugin to monitor the amavis mail filter. +# +# Parameters understood: +# +# config (required) +# autoconf (optional) +# +# Config variables: +# +# amavislog - file where amavis logs are written +# +# $Log: amavis,v $ +# Revision 1.2 2007/04/02 11:30:55 cvserver +# Logtail in a variable +# + +mktempfile () { +mktemp -t /tmp +} + +AMAVIS_LOG=${logfile:-/var/log/amavis.log} +LOGTAIL=${logtail:-`which logtail`} +STATEFILE=/usr/local/var/munin/plugin-state/amavis.offset + +if [ "$1" = "autoconf" ]; then + if [ -f "${AMAVIS_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 Amavis filter statistics' + echo 'graph_order virus spam_maybe spam_sure total' + echo 'graph_vlabel nb' + echo 'virus.label virus' + echo 'spam_maybe.label probably spam' + echo 'spam_sure.label surely spam' + echo 'total.label total' + exit 0 +fi + +total=U +virus=U +spamm=U +spams=U + +ARGS=0 +`$LOGTAIL /etc/hosts 2>/dev/null >/dev/null` +if [ $? = 66 ]; then + if [ ! -n "$logtail" ]; then + ARGS=1 + fi +fi + +TEMP_FILE=`mktempfile munin-amavis.XXXXXX` + +if [ -n "$TEMP_FILE" -a -f "$TEMP_FILE" ] +then + if [ $ARGS != 0 ]; then + $LOGTAIL ${AMAVIS_LOG} $STATEFILE | grep 'amavis\[.*\]:' > ${TEMP_FILE} + else + $LOGTAIL ${AMAVIS_LOG} $STATEFILE | grep 'amavis\[.*\]:' > ${TEMP_FILE} + fi + total=`cat ${TEMP_FILE} | wc -l` + virus=`grep INFECTED ${TEMP_FILE} | wc -l` + spamm=`grep 'Passed.*Hits: 1[0-9][.]' ${TEMP_FILE} | wc -l` + spams=`grep 'Passed.*Hits: [2-9][0-9][0-9]*[.]' ${TEMP_FILE} | wc -l` + + /bin/rm -f $TEMP_FILE +fi + +echo "virus.value ${virus}" +echo "spam_maybe.value ${spamm}" +echo "spam_sure.value ${spams}" +echo "total.value ${total}"