Bug#564832: exim4-daemon-heavy: exim4-base 4.71.3 - start and stop runlevels changed, warnings ..

Suresh Ramasubramanian suresh at hserus.net
Sun Jan 24 15:28:42 UTC 2010


Andreas Metzler [24/01/10 16:18 +0100]:
>Ok. Would you mind sending it to the bts, so we have a complete file
>when I re-assign to insserv.

Below. Only change is QUEUEINTERVAL was changed to 15m from the default 30m

	srs

#! /bin/sh
# /etc/init.d/exim4
#
# Written by Miquel van Smoorenburg <miquels at drinkel.ow.org>.
# Modified for Debian GNU/Linux by Ian Murdock <imurdock at gnu.ai.mit.edu>.
# Modified for exim by Tim Cutts <timc at chiark.greenend.org.uk>
# Modified for exim4 by Andreas Metzler <ametzler at downhill.at.eu.org>
#                   and Marc Haber <mh+debian-packages at zugschlus.de>

### BEGIN INIT INFO
# Provides:          exim4
# Required-Start:    $remote_fs $syslog $named $network $time
# Required-Stop:     $remote_fs $syslog $named $network
# Should-Start:      postgresql mysql clamav-daemon greylist spamassassin
# Should-Stop:       postgresql mysql clamav-daemon greylist spamassassin
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: exim Mail Transport Agent
# Description:       exim is a Mail Transport agent
### END INIT INFO

set -e

if [ -r "/lib/lsb/init-functions" ]; then
   . /lib/lsb/init-functions
else
   echo "E: /lib/lsb/init-functions not found, lsb-base (>= 3.0-6) needed"
   exit 1
fi

if [ -n "$EX4DEBUG" ]; then
   echo "now debugging $0 $@"
   set -x
fi

LANG=C
export LANG

#read default file
QUEUERUNNER='combined'
QUEUEINTERVAL='15m'
UPEX4OPTS=''
PIDFILE="/var/run/exim4/exim.pid"
QRPIDFILE="/var/run/exim4/eximqr.pid"
[ -f /etc/default/exim4 ] && . /etc/default/exim4

upex4conf() {
   UPEX4CONF="update-exim4.conf"
   OLDIFS="$IFS"
   IFS=:
   for p in $PATH; do
     if [ -x "$p/$UPEX4CONF" ]; then
       IFS="$OLDIFS"
       $p/$UPEX4CONF $UPEX4OPTS
       return 0
     fi
   done
   IFS="$OLDIFS"
}

# Exit if exim runs from /etc/inetd.conf
if [ -f /etc/inetd.conf ] && grep -E -q '^[[:space:]]*((\*|[[:alnum:].-]+):)?smtp[[:space:]]' /etc/inetd.conf
then
   upex4conf
   exit 0
fi


DAEMON="/usr/sbin/exim4"
NAME="exim4"

##test -x $DAEMON || exit 0
test -x /usr/lib/exim4/exim4 || exit 0

# this is from madduck on IRC, 2006-07-06
# There should be a better possibility to give daemon error messages
# and/or to log things
log()
{
   case "$1" in
     [[:digit:]]*) success=$1; shift;;
     *) :;;
   esac
   log_action_begin_msg "$1"; shift
   log_action_end_msg ${success:-0} "$*"
}

start_exim()
{
   [ -e /var/run/exim4 ] || \
     install -d -oDebian-exim -gDebian-exim -m750 /var/run/exim4
   case ${QUEUERUNNER} in
     combined)
       start_daemon -p "$PIDFILE" \
         "$DAEMON" -bd "-q${QFLAGS}${QUEUEINTERVAL}" \
         ${COMMONOPTIONS} \
         ${QUEUERUNNEROPTIONS} \
         ${SMTPLISTENEROPTIONS}
       log_progress_msg "exim4"
       ;;
     separate)
       start_daemon -p "$PIDFILE" \
         "$DAEMON" -bd \
         ${COMMONOPTIONS} \
         ${SMTPLISTENEROPTIONS}
       log_progress_msg "exim4_listener"
       start_daemon -p "$QRPIDFILE" \
         "$DAEMON" -oP $QRPIDFILE \
         "-q${QFLAGS}${QUEUEINTERVAL}" \
         ${COMMONOPTIONS} \
         ${QUEUERUNNEROPTIONS}
       log_progress_msg "exim4_queuerunner"
       ;;
     queueonly)
       start_daemon -p "$QRPIDFILE" \
         "$DAEMON" -oP $QRPIDFILE \
         "-q${QFLAGS}${QUEUEINTERVAL}" \
         ${COMMONOPTIONS} \
         ${QUEUERUNNEROPTIONS}
       log_progress_msg "exim4_queuerunner"
       ;;
     no|ppp)
       start_daemon -p "$PIDFILE" \
         "$DAEMON" -bd \
         ${COMMONOPTIONS} \
         ${SMTPLISTENEROPTIONS}
       log_progress_msg "exim4_listener"
       ;;
     nodaemon)
       ;;    
   esac
}

stop_exim()
{
# we try to kill eximqr and exim SMTP listener, no matter what
# ${QUEUERUNNER} is set to, we could have switched since starting.
   if [ -f "$QRPIDFILE" ]; then
     killproc -p "$QRPIDFILE" "$DAEMON"
     log_progress_msg "exim4_queuerunner"
   fi
   if [ -f "$PIDFILE" ]; then
     killproc -p "$PIDFILE" "$DAEMON"
     log_progress_msg "exim4_listener"
   fi
}

reload_exim()
{
   case ${QUEUERUNNER} in
     combined|no|ppp)
       killproc -p "$PIDFILE" "$DAEMON" -HUP
       log_progress_msg "exim4"
       ;;
     separate)
       killproc -p "$PIDFILE" "$DAEMON" -HUP
       log_progress_msg "exim4_listener"
       killproc -p "$QRPIDFILE" "$DAEMON" -HUP
       log_progress_msg "exim4_queuerunner"
       ;;
   esac
}

kill_all_exims()
{  SIG="${1:-TERM}"
   for pid in $(pidof $NAME); do
     if [ "$(readlink /proc/$pid/root)" = "/" ]; then
       kill -$SIG $pid
     fi
   done
}

status()
{
   # the exit value of this function reflects the status of the SMTP
   # service. Output shows the status of the queue runner as well.
   SMTPNAME="SMTP listener daemon"
   QRNAME="separate queue runner daemon"
   if [ "${QUEUERUNNER}" = "combined" ]; then
       SMTPNAME="combined SMTP listener and queue runner daemon"
   fi
   log_action_begin_msg "checking $QRNAME"
   if pidofproc -p "$QRPIDFILE" >/dev/null; then
     log_action_end_msg 0 "running"
   else
     if [ -e "$QRPIDFILE" ]; then
       log_action_end_msg 1 "$QRNAME failed"
     else
       log_action_end_msg 0 "not running"
     fi
   fi
   log_action_begin_msg "checking $SMTPNAME"
   if pidofproc -p "$PIDFILE" >/dev/null; then
     log_action_end_msg 0 "running"
     exit 0
   else
     if [ -e "$PIDFILE" ]; then
       log_action_end_msg 1 "$SMTPNAME failed"
       exit 1
     else
       log_action_end_msg 0 "not running"
       exit 3
     fi
   fi
}

# check for valid configuration file
isconfigvalid()
{
if ! $DAEMON -bV > /dev/null ; then
   log 1 "Warning! Invalid configuration file for $NAME. Exiting."
   exit 1
fi
}

# check for non-empty paniclog
warn_paniclog()
{
   if [ -s "/var/log/exim4/paniclog" ]; then
     if [ -z "$E4BCD_PANICLOG_NOISE" ] || grep -vq "$E4BCD_PANICLOG_NOISE" /var/log/exim4/paniclog; then
       log_failure_msg "ALERT: exim paniclog /var/log/exim4/paniclog has non-zero size, mail system possibly broken"
     fi
   fi
}

case "$1" in
   start)
     log_daemon_msg "Starting MTA"
     # regenerate exim4.conf
     upex4conf
     isconfigvalid
     start_exim
     log_end_msg 0
     warn_paniclog
     ;;
   stop)
     log_daemon_msg "Stopping MTA"
     stop_exim
     log_end_msg 0
     warn_paniclog
     ;;
   restart)
     log_daemon_msg "Stopping MTA for restart"
     # regenerate exim4.conf
     upex4conf
     isconfigvalid
     stop_exim
     log_end_msg 0
     sleep 2
     log_daemon_msg "Restarting MTA"
     start_exim
     log_end_msg 0
     warn_paniclog
     ;;
   reload|force-reload)
     log_daemon_msg "Reloading $NAME configuration files"
     # regenerate exim4.conf
     upex4conf
     isconfigvalid
     reload_exim
     log_end_msg 0
     warn_paniclog
     ;;
   status)
     status
     ;;
   what)
     exiwhat
     ;;
   force-stop)
     kill_all_exims $2
     ;;
   *)
     echo "Usage: $0 {start|stop|restart|reload|status|what|force-stop}"
     exit 1
     ;;
esac

exit 0
# vim:tabstop=2:expandtab:shiftwidth=2





More information about the Pkg-exim4-maintainers mailing list