Dovecot:重新加载时拒绝终止权限

Dovecot:重新加载时拒绝终止权限

问题

我想在我的服务器上的 docker 内运行 Dovecot 服务器。守护进程成功启动,但每当我尝试重新加载配置、重新启动或停止守护进程时,都会出现以下错误:

start-stop-daemon: warning: failed to kill X: Permission denied

其中 X 是 dovecot 进程的 PID。我试图找到任何接近我得到的错误的东西,但没有成功。

有关环境的更多信息

我在基于以下 Linux 版本的 Docker 容器内运行该进程:

Linux 3b71bd992d42 4.10.0-21-generic #23-Ubuntu SMP Fri Apr 28 16:14:22 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

Docker 镜像由 Dockerfile 定义在https://github.com/tomav/docker-mailserver

我的 dovecot 本地配置看起来像

disable_plaintext_auth = no
mail_privileged_group = mail
log_path = /var/log/dovecot.log
mail_location = mbox:/var/mail/%u
userdb {
      driver = passwd
}
passdb {
      args = %s
        driver = pam
}
protocols = " imap"

protocol imap {
      mail_plugins = " autocreate"
}
plugin {
      autocreate = Trash
        autocreate2 = Sent
          autosubscribe = Trash
            autosubscribe2 = Sent
}

service auth {
      unix_listener /var/spool/postfix/private/auth {
      group = postfix
      mode = 0660
      user = postfix
      }
}

ssl=required
ssl_cert = < my pem certificate
ssl_key = < my private key

使用/usr/sbin/dovecot -c myconfig或运行 dovecotservice dovecot start时会出现相同的错误,当我运行或/usr/sbin/dovecot reloadservice dovecot stop/restart

有关我尝试过的更多信息

在我看来,当重新加载/重新启动/停止时,dovecot 会尝试终止正在运行的进程,但在本例中失败了。我尝试做的第一件事是以 root 身份手动终止此进程。这给了我同样的错误...所以我检查了进程的状态。一个简单的 ps aux 告诉我 dovecot 进程处于 Ss 状态。

root         1  0.0  0.0  18244  3380 ?        Ss   08:47   0:00 /bin/bash
root        32  0.0  0.0  18036  2656 ?        Ss   08:47   0:00 /usr/sbin/dovecot -c /etc/dovecot/dovecot.conf
dovecot     34  0.0  0.0   9520  1012 ?        S    08:47   0:00 dovecot/anvil
root        35  0.0  0.0   9652  1056 ?        S    08:47   0:00 dovecot/log
root        37  0.0  0.0  25300  4036 ?        S    08:47   0:00 dovecot/config
root        64  0.0  0.0  34424  2884 ?        R+   08:57   0:00 ps aux

我尝试使用 strace 查看阻塞调用是什么,但不幸的是

root@3b71bd992d42:/# strace -d -p 32
strace: new tcb for pid 32, active tcbs:1
strace: ptrace_setoptions = 0x11
strace: PTRACE_SEIZE doesn't work

另一个我不再知道的错误。

pstree给我

bash-+-dovecot-+-anvil
     |         |-config
     |         `-log
     `-pstree

我对这一切感到有点吃惊,我真的不知道下一步该做什么,除了尝试一个与 docker-mailserver 完全不同的镜像,并重新安装 dovecot,看看是否能修复错误。但这是我想避免的事情。这不是我第一次运行 dovecot 服务器,但我从来没有遇到过这样的事情。

相关内容