#!/bin/sh
# Check if zmailer is working properly
# Limitations are to be configured in /etc/zmailer/zmailer.conf
set -e
. /etc/zmailer/zmailer.conf
status()
{
LOAD=`awk '{print $2*100}' /proc/loadavg`
if [ $LOAD -gt $MAX_LOAD ]; then
REASON="System Load"
fi
for i in router scheduler; do
if [ ! -f $POSTOFFICE/.pid.$i ]; then
REASON="$i dead. Pidfile $POSTOFFICE/.pid.$i missing"
else
X=`cat $POSTOFFICE/.pid.$i`
if [ ! -d /proc/$X ]; then
REASON="$i dead. Process $X not running"
fi
fi
done
ps ax >/tmp/$$
if ! grep -q smtpserver /tmp/$$; then
REASON="No smtpserver running"
fi
mailq -ss >/tmp/$$ 2>&1
if grep -q "Connection refused" /tmp/$$; then
REASON="Zmailer not responding to mail queue status request"
return
fi
if ! grep -q "router queue" /tmp/$$; then
REASON="Zmailer queue status request failed"
return
fi
NR=`awk '/in router/ {print $1}' /tmp/$$`
NT=`awk '/in transport/ {print $1}' /tmp/$$`
if [ $NR -gt $MAX_NR ]; then
REASON="Router Queue too high"
fi
if [ $NT -gt $MAX_NT ]; then
REASON="Transport Queue too high"
fi
}
report()
{
echo -e "\nUnix Operational Status:"
echo "------------------------"
w
ps ax
echo -e "\nCurrent Zmailer Status:"
echo "------------------------"
mailq -sQ
}
status
if [ "$REASON" ]; then
report 2>&1| mail postmaster -s"Zmailer Alert:$REASON"
fi
rm /tmp/$$
exit 0
syntax highlighted by Code2HTML, v. 0.9.1