我已经对下面提到的链接提出了疑问,并且我在 main.cf 中有下面提到的配置 POSTFIX SASL 配置
主配置文件
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
html_directory = no
inet_interfaces = all
inet_protocols = all
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination = $myhostname,<"所有其他目标列表">
mydomain = <"我的域名">
myhostname = <"我的热名">
mynetworks = <"全部IPS">
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases.postfixqueue_directory
= /var/spool/postfixreadme_directory
= /usr/share/doc/postfix-2.10.1/README_FILESrelay_domains
= $mydestinationrelayhost
= <"我的中继主机服务器详细信息">
sample_directory = /usr/share/doc/postfix-2.10.1/samplessendmail_path
= /usr/sbin/sendmail.postfixsetgid_group
= postdropunknown_local_recipient_reject_code
= 550
smtpd_sasl_type = cyrus
smtpd_sasl_path = smtpd
cyrus_sasl_config_path = /etc/postfix/sasl
smtpd_sasl_auth_enable =
yesbroken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
主配置文件
#文件有下面提到的
smtp inet n - y - - smtpd #smtp inet n - n - 1 postscreen #smtpd pass - - - - - smtpd
#dnsblog unix - - n - 0 dnsblog
#tlsproxy unix - - n - 0 tlsproxy
#submission inet n - - - - smtpd
/etc/postfix/sasl/smtpd.conf
pwcheck_method:saslauthd mech_list:登录PLAIN
saslauthd_path:private/saslauthd/mux
通过上述配置,我收到以下错误 postfix/smtpd[20980]: 警告:SASL 身份验证失败:无法连接到 saslauthd 服务器:没有此文件或目录 postfix/smtpd[20980]: 警告:未知[]:SASL LOGIN 身份验证失败:一般故障
答案1
简单来说:Postfix 使用文件与 SASL(saslauthd)进行通信。在两者的配置中,您可以指定要使用的路径。在该路径中,将创建以下文件:
~# ls -l /var/spool/postfix/var/run/saslauthd/
total 4
srwxrwxrwx 1 root root 0 Feb 12 11:41 mux
-rw------- 1 root root 0 Feb 12 11:41 mux.accept
-rw------- 1 root root 7 Feb 12 11:41 saslauthd.pid
您的 postfix 进程很可能被 chrooted。从安全角度来看,这是件好事。这意味着 postfix 会将其 sasl 内容写入 /whatever-your-postfix-chroot-is/var/run/saslauthd/
我认为你不应该在路径中指定文件。所以不要:
saslauthd_path:私有/saslauthd/mux
因为这会导致 postfix 寻找 private/saslauthd/mux/mux 文件。这可能就是您现在想要的。
要么完全保留该行并使用默认路径,要么明确指定 sasl 路径:
saslauthd_path: private/saslauthd/
到目前为止,关于 Postfix 方面的事情。
还有 SASL 方面的问题。在 saslauthd 配置中,您有 OPTIONS 参数。查看 -m 参数,默认情况下为 /var/run/saslauthd/。
由于您的 postfix 可能已 chroot,因此它无法访问 /var/run/saslauthd/ 路径。因此,请将您的 SASL 配置更改为 /whatever-your-postfix-chroot-is/private/saslauthd/ 如下所示:OPTIONS="-m /whatever-your-postfix-chroot-is/private/saslauthd/ -r"
然后重启 saslauthd
systemctl restart saslauthd
如果您仍然遇到 Postfix 和 saslauthd 之间的通信问题,建议您发布
ps -ef | grep sasl
答案2
错误消息显示:无法连接到 saslauthd 服务器:没有此文件或目录。最有可能的两个解释是 saslauthd 没有运行,或者 smtpd 和 saslauthd 对名称不一致。