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