#!/bin/bash # # Made by Stefan Bühler, Switzerland # Monitor blocked Mails during Postfix RBL Scan, included Spamhaus, Spamcop, Manitu, MSRBL, NJABL # Allow user to specify logfile through env.logfile LOGFILE=${logfile:-/var/log/mail.log} DATE=`date '+%b %e %H'` MAXLABEL=20 get_blocked_by_domain_count() { local escaped_domain # escape dots - for a proper regular expression escaped_domain=$(echo "$1" | sed 's/\./\\./g') grep -c "$DATE.*blocked using [^ ]*${escaped_domain}" "$LOGFILE" } if [ "$1" = "autoconf" ]; then if [ -r "$LOGFILE" ]; then echo yes else echo "no (log file not found: $LOGFILE)" fi exit 0 fi if [ "$1" = "config" ]; then echo 'graph_title RBL Counter' echo 'graph_category mail' echo 'graph_args --base 1000 -l 0' echo 'graph_vlabel block during RBL' echo 'spamhaus.label Blocked by Spamhaus.org' echo 'spamcop.label Blocked by Spamcop' echo 'manitu.label Blocked by manitu.net' echo 'msrbl.label Blocked by msrbl.net' echo 'njabl.label Blocked by njabl.org' exit 0 fi printf 'spamhaus.value %s\n' "$(get_blocked_by_domain_count "sbl-xbl.spamhaus.org")" printf 'spamcop.value %s\n' "$(get_blocked_by_domain_count "bl.spamcop.net")" printf 'manitu.value %s\n' "$(get_blocked_by_domain_count "ix.dnsbl.manitu.net")" printf 'msrbl.value %s\n' "$(get_blocked_by_domain_count "combined.rbl.msrbl.net")" printf 'njabl.value %s\n' "$(get_blocked_by_domain_count "combined.njabl.org")"