我们有一个很少使用的邮件服务器,运行良好已经一年多了,但是今天早些时候它开始偶尔无法验证用户身份,现在它甚至停止尝试验证身份。
邮件日志中的消息包括:
www imapd: authdaemon: s_connect() failed: Connection refused
www imapd: [Hint: perhaps authdaemond is not running?]
www imapd: LOGIN FAILED, user=XXX, ip=[::ffff:aaa.bbb.ccc.ddd]
www imapd: authentication error: Connection refused
但据我所见,一切都在运行,但它就是不起作用。
在它彻底失败之前,它会循环尝试每一种身份验证方法,直到找到合适的方法,而现在,它显然不会尝试其中任何一种方法。
netstat -napt 输出:
tcp 0 0 :::143 :::* LISTEN 25051/couriertcpd
ps alx 输出:
5 0 25087 1 20 0 3952 284 - S ? 0:00 /usr/sbin/courierlogger -pid=/var/spool/authdaemon/pid -start /usr/libexec/courier-authlib/authdaemond
4 0 25088 25087 20 0 61320 1472 - S ? 0:00 /usr/libexec/courier-authlib/authdaemond
1 0 25089 25088 20 0 61320 356 - S ? 0:00 /usr/libexec/courier-authlib/authdaemond
1 0 25090 25088 20 0 61320 360 - S ? 0:00 /usr/libexec/courier-authlib/authdaemond
1 0 25091 25088 20 0 61320 368 - S ? 0:00 /usr/libexec/courier-authlib/authdaemond
1 0 25092 25088 20 0 61320 368 - S ? 0:00 /usr/libexec/courier-authlib/authdaemond
1 0 25093 25088 20 0 61320 368 - S ? 0:00 /usr/libexec/courier-authlib/authdaemond
我已经重新启动了(比我记得的次数还多)courier-authlib 和 courier-imap,并且已经将分发配置文件 /etc/authlib/authdeamonrc.dist 复制到了正在使用的 /etc/authlib/authdaemonrc 文件上,尽管我认为它并没有被改变。
在本地和远程客户端通过 Telnet 连接到 imap 端口 143,然后输入
a login username password
只是给我消息:
* BYE Temporary problem, please try again later
Connection closed by foreign host.
并且电子邮件日志中出现了与我在该消息第一部分中提到的相同的“连接被拒绝”消息。
它是一个比较老的系统(约 2 年),因此各种程序与最新版本相差甚远,但它已经运行良好很长时间了,所以这不仅仅是一个代码问题。
如果有人能给我提供关于如何进一步进行诊断过程的线索,我将不胜感激。
这是 /etc/authlib/authdaemonrc 中的一行,authdaemon 似乎忽略了它:
authmodulelist="authuserdb authpam authpgsql authldap authmysql authcustom authpipe"
答案1
看看 authdaemonrc(如果我没记错的话)配置文件。它应该有关于如何进行身份验证的详细信息。例如,如果它使用 ldap,请查看您的 ldap 服务器是否仍在,如果它使用 mysql... 修复此问题,您可能会解决问题。