#!/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"

doconfig()

{
if [ ! -f /etc/${prog}/me ] ; 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}/dminaddr
  (
  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 "#-------------------------------------------"
  ) > /etc/${prog}/me
  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 ${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 ${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 $?
