North American Network Operators Group

Date Prev | Date Next | Date Index | Thread Index | Author Index | Historical

Re: Email Complexes

  • From: james edwards
  • Date: Tue Sep 14 17:25:06 2004

> Why can't you already tell if you aren't getting through to
> major providers? Wouldn't your queues backup, or are you being
> blocked and the messages are being rejected and you are trying
> to track that?

It is all in the mail logs. Here is a quick hack to take a peak at your mail
queue (for sendmail)
& it should not be hard to get provider names that are backed up in your
queue:

#!/bin/sh
# Do the Mqueues
ls -d /var/spool/mqueue* | while read queue_name
do
        total=`(cd $queue_name ; find . -name 'q*' -print | wc -l )`
        deferred=`(cd $queue_name ; find . -name 'q*' -exec grep MDeferred
"{}" ";" | wc -l )`
        deferred=`echo "$deferred 2 / p " | dc`
        deferred_400=`(cd $queue_name ; find . -name 'q*' -exec egrep -e
'MDeferred: 4[0-9][0-9]' "{}" ";" | wc -l )`
        deferred_400=`echo "$deferred_400 2 / p " | dc`

        deferred_refused=`(cd $queue_name ; find . -name 'q*' -exec egrep -e
'MDeferred: Connection refused' "{}" ";" | wc -l )`
        deferred_refused=`echo "$deferred_refused 2 / p " | dc`

        deferred_reset=`(cd $queue_name ; find . -name 'q*' -exec egrep -e
'MDeferred: Connection reset' "{}" ";" | wc -l )`
        deferred_reset=`echo "$deferred_reset 2 / p " | dc`

        deferred_timeout=`(cd $queue_name ; find . -name 'q*' -exec egrep -e
'MDeferred: Connection timed out' "{}" ";"  | wc -l )`
        deferred_timeout=`echo "$deferred_timeout 2 / p " | dc`

        echo
"===========================================================================
"
        echo "Stats for: $queue_name"
        echo "Total messages in queue   : $total"
        echo "Total messages in deferred: $deferred"
        echo "Total messages 400 error: $deferred_400"
        echo "Total messages conn. refused: $deferred_refused"
        echo "Total messages conn. reset: $deferred_reset"
        echo "Total messages conn. timeout: $deferred_timeout"
        echo "Total messages deferred other: `echo "$deferred_400
$deferred_refused $deferred_reset $deferred_timeout $total - - - - p" | dc`"
        echo
"===========================================================================
"
done