#!/bin/sh
#
# postgrey Postfix greylisting policy server
#
# chkconfig: - 79 31
# description: Postfix greylisting policy server
# processname: postgrey
# pidfile: /var/run/greylist.pid

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

# Source networking configuration.
. /etc/sysconfig/network

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

# Options file
[ -r /etc/sysconfig/postgrey ] && . /etc/sysconfig/postgrey

prog=postgrey
OPTIONS="--daemonize --unix=/var/spool/postfix/postgrey/socket $OPTIONS"
RETVAL=0

automagic() {
	[ "$AUTOMAGIC" == "off" ] && return
	[ ! -x /bin/sed ] && return

	TEXTCHECK=`echo $OPTIONS | grep greylist-text`
	if [ -z $TEXTCHECK ]; then
		URL=`grep "^redirect_url" /etc/product 2>/dev/null | /bin/sed 's/.*=[[:space:]]*//'`
		NAME=`grep "^name" /etc/product 2>/dev/null | /bin/sed 's/.*=[[:space:]]*//'`
		DOMAIN=`grep ^mydomain /etc/postfix/main.cf 2>/dev/null | /bin/sed 's/.*=[[:space:]]*//'`
		[ -n "$URL" ] && [ -n "$NAME" ] && [ -n "$DOMAIN" ] && OPTIONS="$OPTIONS --greylist-text \"Greylisted by $NAME, see $URL/greylist/$DOMAIN\""
	fi
}

start() {
	echo -n $"Starting $prog: "
	automagic
	daemon postgrey $OPTIONS
	RETVAL=$?
	echo
	[ $RETVAL = 0 ] && touch /var/lock/subsys/postgrey
	return $RETVAL
}
stop() {
	echo -n $"Stopping $prog: "
	killproc postgrey
	RETVAL=$?
	echo
	[ $RETVAL = 0 ] && rm -f /var/lock/subsys/postgrey /var/run/postgrey.pid
}

restart() {
	stop
	start
}

reload() {
	echo -n $"Reloading $prog: "
	killproc postgrey -HUP
	RETVAL=$?
	echo
	return $RETVAL
}
 
# See how we were called.
case "$1" in
  start)
		start
	;;
  stop)
		stop
	;;
  restart)
		stop
		start
	;;
  reload)
		reload
	;;
	condrestart)
		[ -f /var/lock/subsys/postgrey ] && restart || :
	;;
  status)
  	status postgrey
	;;
  *)
	echo "Usage: $prog {start|stop|restart|reload|status}"
	exit 1
esac

exit $?
