CentOS 6 上的 Dovecot 更新后无法工作

CentOS 6 上的 Dovecot 更新后无法工作

我最近将 CentOS 更新到了 6.8(最终版)。我不确定 dovecot 是否停止工作了,还是稍后停止工作了。我明白了没有什么secure登录正确的密码密码错误时会显示“失败”。我从未修改过 /etc/pam.d - 应该是操作系统默认设置。以前它能用。我不知道为什么现在它不能用了。

我正在使用 dovecot + sendmail。Sendmail 通过 sasl->PAM 进行身份验证,并且运行正常。

我尝试使用 passdbshadow来查看问题所在,但是没有成功。

这可能是巧合,但由于某种原因,强制进行 md 检查(在所有分区上使用 raid 1)

更新:突袭检查完成后,dmesg 显示此信息。

auth[14058]: segfault at 9c ip 000000000040f8e0 sp 00007ffe99788070 error 4 in auth[400000+37000]
auth[14133]: segfault at 8c ip 000000000040f8e0 sp 00007ffc7ec2ee60 error 4 in auth[400000+37000]

之前 dmesg 充满了这些消息:“延迟 md4 的数据检查直到 md3 完成”,所以我看不到段错误......

配置:

# dovecot -n
# 2.0.9: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-642.1.1.el6.centos.plus.x86_64 x86_64 CentOS release 6.8 (Final)
auth_debug = yes
auth_gssapi_hostname = $ALL
auth_verbose = yes
log_path = /var/log/dovecot.log
mail_debug = yes
mail_location = mbox:~/mail:INBOX=/var/spool/mail/%u
mbox_write_locks = fcntl
passdb {
  args = failure_show_msg=yes dovecot
  driver = pam
}
passdb {
  driver = shadow
}
protocols = imap pop3
service auth-worker {
  user = root
}
service auth {
  user = root
}
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem
userdb {
  driver = passwd
}
verbose_proctitle = yes

鸽舍日志:

Jul 18 02:18:12 auth: Debug: Loading modules from directory: /usr/lib64/dovecot/auth
Jul 18 02:18:12 auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libauthdb_ldap.so
Jul 18 02:18:12 auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libdriver_sqlite.so
Jul 18 02:18:12 auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libmech_gssapi.so
Jul 18 02:18:12 auth: Debug: auth client connected (pid=24897)
Jul 18 02:18:16 auth: Debug: client in: AUTH    1       PLAIN   service=imap    secured lip=5.9.143.206 rip=176.12.6.242        lport=143       rport=64099
Jul 18 02:18:16 auth: Debug: client out: CONT   1
Jul 18 02:18:16 auth: Debug: client in: CONT<hidden>
Jul 18 02:18:16 auth: Debug: Loading modules from directory: /usr/lib64/dovecot/auth
Jul 18 02:18:16 auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libauthdb_ldap.so
Jul 18 02:18:16 auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libdriver_sqlite.so
Jul 18 02:18:16 auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libmech_gssapi.so
Jul 18 02:18:16 auth: Debug: pam(npelov,176.12.6.242): lookup service=dovecot
Jul 18 02:18:16 auth: Debug: pam(npelov,176.12.6.242): #1/1 style=1 msg=Password:
Jul 18 02:18:19 auth: Info: pam(npelov,176.12.6.242): pam_authenticate() failed: Authentication failure (password mismatch?)
Jul 18 02:18:19 master: Error: service(auth): child 24898 killed with signal 11 (core dumps disabled)
Jul 18 02:18:19 auth: Debug: Loading modules from directory: /usr/lib64/dovecot/auth
Jul 18 02:18:19 auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libauthdb_ldap.so
Jul 18 02:18:19 auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libdriver_sqlite.so
Jul 18 02:18:19 auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libmech_gssapi.so
Jul 18 02:18:19 auth: Debug: auth client connected (pid=24897)
Jul 18 02:18:19 auth: Debug: client in: AUTH    2       PLAIN   service=imap    secured lip=5.9.143.206 rip=176.12.6.242        lport=143       rport=64099     resp=<hidden>
Jul 18 02:18:19 auth: Debug: Loading modules from directory: /usr/lib64/dovecot/auth
Jul 18 02:18:19 auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libauthdb_ldap.so
Jul 18 02:18:19 auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libdriver_sqlite.so
Jul 18 02:18:19 auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libmech_gssapi.so
Jul 18 02:18:19 auth: Debug: pam(npelov,176.12.6.242): lookup service=dovecot
Jul 18 02:18:19 auth: Debug: pam(npelov,176.12.6.242): #1/1 style=1 msg=Password:
Jul 18 02:18:20 auth: Info: pam(npelov,176.12.6.242): pam_authenticate() failed: Authentication failure (password mismatch?)
Jul 18 02:18:20 master: Error: service(auth): child 25050 killed with signal 11 (core dumps disabled)
Jul 18 02:18:24 auth: Debug: Loading modules from directory: /usr/lib64/dovecot/auth
Jul 18 02:18:24 auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libauthdb_ldap.so
Jul 18 02:18:24 auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libdriver_sqlite.so
Jul 18 02:18:24 auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libmech_gssapi.so
Jul 18 02:18:24 auth: Debug: auth client connected (pid=24897)

手动测试:

# openssl s_client -connect <host>:993
CONNECTED(00000003)
..............................................
..............................................
..............................................
a1 LOGIN npelov validpassword
a1 NO [UNAVAILABLE] Temporary authentication failure.
* OK Waiting for authentication process to respond..

答案1

听起来你遭遇了某种软磁盘故障,触发了磁盘检查/重建,并且该故障损坏了部分 dovecot 安装。

我还会:

  • 如果可能的话,请检查磁盘的 SMART 性能/健康计数器,可能即将发生灾难性的硬件故障
  • 使用以下方法验证其他软件包的文件rpm -Va;任何大小不正确或校验和错误的二进制文件也可能已损坏

答案2

重新安装 dovecot 包解决了该问题:

# yum reinstall dovecot
# service dovecot restart

更新: smart 没有报告任何错误。

相关内容