O problema é que o Xenial 16.04 quebrou o PAM E mudou para a inicialização do systemd. O script init.d que você editou para que o courier-authdaemon execute o chrooted nunca é executado. Eu descobri isso da maneira mais difícil.
Eu agora executo uma configuração semelhante a você (postfix chrooted plus authentication contra courier, enquanto anteriormente eu usava o SASL PAM em 14.04 Trusty).
Aqui está minha configuração atual:
- configure para autenticar contra correio
vi /etc/postfix/sasl/smtpd.conf
#pwcheck_method: saslauthd
#mech_list: plain login
#allow_plaintext: true
pwcheck_method: authdaemond
authdaemond_path: /var/run/courier/authdaemon/socket
mech_list: plain login
log_level: 9
- crie um script de inicialização para criar o diretório chroot e os links simbólicos
vi /etc/systemd/system/courier-authdaemon.sh
#! /bin/sh -e
#
# Starts: courier-authdaemon
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"
rundir_chroot="/var/spool/postfix/var/run/courier/authdaemon"
pidfile="${rundir}/pid"
/bin/echo "Checkpoint 1 Courier authentication services" "authdaemond" >/log.txt
# Check for a leftover init script
if [ ! -x $daemonscript ]; then
exit 0
fi
/bin/echo "Checkpoint 2 Courier authentication services" "authdaemond" >>/log.txt
# Start daemon.
cd /
/bin/echo "Starting Courier authentication services" "authdaemond" >>/log.txt
# RAH 20170123. Change to chroot postfix setup
if [ ! -d "$rundir_courier" ]; then
/bin/echo "making parent location" "authdaemond" >>/log.txt
/bin/mkdir -m 0775 $rundir_courier
/bin/chown daemon:daemon $rundir_courier
# set file context for SELinux (#668564)
[ -x /sbin/restorecon ] && /sbin/restorecon $rundir_courier
fi
# clean up chroot location
if [ -d "$rundir_chroot" ]; then
/bin/echo "Cleaning chroot location" "authdaemond" >>/log.txt
/bin/rm -rf "$rundir_chroot"
fi
# remove traditional directory if it exists
if [ -L "$rundir" ]; then
/bin/echo "Unlinking traditional location" "authdaemond" >>/log.txt
/usr/bin/unlink "$rundir"
fi
if [ -d "$rundir" ]; then
/bin/echo "Cleaning traditional location" "authdaemond" >>/log.txt
/bin/rm -rf "$rundir"
fi
# make new chroot location
if [ ! -d "$rundir_chroot" ]; then
/bin/echo "making chroot location" "authdaemond" >>/log.txt
/bin/mkdir -p "$rundir_chroot"
# /bin/echo mkdir -p "$rundir_chroot"
/bin/chown daemon:daemon "$rundir_chroot"
[ -x /sbin/restorecon ] && /sbin/restorecon $rundir_chroot
fi
# link chroot location to the original location
if [ ! -L "$rundir" ]; then
/bin/echo "linking chroot location" "authdaemond" >>/log.txt
/bin/ln -sn "$rundir_chroot" "$rundir"
# /bin/echo /bin/ln -sfn "$rundir_chroot" "$rundir"
fi
# $daemonscript start
exit 0
-
crie uma substituição para a inicialização via systemd
sudo systemctl edit courier-authdaemon
-
edite o conteúdo da substituição do systemd para acionar o script de shell acima:
$ more /etc/systemd/system/courier-authdaemon.service.d/override.conf
[Service] ExecStartPre=/etc/systemd/system/courier-authdaemon.sh