Bug#476987: exim4-daemon-light: fails to install: incompatible command-line options or arguments

Laurent Fousse laurent at komite.net
Sun Apr 20 16:52:59 UTC 2008


* Andreas Metzler [Sun, Apr 20, 2008 at 05:32:48PM +0200]:
> Hello,
> Please provide the complete debugging output, and the contents of
> /etc/init.d/exim4 and /etc/default/exim4

Here goes.
-------------- next part --------------
#! /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 ! [ -x "/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='30m'
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' /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 "${SMTPLISTENEROPTIONS}" "${COMMONOPTIONS}"
      log_progress_msg "exim4_listener"
      start_daemon -p "$QRPIDFILE" \
        "$DAEMON" -oP "$QRPIDFILE" \
        "-q${QFLAGS}${QUEUEINTERVAL}" "${QUEUERUNNEROPTIONS}" "${COMMONOPTIONS}"
      log_progress_msg "exim4_queuerunner"
      ;;
    queueonly)
      start_daemon -p "$QRPIDFILE" \
        "$DAEMON" -oP "$QRPIDFILE" \
        "-q${QFLAGS}${QUEUEINTERVAL}" "${QUEUERUNNEROPTIONS}" "${COMMONOPTIONS}"
      log_progress_msg "exim4_queuerunner"
      ;;
    no|ppp)
      start_daemon -p "$PIDFILE" \
        "$DAEMON" -bd "${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
-------------- next part --------------
# /etc/default/exim4
EX4DEF_VERSION=''

# 'combined' -	 one daemon running queue and listening on SMTP port
# 'no'       -	 no daemon running the queue
# 'separate' -	 two separate daemons
# 'ppp'      -   only run queue with /etc/ppp/ip-up.d/exim4.
# 'nodaemon' - no daemon is started at all.
# 'queueonly' - only a queue running daemon is started, no SMTP listener.
# setting this to 'no' will also disable queueruns from /etc/ppp/ip-up.d/exim4
QUEUERUNNER='combined'
# how often should we run the queue
QUEUEINTERVAL='30m'
# options common to quez-runner and listening daemon
COMMONOPTIONS=''
# more options for the daemon/process running the queue (applies to the one
# started in /etc/ppp/ip-up.d/exim4, too.
QUEUERUNNEROPTIONS=''
# special flags given to exim directly after the -q. See exim(8)
QFLAGS=''
# options for daemon listening on port 25
SMTPLISTENEROPTIONS=''
-------------- next part --------------
now debugging /etc/init.d/exim4 restart
+ LANG=C
+ export LANG
+ QUEUERUNNER=combined
+ QUEUEINTERVAL=30m
+ UPEX4OPTS=
+ PIDFILE=/var/run/exim4/exim.pid
+ QRPIDFILE=/var/run/exim4/eximqr.pid
+ '[' -f /etc/default/exim4 ']'
+ . /etc/default/exim4
++ EX4DEF_VERSION=
++ QUEUERUNNER=combined
++ QUEUEINTERVAL=30m
++ COMMONOPTIONS=
++ QUEUERUNNEROPTIONS=
++ QFLAGS=
++ SMTPLISTENEROPTIONS=
+ '[' -f /etc/inetd.conf ']'
+ grep -E -q '^[[:space:]]*((\*|[[:alnum:].-]+):)?smtp' /etc/inetd.conf
+ DAEMON=/usr/sbin/exim4
+ NAME=exim4
+ test -x /usr/lib/exim4/exim4
+ case "$1" in
+ log_daemon_msg 'Stopping MTA for restart'
+ '[' -z 'Stopping MTA for restart' ']'
+ '[' -z '' ']'
+ echo -n 'Stopping MTA for restart:'
Stopping MTA for restart:+ return
+ upex4conf
+ UPEX4CONF=update-exim4.conf
+ OLDIFS=' 	
'
+ IFS=:
+ for p in '$PATH'
+ '[' -x /usr/local/sbin/update-exim4.conf ']'
+ for p in '$PATH'
+ '[' -x /usr/local/bin/update-exim4.conf ']'
+ for p in '$PATH'
+ '[' -x /usr/sbin/update-exim4.conf ']'
+ IFS=' 	
'
+ /usr/sbin/update-exim4.conf
+ return 0
+ isconfigvalid
+ /usr/sbin/exim4 -bV
+ stop_exim
+ '[' -f /var/run/exim4/eximqr.pid ']'
+ '[' -f /var/run/exim4/exim.pid ']'
+ log_end_msg 0
+ '[' -z 0 ']'
+ log_use_fancy_output
+ TPUT=/usr/bin/tput
+ EXPR=/usr/bin/expr
+ '[' -t 1 ']'
+ FANCYTTY=0
+ case "$FANCYTTY" in
+ false
+ '[' 0 -eq 0 ']'
+ echo .
.
+ return 0
+ sleep 2
+ log_daemon_msg 'Restarting MTA'
+ '[' -z 'Restarting MTA' ']'
+ '[' -z '' ']'
+ echo -n 'Restarting MTA:'
Restarting MTA:+ return
+ start_exim
+ '[' -e /var/run/exim4 ']'
+ case ${QUEUERUNNER} in
+ start_daemon -p /var/run/exim4/exim.pid /usr/sbin/exim4 -bd -q30m '' '' ''
+ local force nice pidfile exec i
+ force=0
+ nice=0
+ pidfile=/dev/null
+ OPTIND=1
+ getopts fn:p: opt
+ case "$opt" in
+ pidfile=/var/run/exim4/exim.pid
+ getopts fn:p: opt
+ shift 2
+ '[' /usr/sbin/exim4 = -- ']'
+ exec=/usr/sbin/exim4
+ shift
+ '[' 0 = 1 ']'
+ '[' /var/run/exim4/exim.pid ']'
+ /sbin/start-stop-daemon --start --nicelevel 0 --quiet --exec /usr/sbin/exim4 --oknodo --pidfile /var/run/exim4/exim.pid -- -bd -q30m '' '' ''
exim: incompatible command-line options or arguments


More information about the Pkg-exim4-maintainers mailing list