我的服务器出现了预期的问题,我无法从邮件客户端进行连接。
我查看了服务器日志,唯一能识别问题的是如下事件:
11 月 23 日 18:32:43 hig3 dovecot:imap-login:登录:user=、method=PLAIN、rip=xxxxxxxx、lip=xxxxxxx、TLS 11 月 23 日 18:32:55 hig3 postfix/smtpd[11653]:从 xxxxxxx.co.uk[xxxxxxx] 连接 11 月 23 日 18:32:55 hig3 postfix/smtpd[11653]:警告:SASL 身份验证失败:无法连接到 saslauthd 服务器:没有此文件或目录 11 月 23 日 18:32:55 hig3 postfix/smtpd[11653]:警告:xxxxxxx.co.uk[xxxxxxxx]:SASL LOGIN 身份验证失败:一般故障 11 月 23 日 18:32:56 hig3 postfix/smtpd[11653]:从 AUTH 后丢失连接xxxxxxx.co.uk[xxxxxxx] 11 月 23 日 18:32:56 hig3 postfix/smtpd[11653]: 断开与 xxxxxxx.co.uk[xxxxxxx] 的连接
这个问题很不寻常,因为就在半小时前,我在办公室的邮件客户端没有提示我输入正确的用户名和密码。我没有对服务器进行任何更改,所以我不明白到底发生了什么事情导致这个错误发生。
搜索错误消息会产生各种结果,其中有些“修复”我并不确定(显然不想让情况变得更糟或修复没有损坏的东西)。
当我跑步时
testsaslauthd -u xxxxx -p xxxxxx
我还得到以下结果:
connect() :没有该文件或目录
但当我跑步时
testsaslauthd -u xxxxx -p xxxxxx -f /var/spool/postfix/var/run/saslauthd/mux -s smtp
我得到:
0:OK“成功。”
我在另一个论坛上找到了这些命令,并不完全确定它们的含义,但我希望它们可以表明问题可能出在哪里。
当我跑步时
ps -ef|grep saslauthd
这是输出:
root 1245 1 0 Nov24 ? 00:00:00 /usr/sbin/saslauthd -a pam -c -m /var/spool/postfix/var/run/saslauthd -r -n 5 root 1250 1245 0 Nov24 ? 00:00:00 /usr/sbin/saslauthd -a pam -c -m /var/spool/postfix/var/run/saslauthd -r -n 5 root 1252 1245 0 Nov24 ? 00:00:00 /usr/sbin/saslauthd -a pam -c -m /var/spool/postfix/var/run/saslauthd -r -n 5 root 1254 1245 0 Nov24 ? 00:00:00 /usr/sbin/saslauthd -a pam -c -m /var/spool/postfix/var/run/saslauthd -r -n 5 root 1255 1245 0 Nov24 ? 00:00:00 /usr/sbin/saslauthd -a pam -c -m /var/spool/postfix/var/run/saslauthd -r -n 5 root 5902 5885 0 08:51 pts/0 00:00:00 grep --color=auto saslauthd
如果有任何区别,我正在运行 Ubuntu 10.04.1、Postfix 2.7.0 和 Webmin/Virtualmin。
答案1
Postfix 可以在 chroot 中运行(默认情况下在 中/var/spool/postfix
),也可以不运行。如果是,它将尝试打开/var/spool/postfix/var/run/saslauthd/mux
sasl 身份验证。如果不是,它将尝试打开/var/run/saslauthd/mux
似乎出于某种原因,您的 postfix 实例在 chroot 中运行,现在不再如此。这很奇怪,但我从您的问题细节中猜到是这样。如果是这样,您可以更改 saslauthd 配置以/var/run/saslauthd
再次在 chroot 中使用或运行 postfix。
要知道你的 Postfix 是否正在运行 chroot,你可以检查/etc/postfix/master.cf
:
- 如果它有线
smtp inet n - y - - smtpd
或smtp inet n - - - - smtpd
,那么你的Postfix 在 chroot 中运行; - 如果有线,
smtp inet n - n - - smtpd
那么你的Postfix 未在 chroot 中运行。
该检查来自/etc/default/saslauthd
(Ubuntu sasl 配置文件)。
答案2
看起来总是postfix
在 chroot 的位置查找,saslauthd
即使它配置为不是使用 chroot 环境来提供其服务。
我发现这篇博客文章非常有帮助,即使它是 2005 年的!
http://www.jimmy.co.at/weblog/?p=52
postfix 执行 chroot,因此无法与 saslauthd 通信。这是棘手的部分:
rm -r /var/run/saslauthd/ mkdir -p /var/spool/postfix/var/run/saslauthd ln -s /var/spool/postfix/var/run/saslauthd /var/run chgrp sasl /var/spool/postfix/var/run/saslauthd adduser postfix sasl
您可以saslauthd
使用以下方式在调试模式下运行:
saslauthd -c -d -a pam -m /var/run/saslauthd
从您的客户端执行以下操作:
openssl s_client -CApath /etc/ssl/certs/ -starttls smtp -connect mail.mydomain.com:587
出现提示时输入以下内容:
HELO mynotebook.com
LOGIN PLAIN <base64code>
其中的出处base64code
是这样的:
perl -MMIME::Base64 -e 'print encode_base64("\000username\000password");'
答案3
每次我遇到与 saslauthd 类似的问题(并且所有其他问题都经过了仔细检查)时,都是与目录/文件权限有关。检查此/var/spool/postfix/var/run/saslauthd
路径的每一步,以确保 saslauthd 确实可以到达那里。
答案4
尝试连接时没有这样的文件或目录表明它正在寻找 SASLAuthd 的 UNIX 套接字不存在。
如果你跑ps -ef | grep saslauthd
,你能看到它还在跑吗?
如果是的话,也许看看它是否有自己的日志位置。
如果没有,可能只需要重新启动。