#!/bin/bash
#
# sendmail      This shell script takes care of starting and stopping
#               sendmail.
#
# chkconfig: 2345 80 30
# description: Sendmail is a Mail Transport Agent, which is the program \
#              that moves mail from one machine to another.
# processname: sendmail
# config: /etc/mail/sendmail.cf
# pidfile: /var/run/sendmail.pid

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

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

# Source sendmail configureation.
if [ -f /etc/sysconfig/sendmail ] ; then
	. /etc/sysconfig/sendmail
else
	DAEMON=no
	QUEUE=1h
fi
[ -z "$SMQUEUE" ] && SMQUEUE="$QUEUE"
[ -z "$SMQUEUE" ] && SMQUEUE=1h

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

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

RETVAL=0
prog="sendmail"

start() {
	# Start daemons.

	echo -n $"Starting $prog: "
	if test -x /usr/bin/make -a -f /etc/mail/Makefile ; then
	  make all -C /etc/mail -s > /dev/null
	else
	  for i in virtusertable access domaintable mailertable ; do
	    if [ -f /etc/mail/$i ] ; then
		makemap hash /etc/mail/$i < /etc/mail/$i
	    fi
	  done
	fi
	/usr/bin/newaliases > /dev/null 2>&1
	daemon /usr/sbin/sendmail $([ "x$DAEMON" = xyes ] && echo -bd) \
			$([ -n "$QUEUE" ] && echo -q$QUEUE) $SENDMAIL_OPTARG
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/sendmail

	if ! test -f /var/run/sm-client.pid ; then
	echo -n $"Starting sm-client: "
	touch /var/run/sm-client.pid
	chown smmsp:smmsp /var/run/sm-client.pid
	if [ -x /usr/sbin/selinuxenabled ] && /usr/sbin/selinuxenabled; then
	    /sbin/restorecon /var/run/sm-client.pid
	fi
	daemon --check sm-client /usr/sbin/sendmail -L sm-msp-queue -Ac \
			-q$SMQUEUE $SENDMAIL_OPTARG
	RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/sm-client
        fi

	return $RETVAL
}

reload() {
	# Stop daemons.
    	echo -n $"reloading $prog: "
	/usr/bin/newaliases > /dev/null 2>&1
	if [ -x /usr/bin/make -a -f /etc/mail/Makefile ]; then
	  make all -C /etc/mail -s > /dev/null
	else
	  for i in virtusertable access domaintable mailertable ; do
	    if [ -f /etc/mail/$i ] ; then
		makemap hash /etc/mail/$i < /etc/mail/$i
	    fi
	  done
	fi
	daemon /usr/sbin/sendmail $([ "x$DAEMON" = xyes ] && echo -bd) \
	    $([ -n "$QUEUE" ] && echo -q$QUEUE)
	RETVAL=$?
	killproc sendmail -HUP
	RETVAL=$?
	echo
	if [ $RETVAL -eq 0 -a -f /var/run/sm-client.pid ]; then
		echo -n $"reloading sm-client: "
		killproc sm-client -HUP
		RETVAL=$?
		echo
	fi
	return $RETVAL
}

stop() {
	# Stop daemons.
	if test -f /var/run/sm-client.pid ; then
		echo -n $"Shutting down sm-client: "
		killproc sm-client
		RETVAL=$?
		echo
		[ $RETVAL -eq 0 ] && rm -f /var/run/sm-client.pid
		[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/sm-client
	fi
	echo -n $"Shutting down $prog: "
	killproc sendmail
	RETVAL=$?
	echo
	[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/sendmail
	return $RETVAL
}

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

exit $RETVAL
