I'm sorry the posted script have some mistakes.

Attached is the script /etc/init.d/courier-authdaemon with a better
solution to the reported problem that uses a dedicated function
postfix_check().

                           Guido Bozzetto.
#! /bin/sh -e
#
### BEGIN INIT INFO
# Provides:          courier-authdaemon
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
### END INIT INFO

prefix="/usr"
exec_prefix=${prefix}
sysconfdir="/etc/courier"
sbindir="${exec_prefix}/sbin"
daemonscript="${sbindir}/authdaemond"
rundir_courier="/var/run/courier"
rundir="/var/run/courier/authdaemon"
pidfile="${rundir}/pid"

. /lib/lsb/init-functions

# Check for a leftover init script
if [ ! -x $daemonscript ]; then
        exit 0
fi

#== Postfix chrooted ==#+20131117 <g...@nline.it>
postfix_check() {
  local PFINIT=/etc/init.d/postfix
  local PFMASTER=/etc/postfix/master.cf
  local PFSMTPD=/etc/postfix/sasl/smtpd.conf

  if [ -s $PFINIT ] && [ -s $PFMASTER ] ; then
    # Use Postfix
    if [ "$(/usr/bin/awk '$1~/^smtp$/ && $8~/smtpd/ {print $5}
             ' $PFMASTER)0" != "n0" ]
    then # chroot: Yes
      if [ -s $PFSMTPD ] && [ "0$(/bin/sed -n \
-e '/^authdaemond_path:/s,.\+:\s*,,p' $PFSMTPD)" = "0$rundir/socket" ] &&
         [ ! -L $rundir ]
      then
        /bin/rm -fr $rundir &&
        /bin/ln -s /var/spool/postfix/$rundir $rundir_courier
      fi
    else # chroot: No
      if [ -L $rundir ] ;then
        /bin/rm -fr $rundir
      fi
    fi # Postfix chrooted ?
  fi # Use Postfix
} # postfix_check()
#-- Postfix chrooted --#

case "$1" in
start)
        # Start daemon.
        cd /
        log_daemon_msg "Starting Courier authentication services" "authdaemond"
        if [ ! -d "$rundir_courier" ]; then
                mkdir -m 0775 $rundir_courier
                chown daemon:daemon $rundir_courier
        # set file context for SELinux (#668564)
        [ -x /sbin/restorecon ] && /sbin/restorecon $rundir_courier
        fi
postfix_check
        if [ ! -d "$rundir" ]; then
                mkdir -m 0750 $rundir 
                chown daemon:daemon $rundir
        # set file context for SELinux (#668564)
        [ -x /sbin/restorecon ] && /sbin/restorecon $rundir
        fi
        $daemonscript start
        log_end_msg 0
        ;;
stop)
        # Stop daemon.
        cd /
        log_daemon_msg "Stopping Courier authentication services" "authdaemond"
        $daemonscript stop
        log_end_msg 0
    ;;
restart|force-reload)
        $0 stop
        $0 start
    ;;
status)
        status_of_proc -p "$pidfile" "" "authdaemond" && exit 0 || exit $?
    ;;
*)
        echo "Usage: $0 {start|stop|restart|force-reload|status}" >&2
        exit 2
        ;;
esac
exit 0

Reply via email to