Курьер-authdaemon адаптации справки initscript

Я мог использовать справку с адаптацией типичного курьера-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

Проблема: это, кажется, не работает, и мои навыки в регулярных выражениях не таковы, что я могу отладить это. У меня есть подозрение, оно имеет отношение к расположению файлов, но я не уверен. Есть ли кто-либо, кто может указать на меня в правильном направлении, таким образом, я не должен помнить применять команды после перезагрузки?

3
задан 10 September 2016 в 18:38

1 ответ

Проблема состоит в том, что Гостеприимные 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
  • , создают сценарий запуска для создания chroot dir, и символьные ссылки

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
    
1
ответ дан 1 December 2019 в 17:32

Другие вопросы по тегам:

Похожие вопросы: