#!/bin/sh
#
# Return the number messages DENY'ed by each plugin in qpsmtpd configuration
# within the last 5 minutes
#
# By Rasmus Skaarup <dlog@gal.dk> - June 2007
#
#
# Magic markers - optional - used by installation scripts and
# munin-config:
#
#%# family=manual
#%# capabilities=autoconf

DLOG=/usr/local/dlog/bin/dodlog.pl
LOGDIR=/var/service/qpsmtpd/log/main/

CMD="$DLOG qpsmtpd raw $LOGDIR"

if [ "$1" = "autoconf" ]; then
        echo yes
        exit 0
fi

if [ "$1" = "config" ]; then

        echo 'graph_title qpsmtpd plugin statistics'
        echo 'graph_args --base 1000 -l 0 '
        echo 'graph_vlabel requests'
        echo 'graph_category Mail'
        echo 'graph_order dqpsm1 dqpsm2 dqpsm3 dqpsm4 dqpsm5 dqpsm6 dqpsm7 dqpsm8 dqpsm9 dqpsm10 dqpsm11 dqpsm12 dqpsm13 dqpsm14 dqpsm15 dqpsm16 dqpsm17 dqpsm18 dqpsm19 dqpsm20'
        echo 'dqpsm1.label resolvable_fromhost'
        echo 'dqpsm1.min 0'
        echo 'dqpsm1.draw LINE2'
        echo 'dqpsm2.label loop'
        echo 'dqpsm2.min 0'
        echo 'dqpsm2.draw LINE2'
        echo 'dqpsm3.label sender_permitted_from'
        echo 'dqpsm3.min 0'
        echo 'dqpsm3.draw LINE2'
        echo 'dqpsm4.label spamhelo'
        echo 'dqpsm4.min 0'
        echo 'dqpsm4.draw LINE2'
        echo 'dqpsm5.label relay'
        echo 'dqpsm5.min 0'
        echo 'dqpsm5.draw LINE2'
        echo 'dqpsm6.label spamassassin'
        echo 'dqpsm6.min 0'
        echo 'dqpsm6.draw LINE2'
        echo 'dqpsm7.label hosts_allow'
        echo 'dqpsm7.min 0'
        echo 'dqpsm7.draw LINE2'
        echo 'dqpsm8.label unrecognized_commands'
        echo 'dqpsm8.min 0'
        echo 'dqpsm8.draw LINE2'
        echo 'dqpsm9.label norelay'
        echo 'dqpsm9.min 0'
        echo 'dqpsm9.draw LINE2'
        echo 'dqpsm10.label badmailfrom'
        echo 'dqpsm10.min 0'
        echo 'dqpsm10.draw LINE2'
        echo 'dqpsm11.label virus'
        echo 'dqpsm11.min 0'
        echo 'dqpsm11.draw LINE2'
        echo 'dqpsm12.label tls'
        echo 'dqpsm12.min 0'
        echo 'dqpsm12.draw LINE2'
        echo 'dqpsm13.label whitelist_soft'
        echo 'dqpsm13.min 0'
        echo 'dqpsm13.draw LINE2'
        echo 'dqpsm14.label badmailfromto'
        echo 'dqpsm14.min 0'
        echo 'dqpsm14.draw LINE2'
        echo 'dqpsm15.label greylisting'
        echo 'dqpsm15.min 0'
        echo 'dqpsm15.draw LINE2'
        echo 'dqpsm16.label rhsbl'
        echo 'dqpsm16.min 0'
        echo 'dqpsm16.draw LINE2'
        echo 'dqpsm17.label badrcptto'
        echo 'dqpsm17.min 0'
        echo 'dqpsm17.draw LINE2'
        echo 'dqpsm18.label dnsbl'
        echo 'dqpsm18.min 0'
        echo 'dqpsm18.draw LINE2'
        echo 'dqpsm19.label earlytalker'
        echo 'dqpsm19.min 0'
        echo 'dqpsm19.draw LINE2'
        echo 'dqpsm20.label basicheaders'
        echo 'dqpsm20.min 0'
        echo 'dqpsm20.draw LINE2'
        exit 0

fi

OUTPUT=`$CMD`

RESOLVEFH=`echo "$OUTPUT" | grep resolvable_fromhost | grep DENY | cut -f 2 -d:`
LOOP=`echo "$OUTPUT" | grep loop | grep DENY | cut -f 2 -d:`
SENDERPF=`echo "$OUTPUT" | grep sender_permitted_from | grep DENY | cut -f 2 -d:`
SPAMHELO=`echo "$OUTPUT" | grep spamhelo | grep DENY | cut -f 2 -d:`
RELAY=`echo "$OUTPUT" | grep check_relay | grep DENY | cut -f 2 -d:`
SPAMASS=`echo "$OUTPUT" | grep spamassassin | grep DENY | cut -f 2 -d:`
HOSTSALLOW=`echo "$OUTPUT" | grep hosts_allow | grep DENY | cut -f 2 -d:`
UNREGCOM=`echo "$OUTPUT" | grep unrecognized_commands | grep DENY | cut -f 2 -d:`
NORELAY=`echo "$OUTPUT" | grep norelay | grep DENY | cut -f 2 -d:`
BADMAILFROM=`echo "$OUTPUT" | grep "badmailfrom " | grep DENY | cut -f 2 -d:`
VIRUS=`echo "$OUTPUT" | grep "aveclient|bitdefender|clamav|clamdscan|hbedv|kavscanner|klez_filter|sophie|uvscan" | grep DENY | cut -f 2 -d:`
TLS=`echo "$OUTPUT" | grep tls | grep DENY | cut -f 2 -d:`
WHITELIST=`echo "$OUTPUT" | grep whitelist_soft | grep DENY | cut -f 2 -d:`
BADMAILFROMTO=`echo "$OUTPUT" | grep badmailfromto | grep DENY | cut -f 2 -d:`
GREYLIST=`echo "$OUTPUT" | grep greylisting | grep DENY | cut -f 2 -d:`
RHSBL=`echo "$OUTPUT" | grep rhsbl | grep DENY | cut -f 2 -d:`
BADRCPTTO=`echo "$OUTPUT" | grep badrcptto | grep DENY | cut -f 2 -d:`
DNSBL=`echo "$OUTPUT" | grep dnsbl | grep DENY | cut -f 2 -d:`
EARLYTALKER=`echo "$OUTPUT" | grep earlytalker | grep DENY | cut -f 2 -d:`
BASICH=`echo "$OUTPUT" | grep basicheaders | grep DENY | cut -f 2 -d:`

if [ "$RESOLVEFH" = "" ]; then
  RESOLVEFH=0
fi
if [ "$LOOP" = "" ]; then
  LOOP=0
fi
if [ "$SENDERPF" = "" ]; then
  SENDERPF=0
fi
if [ "$SPAMHELO" = "" ]; then
  SPAMHELO=0
fi
if [ "$RELAY" = "" ]; then
  RELAY=0
fi
if [ "$SPAMASS" = "" ]; then
  SPAMASS=0
fi
if [ "$HOSTSALLOW" = "" ]; then
  HOSTSALLOW=0
fi
if [ "$UNREGCOM" = "" ]; then
  UNREGCOM=0
fi
if [ "$NORELAY" = "" ]; then
  NORELAY=0
fi
if [ "$BADMAILFROM" = "" ]; then
  BADMAILFROM=0
fi
if [ "$VIRUS" = "" ]; then
  VIRUS=0
fi
if [ "$TLS" = "" ]; then
  TLS=0
fi
if [ "$WHITELIST" = "" ]; then
  WHITELIST=0
fi
if [ "$BADMAILFROMTO" = "" ]; then
  BADMAILFROMTO=0
fi
if [ "$GREYLIST" = "" ]; then
  GREYLIST=0
fi
if [ "$RHSBL" = "" ]; then
  RHSBL=0
fi
if [ "$BADRCPTTO" = "" ]; then
  BADRCPTTO=0
fi
if [ "$DNSBL" = "" ]; then
  DNSBL=0
fi
if [ "$EARLYTALKER" = "" ]; then
  EARLYTALKER=0
fi
if [ "$BASICH" = "" ]; then
  BASICH=0
fi

echo  "dqpsm1.value $RESOLVEFH"
echo  "dqpsm2.value $LOOP"
echo  "dqpsm3.value $SENDERPF"
echo  "dqpsm4.value $SPAMHELO"
echo  "dqpsm5.value $RELAY"
echo  "dqpsm6.value $SPAMASS"
echo  "dqpsm7.value $HOSTSALLOW"
echo  "dqpsm8.value $UNREGCOM"
echo  "dqpsm9.value $NORELAY"
echo  "dqpsm10.value $BADMAILFROM"
echo  "dqpsm11.value $VIRUS"
echo  "dqpsm12.value $TLS"
echo  "dqpsm13.value $WHITELIST"
echo  "dqpsm14.value $BADMAILFROMTO"
echo  "dqpsm15.value $GREYLIST"
echo  "dqpsm16.value $RHSBL"
echo  "dqpsm17.value $BADRCPTTO"
echo  "dqpsm18.value $DNSBL"
echo  "dqpsm19.value $EARLYTALKER"
echo  "dqpsm20.value $BASICH"
