У меня странная проблема с голубятней. Моя голубятня безупречно работала на моем грузовике до вчерашнего дня, когда я обновился с debian / jessie до debian / stretch (armhf).
/var
символически связан с другим смонтированным диском (точка монтирования /extended
): /var
-> /extended/hostname/var
Теперь, когда я запускаю его как службу ("systemctl start dovecot
"), он не запускается, а сразу завершается с ошибкой.
May 08 21:16:20 hostname systemd[1]: Starting Dovecot IMAP/POP3 email server...
May 08 21:16:20 hostname dovecot[32167]: Error: bind(/var/spool/postfix/private/auth_dovecot) failed: No such file or directory
May 08 21:16:20 hostname dovecot[32167]: Fatal: Failed to start listeners
May 08 21:16:20 hostname systemd[1]: dovecot.service: Control process exited, code=exited status=89
May 08 21:16:20 hostname systemd[1]: Failed to start Dovecot IMAP/POP3 email server.
May 08 21:16:20 hostname systemd[1]: dovecot.service: Unit entered failed state.
May 08 21:16:20 hostname systemd[1]: dovecot.service: Failed with result 'exit-code'.
Всякий раз, когда я начинаю голубятню как root
в оболочке dovecot
он не показывает ошибок, но работает безотказно.
мой dovecot.conf
:
auth_mechanisms = plain login
log_timestamp = "%Y-%m-%d %H:%M:%S "
passdb {
args = /etc/dovecot/dovecot-mysql.conf
driver = sql
}
protocols = imap pop3
service auth {
unix_listener /var/spool/postfix/private/auth_dovecot {
mode = 0660
user = postfix
group = postfix
}
unix_listener auth-master {
mode = 0600
user = vmail
}
user = root
}
ssl_cert =</etc/postfix/sslcert/server.crt
ssl_key =</etc/postfix/sslcert/server.key
userdb {
args = /etc/dovecot/dovecot-mysql.conf
driver = sql
}
protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
}
# Enable installed protocols
!include_try /usr/share/dovecot/protocols.d/*.protocol
# Most of the actual configuration gets included below. The filenames are
# first sorted by their ASCII value and parsed in that order. The 00-prefixes
# in filenames are intended to make it easier to understand the ordering.
!include conf.d/*.conf
# A config file can also tried to be included without giving an error if
# ried not found:
!include_try local.conf
/var/spool/postfix/private/auth_dovecot
перед запуском, но безрезультатно при запуске в качестве службы. При запуске в оболочке сокет (auth_dovecot
) воссоздается при запуске.unix_listener
-part приводит к возможному тайм-ауту при запуске. Ошибка гласит PID file /var/run/dovecot/master.pid not readable (yet?) after start
./var/spool/postfix/private/auth
) приводит к той же ошибке.Поскольку я могу без проблем запускать dovecot как root из оболочки, я сильно подозреваю systemd
генерируя своего рода chroot
но мне нужны подсказки для дальнейшего исследования.
Заранее спасибо.
PS: К счастью, я смогу вернуться к debian/jessie
так как у меня есть tar.gz
-архив cubietruck
SD Card.
Кажется, есть какое-то странное поведение относительно systemd
.
Я решил это отредактировав postfix.service
файл (/etc/systemd/system/multi-user.target.wants/dovecot.service
) и установите запись по умолчанию PrivateTmp=true
к PrivateTmp=false
.
# This file is part of Dovecot
#
# If you want to pass additionally command line options to the dovecot
# binary, create the file:
# `/etc/systemd/system/dovecot.service.d/service.conf'.
# In this file create a Service section and configure an Environment with
# the variable `OPTIONS'. For example:
#
# [Service]
# Environment='OPTIONS=-p'
#
# In the `Service' section you may also specify various other setting.
# If you have trouble with `Too many open files' you may set:
#LimitNOFILE=8192
#
# If you want to allow the Dovecot services to produce core dumps, use:
#LimitCORE=infinity
[Unit]
Description=Dovecot IMAP/POP3 email server
Documentation=man:dovecot(1)
Documentation=http://wiki2.dovecot.org/
After=local-fs.target network.target
[Service]
Type=forking
ExecStart=/usr/sbin/dovecot
PIDFile=/var/run/dovecot/master.pid
ExecReload=/usr/bin/doveadm reload
ExecStop=/usr/bin/doveadm stop
PrivateTmp=false
NonBlocking=yes
# Enable this if your systemd is new enough to support it:
#ProtectSystem=off
Причина, по которой параметр конфигурации с именем PrivateTmp
работает не только с задокументированными папками /tmp
или /var/tmp
но также блокирует доступ к /var/spool
(или /var/spool/postfix/private/auth_dovecot
) содержание мне непонятно.