saslauthd 身份验证错误

Jam*_*mes 6 email postfix saslauthd sasl ubuntu-10.04

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

我查看了服务器日志,唯一可以确定问题的是以下事件:

Nov 23 18:32:43 hig3 dovecot: imap-login: Login: user=, method=PLAIN, rip=xxxxxxxx, lip=xxxxxxxx, TLS Nov 23 18:32:55 hig3 postfix/smtpd[11653]: connect from xxxxxxx .co.uk[xxxxxxx] Nov 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]:来自 xxxxxxx.co.uk[xxxxxxx] 的 AUTH 后失去连接11 月 23 日 18:32:56 hig3 postfix/smtpd[11653]:与 xxxxxxx.co.uk[xxxxxxxx] 断开连接

这个问题很不寻常,因为就在半小时前在我的办公室,我的邮件客户端没有提示我输入正确的用户名和密码。我没有对服务器进行任何更改,因此我无法理解会发生什么导致此错误发生。

搜索错误消息会产生各种结果,其中包含我不确定的“修复”(显然不想让它变得更糟或修复未损坏的东西)。

当我跑

测试aslauthd -u xxxxx -p xxxxxx

我也得到以下结果:

connect() : 没有那个文件或目录

但是当我跑

testaslauthd -u xxxxx -p xxxxxx -f /var/spool/postfix/var/run/saslauthd/mux -s smtp

我得到:

0:好的“成功”。

我在另一个论坛上找到了这些命令,但并不完全确定它们的含义,但我希望它们可以指出问题所在。

当我跑

ps -ef|grep saslauthd

这是输出:

根 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。

Chr*_*uet 13

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

  1. 如果有smtp inet n - y - - smtpdor行smtp inet n - - - - smtpd,那么您的Postfix 正在 chroot 中运行
  2. 如果它有这条线,smtp inet n - n - - smtpd那么你的Postfix 没有在 chroot 中运行

此检查来自/etc/default/saslauthd(Ubuntu sasl 配置文件)。


小智 5

看起来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
Run Code Online (Sandbox Code Playgroud)

您可以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>
Run Code Online (Sandbox Code Playgroud)

其中base64code位来源于此:

perl -MMIME::Base64 -e 'print encode_base64("\000username\000password");'
Run Code Online (Sandbox Code Playgroud)