saslauthd 身份验证错误

saslauthd 身份验证错误

我的服务器出现了预期的问题,我无法从邮件客户端进行连接。

我查看了服务器日志,唯一能识别问题的是如下事件:

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/muxsasl 身份验证。如果不是,它将尝试打开/var/run/saslauthd/mux

似乎出于某种原因,您的 postfix 实例在 chroot 中运行,现在不再如此。这很奇怪,但我从您的问题细节中猜到是这样。如果是这样,您可以更改 saslauthd 配置以/var/run/saslauthd再次在 chroot 中使用或运行 postfix。

要知道你的 Postfix 是否正在运行 chroot,你可以检查/etc/postfix/master.cf

  1. 如果它有线smtp inet n - y - - smtpdsmtp inet n - - - - smtpd,那么你的Postfix 在 chroot 中运行
  2. 如果有线,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,你能看到它还在跑吗?

如果是的话,也许看看它是否有自己的日志位置。

如果没有,可能只需要重新启动。

相关内容