#!/bin/sh DEBUG=1 DEBUG= SPAMD_ROOT=/usr/local/debug/mail/spamassassin [ -f ${SPAMD_ROOT}/rc.conf.sa.default ] && . ${SPAMD_ROOT}/rc.conf.sa.default [ -f ${SPAMD_ROOT}/rc.conf.sa ] && . ${SPAMD_ROOT}/rc.conf.sa [ -f /etc/rc.conf ] && . /etc/rc.conf PID_FILE=${spamd_pidfile} [ -z "${PID_FILE}" ] && PID_FILE=${SPAMD_PID} [ ! -z "${DEBUG}" ] && echo "PID_FILE: ${PID_FILE}" [ -f /opt/csw/lib/svc/method/svc-spamd ] && INIT_SCRIPT="/opt/csw/lib/svc/method/svc-spamd" [ -f /etc/rc.spamd ] && INIT_SCRIPT="/etc/rc.spamd" [ -f /usr/local/etc/rc.d/sa-spamd.sh ] && INIT_SCRIPT="/usr/local/etc/rc.d/sa-spamd.sh" [ -f /usr/local/etc/rc.d/sa-spamd ] && INIT_SCRIPT="/usr/local/etc/rc.d/sa-spamd" [ -f /etc/rc.d/init.d/spamassassin ] && INIT_SCRIPT="/etc/rc.d/init.d/spamassassin" [ -f /sbin/service ] && INIT_SCRIPT="/sbin/service spamassassin" [ -z "${INIT_SCRIPT}" ] && (echo "spamd startup script not found" ; exit 255) [ -f /usr/bin/grep ] && GREP=/usr/bin/grep [ -f /bin/grep ] && GREP=/bin/grep [ -z "${GREP}" ] && GREP=`which grep 2>/dev/null` [ -z "${GREP}" ] && (echo "grep not found" ; exit 255) PS="/bin/ps axuw" [ "`uname`" = "OpenBSD" ] && PS="/bin/ps -axuw" [ "`uname`" = "SunOS" ] && PS="/bin/ps -lef" CHECK_LISTENER="netstat -napl | grep :783" [ "`uname`" = "FreeBSD" ] && CHECK_LISTENER="echo '' | nc localhost 783" NEED_RESTART= if [ ! -f ${PID_FILE} ] ; then NEED_RESTART=YES echo "couldn't find pid file ${PID_FILE}" else PID=`/bin/cat ${PID_FILE} | /usr/bin/head -n 1` if [ -z "${PID}" ] ; then NEED_RESTART=YES echo "empty pid file ${PID_FILE}" else if [ -z "`${PS} | ${GREP} \" ${PID} \" | ${GREP} -v grep`" ] ; then NEED_RESTART=YES echo "couldn't find spamd process" else if [ -z "`sockstat -4 -l | grep :783`" ] ; then NEED_RESTART=YES echo "nobody listen port 783 on lopback interface" else SOCKET_OUTPUT=`${CHECK_LISTENER}` RETVAL=$? if [ ! $RETVAL -eq 0 ] ; then NEED_RESTART=YES echo "non zero return code from spamd socket" else if [ -z "${SOCKET_OUTPUT}" ] ; then NEED_RESTART=YES echo "empty output from spamd socket" fi fi fi fi fi fi exit if [ ! -z "${NEED_RESTART}" ] ; then [ ! -z "${DEBUG}" ] && echo "> ${INIT_SCRIPT} stop >/dev/null" ${INIT_SCRIPT} stop >/dev/null [ ! -z "${DEBUG}" ] && echo "> sleep 1" /bin/sleep 1 [ ! -z "${DEBUG}" ] && echo "> ${INIT_SCRIPT} start" ${INIT_SCRIPT} start fi