#!/bin/sh
#
# spfmilter    This shell script takes care of starting and stopping
#              spfmilter.
#
# chkconfig: 2345 79 31
# description: spfmilter is a mail filter that runs in conjunction with \
#              sendmail to check for forged sender addresses in incoming \
#              mail.
# processname: spfmilter
# config: /etc/mail/sendmail.cf /etc/sysconfig/spfmilter

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

# Source networking configuration.
[ -f /etc/sysconfig/network ] && . /etc/sysconfig/network

# Source spfmilter configuration.
SPFMILTER_OPTIONS=""
SPFMILTER_SOCKET=unix:/var/run/spfmilter/spfmilter.sock
SPFMILTER_PIDFILE=/var/run/spfmilter.pid
SPFMILTER_WHITELIST=/etc/mail/spfmilter-whitelist
SPFMILTER_FALLBACK=/etc/mail/spfmilter-fallback
export SPFMILTER_OPTIONS SPFMILTER_SOCKET SPFMILTER_PIDFILE SPFMILTER_WHITELIST SPFMILTER_FALLBACK
[ -f /etc/sysconfig/spfmilter ] && . /etc/sysconfig/spfmilter

# Check that networking is up.
[ "${NETWORKING}" = "no" ] && exit 0

[ -f /usr/sbin/sendmail ] || exit 0
[ -f /usr/sbin/spfmilter ] || exit 0

RETVAL=0

start() {
	if [ ! -f "$SPFMILTER_PIDFILE" ]; then
		echo -n $"Starting spfmilter: "
		touch "$SPFMILTER_PIDFILE"
		chown spfmilt:spfmilt "$SPFMILTER_PIDFILE"
		daemon /usr/sbin/spfmilter \
			--user spfmilt \
			--pidfile "$SPFMILTER_PIDFILE" \
			--fallback "$SPFMILTER_FALLBACK" \
			--whitelist "$SPFMILTER_WHITELIST" \
			$SPFMILTER_OPTIONS $SPFMILTER_SOCKET
		RETVAL=$?
		echo
		[ $RETVAL -eq 0 ] && touch /var/lock/subsys/spfmilter
	fi

	return $RETVAL
}

stop() {
	# Stop daemons
	echo -n $"Shutting down spfmilter: "
	killproc spfmilter
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] && rm -f "$SPFMILTER_PIDFILE"
	[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/spfmilter
	return $RETVAL
}

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

exit $RETVAL

