#!/usr/local/bin/ksh set -o xtrace INPUT="$1" GREET=0 SMTPD=0 REJECT=0 SESSIONS=0 VERBOSE=0 TIME=0 if [[ $# -eq 0 ]]; then echo "$0 INPUTFILE(S) [-v(erbose) | -t(ai)]" exit 1 fi if [[ $# -gt 0 ]]; then [[ "$1" == "-v" ]] && VERBOSE=1 && INPUT="$2" [[ "$1" == "-t" ]] && VERBOSE=1 && TIME=1 && INPUT="$2" [[ "$2" == "-v" ]] && VERBOSE=1 [[ "$2" == "-t" ]] && VERBOSE=1 && TIME=1 fi GREETDELAY=$(grep -n "greetdelay" ${INPUT} 2>/dev/null | tr ' ' '_') if [[ $(echo "$GREETDELAY" | wc -w) -eq 0 ]]; then echo "No greetdelayed connections encountered [$(date)]." exit 0 fi for LINE in $GREETDELAY do # echo "L: $LINE" LINENO=${LINE%%:*} # echo "LL $LINENO" SMTPD=$(($SMTPD+1)) IP=$(echo "$LINE" | cut -d "_" -f3) PID=$(echo "$LINE" | cut -d "_" -f5) PID=$(echo $PID | tr -d ":") # echo $IP $PID # QMAIL=$(tail -n +$LINENO $INPUT 2>/dev/null | grep "qmail-smtpd: pid $PID" | grep "$IP") QMAIL=$(eval grep "qmail-smtpd: pid $PID" ${INPUT} 2>/dev/null | grep "$IP") [[ "x$QMAIL" != "x" ]] && SESSIONS=$(($SESSIONS+1)) if [[ "x$QMAIL" == "x" ]]; then if [[ $VERBOSE -eq 1 ]]; then DNSNAME=$(dnsname $IP) if [[ $TIME -eq 1 ]]; then LINE=$(echo "${LINE#*:}" | tai64nlocal | tr '_' ' ') else LINE=$(echo "${LINE#*:}" | cut -d " " -f3- | tr '_' ' ') fi echo "Greetdelay discouraged: $LINE [$DNSNAME]" fi GREET=$(($GREET+1)) fi done echo "Connections [$(date)]: $SMTPD -- Greetdelayed: $GREET -- SMTP Sessions: $SESSIONS [$SECONDS secs]" exit 0