#!/bin/sh
#
# amavisd:	A Mail Virus Scanner daemon
# chkconfig:	2345 80 30
# description:	AMaViSd snapshot from http://amavis.org/.
# processname: amavisd
# config: /etc/amavisd.conf
# pidfile: /var/run/amavis/amavisd.pid
#

USER=amavis
PROG=amavis
DAEMON=amavisd
NAME="AMaViS"
if [ -r /etc/sysconfig/$DAEMON ]; then
    . /etc/sysconfig/$DAEMON
fi

die()
{
    RET=$1
    shift
    echo "$@" >&2
    exit $RET
}

# Sanity checks.
[ -x /usr/sbin/$DAEMON ] || die 0 "/usr/sbin/$DAEMON not present"
[ -x /usr/sbin/$PROG-milter ] || die 0 "/usr/sbin/$PROG-milter not present"
[ -r /etc/$DAEMON.conf ] || die 0 "/etc/$DAEMON.conf not present"

# Source function library.
. /etc/rc.d/init.d/functions

RETVAL=

start() {
    echo -n $"Starting $NAME mail filter: "
    # This is needed to make sure that amavisd-milter doesn't get an
    # 'Address already in use' error.
    rm -f /var/run/$USER/$PROG-milter.sock

    # The 'daemon' function mangles su args - can't be bothered trying to
    # work out the quoting that's required.
    if su - $USER -c \
	"/usr/sbin/$PROG-milter -D -p local:/var/run/$USER/$PROG-milter.sock";
    then daemon true
    else daemon false
    fi
    RETVAL=$?
    echo

    echo -n $"Starting $NAME daemon: "
    daemon su - $USER -c /usr/sbin/$DAEMON
    RETVAL=${RETVAL-:$?}
    echo
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$DAEMON
}

stop() {
    echo -n $"Stopping $NAME daemon: "
    killproc $DAEMON
    RETVAL=$?
    echo

    echo -n $"Stopping $NAME mail filter: "
    killproc $PROG-milter
    RETVAL=${RETVAL-:$?}
    echo

    if [ $RETVAL -eq 0 ]; then
        rm -f /var/lock/subsys/$DAEMON
    fi
}

# See how we were called.
case "$1" in
    start|stop)
	$1
	;;
    status)
	status $DAEMON
	RETVAL=$?
        status $PROG-milter
	RETVAL=${RETVAL-:$?}
        ;;
    restart|reload)
	stop
	start
	;;
    condrestart)
	if [ -f /var/lock/subsys/$DAEMON ]; then
	    stop
	    start
	fi
	;;
    *)
	echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}"
	;;
esac
exit $RETVAL
