Я мог использовать справку с адаптацией типичного курьера-authdaemon initscript.
Я выполняю сервер малого бизнеса с постфиксом, курьером, mariadb, amavisd-новый с clamav и spamassassin и sasl. После обновления гостеприимного у меня были проблемы, потому что установка отказалась аутентифицировать sasl как прежде. Я изучил поиск с помощью Google, вокруг которого это было результатом серьезно прерванный libpam-mysql гостеприимный. К счастью, возможно пройти проверку подлинности против стандартных программ аутентификации курьеров в курьере-authdaemon, таким образом, я изменил свой постфикс smtpd.conf для указания на это. Курьером-authdaemon управляет initscript (в/et/init.d) следующим образом:
#! /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
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
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
Следующий выпуск: у Меня есть постфикс, работающий в chroot тюрьме, которая не может получить доступ к стандартному сокету курьера-authdaemon. Таким образом, я нашел это:
service courier-authdaemon stop
rm -rf /var/run/courier/authdaemon/ /var/spool/postfix/var/run/courier/authdaemon/
mkdir -p /var/spool/postfix/var/run/courier/authdaemon/
ln -s /var/spool/postfix/var/run/courier/authdaemon/ /var/run/courier/authdaemon
service courier-authdaemon start
postfix reload
Который в основном останавливает демона аутентификации, удаляет старый материал и в текущем каталоге и в том в постфиксе chroot тюрьма и затем настраивает их снова и устанавливает ссылку снаружи на внутреннюю часть chroot тюрьма и запускается, все создает резервную копию снова. Который работает. То, что это не делает, делают эти изменения постоянными, потому что после перезагрузки (или обновление/обновление курьера) курьер настраивает все снова, таким образом, я должен восстановить вышеупомянутое, фиксируют.
Так, очевидно, я пытался узнать, найдет ли кто-то, что что-то применяет фиксацию при начальной загрузке. Повороты там были кем-то, и он переписал authdaemon initscript следующим образом
! /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 <GB@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
Проблема: это, кажется, не работает, и мои навыки в регулярных выражениях не таковы, что я могу отладить это. У меня есть подозрение, оно имеет отношение к расположению файлов, но я не уверен. Есть ли кто-либо, кто может указать на меня в правильном направлении, таким образом, я не должен помнить применять команды после перезагрузки?
Проблема состоит в том, что Гостеприимные 16.04 повредили sasl PAM И переключились на запуск systemd. init.d скрипт, который Вы отредактировали, чтобы курьер-authdaemon выполнил chrooted, никогда не запускается. Я нашел что твердый путь.
я теперь работаю, подобный набор до Вас (снабдите постфиксом chrooted плюс аутентификация против курьера, пока ранее я использовал PAM SASL на 14.04 Надежных людях).
Вот моя текущая установка:
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
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
создают переопределение для запуска через контент редактирования systemd
sudo systemctl edit courier-authdaemon
переопределения systemd для инициирования сценария оболочки выше:
$ more /etc/systemd/system/courier-authdaemon.service.d/override.conf
[Service]
ExecStartPre=/etc/systemd/system/courier-authdaemon.sh