#!/bin/sh # Sendmail and Procmail log file analyzer # If no parameters are given, use current log file if [ ${#} = 0 ]; then SUFFIX="" SUBDIR="" elif [ $# -eq 1 ]; then SUFFIX=".$1" SUBDIR="backup" else echo "Usage: $0 [log file number]" exit 1 fi SM_LOG_FILE=/var/log/${SUBDIR}/mail.log${SUFFIX} PM_LOG_FILE=/var/log/${SUBDIR}/procmail.log${SUFFIX} # Computes a ratio # arg 1: numerator # arg 2: denumerator hv_ratio() { echo $(( ( ( ${1} * 100000 ) / ${2} ) / 1000 )) } # Sendmail (MTA) statistics SM_REJECTED=$(cat ${SM_LOG_FILE} | grep 'ruleset=' | wc -l) SM_ACCEPTED=$(cat ${SM_LOG_FILE} | grep 'stat=Sent' | grep 'mailer=local' | wc -l) SM_TOTAL=$(( ${SM_REJECTED} + ${SM_ACCEPTED} )) # Procmail (MDA) statistics SPAM_COUNT=$(cat ${PM_LOG_FILE} | grep 'procmail: Match on \"\^X-Spam-Status: Yes' | wc -l) HAM_COUNT=$(cat ${PM_LOG_FILE} | grep 'procmail: No match on \"\^X-Spam-Status: Yes' | wc -l) SA_TOTAL=$(( ${SPAM_COUNT} + ${HAM_COUNT} )) echo "Sendmail statistics (MTA):" echo " Accepted: $((${SM_ACCEPTED}))" echo " Total: ${SM_TOTAL}" echo " Ratio: $(hv_ratio ${SM_ACCEPTED} ${SM_TOTAL})%" echo "SpamAssassin statistics:" echo " Spam: $((${SPAM_COUNT}))" echo " Total: ${SA_TOTAL}" echo " Ratio: $(hv_ratio ${SPAM_COUNT} ${SA_TOTAL})%" exit 0