#!/bin/bash
##########################################################################
# nullmailer init script for RHEL.
# description: nullmailer is a simple internet mail transfer agent
# processname: nullmailer-send
##########################################################################

# chkconfig: 2345 80 30
# config: /etc/nullmailer

### BEGIN INIT INFO
# Provides: nullmailer MTA smtpdaemon
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop nullmailer-send
# Description: nullmailer-send is a simple internet mail transfer agent
### END INIT INFO

. /lib/lsb/init-functions
[ -f /etc/sysconfig/network ] && . /etc/sysconfig/network

PROG="nullmailer"
SENDER="/usr/sbin/$PROG-send"
CONFIG="/etc/$PROG/me"
PIDFILE=/var/run/$PROG/$PROG-send.pid

doconfig()

{
if [ ! -f $CONFIG ] ; then
  log_info_msg $"Configuring $PROG... "
  domain=`hostname -d`
  (
  echo "#email used as admin redirection"
  echo "#by nullmailer install process"
  echo "#-------------------------------------------"
  echo "#values set by $PROG init process, "`date`
  echo "root@$domain"
  echo "#-------------------------------------------"
  ) > /etc/$PROG/adminaddr
  (
  echo "#Host name as used by nullmailer and set"
  echo "#by nullmailer install process"
  echo "#-------------------------------------------"
  echo "#values set by $PROG init process, "`date`
  echo $domain
  echo "#-------------------------------------------"
  ) > $CONFIG
  remote=""
  if [ -n "$domain" ] ; then
    remote=`dig +short $domain MX	|			\
	    sort -n			|			\
	    cut -d ' ' -f2		|			\
	    sed -e "s/\.$//"`
    fi
  if [ -n "${remote}" ] ; then
    (
    echo "#-------------------------------------------"
    echo "#values set by $PROG install process, "`date`
    for dom in ${remote}
      do
      echo "${dom} smtp --starttls"
      done
    echo "#-------------------------------------------"
    ) >> /etc/$PROG/remotes
    fi
  evaluate_retval
  fi
}

checkstatus()

{
pidofproc -p $PIDFILE $SENDER > /dev/null
return $?
}

preload()

{
[ -x $SENDER ] || exit 5
[ -f $CONFIG ] || exit 6
}

start()

{
doconfig
preload
mkdir -p /run/$PROG
chown $PROG:$PROG /run/$PROG
log_info_msg $"Starting $PROG... "
start_daemon $SENDER -d
evaluate_retval
}

stop()

{
log_info_msg "Stopping $PROG... "
killproc -p $PIDFILE $SENDER
evaluate_retval
}

restart()

{
stop
sleep 1
start
}

reload()

{
restart
}

force_reload()

{
restart
}

checkstatus
running=$?

case "$1" in
  start)
    [ $running -eq 0 ] && exit 0
    $1
    ;;

  stop)
    [ $running -eq 0 ] || exit 0
    $1
    ;;

  reload)
    [ $running -eq 0 ] || exit 7
    $1
    ;;

  restart)
    $1
    ;;

  force-reload)
    force_reload
    ;;

  condrestart|try-restart)
    [ $running -eq 0 ] || exit 0
    restart
    ;;

  status)
    log_info_msg "$PROG status... "
    checkstatus
    evaluate_retval
    ;;

  *)
    echo "Usage: $0 {start|stop|status|restart|condrestart|status}"
    exit 2
    ;;
  esac

exit $?
