#!/bin/bash
#
# amavisd-milter - Sendmail milter for amavisd-new using the AM.PDP protocol
#
# chkconfig: - 80 30
# description: The amavisd-milter is a sendmail milter (mail filter) for amavisd-new \
#              2.4.3 (and above) and sendmail 8.13 (and above) which use the new AM.PDP \
#              protocol.
# config: /etc/sysconfig/amavisd-milter
# pidfile: /var/run/amavisd/amavisd-milter.pid

### BEGIN INIT INFO
# Provides: amavisd-milter
# Required-Start: $local_fs $network amavisd
# Required-Stop: $local_fs $network amavisd
# Default-Start: 
# Default-Stop: 0 1 6
# Short-Description: Sendmail milter for amavisd-new using the AM.PDP protocol
# Description: The amavisd-milter is a sendmail milter (mail filter) for amavisd-new
#              2.4.3 (and above) and sendmail 8.13 (and above) which use the new AM.PDP
#              protocol.
### END INIT INFO

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

prog="Amavisd Milter"
exec="/usr/sbin/amavisd-milter"
user="amavis"
lockfile="/var/lock/subsys/amavisd-milter"
pidfile="/var/run/amavisd/amavisd-milter.pid"

[ -e /etc/sysconfig/amavisd-milter ] && . /etc/sysconfig/amavisd-milter

SOCKET="${SOCKET:-/var/run/amavisd/amavisd-milter.sock}"
MAX_CONNECTIONS=${MAX_CONNECTIONS:-0}
MAX_WAIT=${MAX_WAIT:-300}
MAILDAEMON_TIMEOUT=${MAILDAEMON_TIMEOUT:-600}
AMAVISD_TIMEOUT=${AMAVISD_TIMEOUT:-600}

start() {
    [ -x $exec ] || exit 5
    umask 0007
    echo -n $"Starting $prog: "
    daemon --user $user $exec -s $SOCKET -m $MAX_CONNECTIONS -M $MAX_WAIT -t $MAILDAEMON_TIMEOUT -T $AMAVISD_TIMEOUT $AMAVISD_OPTIONS
    RETVAL=$?
    [ $RETVAL -eq 0 ] && touch $lockfile
    echo
    return $RETVAL
}

stop() {
    echo -n $"Stopping $prog: "
    killproc -p $pidfile $exec -TERM
    RETVAL=$?
    [ $RETVAL -eq 0 ] && rm -f $lockfile
    echo
    return $RETVAL
}

rh_status() {
    status -p $pidfile $exec
}

rh_status_q() {
    rh_status > /dev/null 2>&1
}

case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart)
        stop
        start
        ;;
    reload)
        rh_status_q || exit 7
        exit 3
        ;;
    force-reload)
        restart
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
        stop
        start
        ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|force-reload}"
        exit 2
esac

exit $?
