#!/bin/sh # # mailscanner This shell script takes care of starting and stopping # MailScanner, and its associated copies of sendmail. # # chkconfig: 2345 80 30 # description: MailScanner is an open-source E-Mail Gateway Virus Scanner. # processname: mailscanner # config: /usr/local/MailScanner/etc/mailscanner.conf # pidfile: /usr/local/MailScanner/var/virus.pid # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Source mailscanner configureation. if [ -f /etc/sysconfig/mailscanner ] ; then . /etc/sysconfig/mailscanner else QUEUETIME=15m fi # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 [ -f /usr/local/MailScanner/bin/check_mailscanner ] || exit 0 [ -f /usr/sbin/sendmail ] || exit 0 RETVAL=0 # See how we were called. case "$1" in start) # Start daemons. echo 'Starting MailScanner daemons:' /usr/bin/newaliases > /dev/null 2>&1 for i in virtusertable access domaintable mailertable ; do if [ -f /etc/mail/$i ] ; then makemap hash /etc/mail/$i < /etc/mail/$i fi done echo -n ' incoming sendmail: ' /usr/sbin/sendmail -bd -ODeliveryMode=queueonly \ -OQueueDirectory=/var/spool/mqueue.in success echo echo -n ' outgoing sendmail: ' /usr/sbin/sendmail $([ -n "$QUEUETIME" ] && echo -q$QUEUETIME) success echo echo -n ' MailScanner: ' /usr/local/MailScanner/bin/check_mailscanner >/dev/null RETVAL=$? [ $RETVAL -eq 0 ] && touch /var/lock/subsys/mailscanner success echo ;; stop) # Stop daemons. echo 'Shutting down MailScanner daemons:' echo -n ' MailScanner: ' killproc mailscanner echo echo -n ' incoming sendmail: ' killproc sendmail 2>/dev/null echo echo -n ' outgoing sendmail: ' killproc /usr/sbin/sendmail 2>/dev/null RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/mailscanner ;; status) # Work out if all of MailScanner is running echo 'Checking MailScanner daemons:' echo -n ' MailScanner: ' pid=`pidofproc mailscanner` if [ -z "$pid" ] ; then failure; else success; fi echo # Now the incoming sendmail echo -n ' incoming sendmail: ' pid=`ps ax | grep 'sendmai[l]: accepting connections'` if [ -z "$pid" ] ; then failure; else success; fi echo # Now the outgoing sendmail echo -n ' outgoing sendmail: ' # More complex regexp to handle other RedHats pid=`ps ax | egrep '\[sendmail\]|sendmai[l] -q[0-9]*[mhd]'` if [ -z "$pid" ] ; then failure; else success; fi echo ;; restart|reload) $0 stop sleep 2 $0 start RETVAL=$? ;; *) echo "Usage: mailscanner {start|stop|status|restart}" exit 1 esac exit $RETVAL