用于 postfix smtp 身份验证的 saslauthd 多实例

sup*_*ser 5 email-server smtp postfix saslauthd

我有邮件服务器 Postfix+Saslauth。我为 Postfix 配置了多个实例:

后缀

后缀出

和两个实例saslauth

萨斯劳德

saslauthd-out

设置saslauthd用于验证Postfix服务及其saslauthd-out另一个实例。

为了创建sasl我的第二个实例,我这样做:

cp /etc/default/saslauthd /etc/default/saslauthd-out

使用此配置: :~# vim /etc/default/saslauthd-out

 DESC="SASL Authentication Daemon postfix-out"
 NAME="saslauthd-out"
 MECHANISMS="pam"
 OPTIONS="-c -m /var/spool/postfix-out/var/run/saslauthd-out"
Run Code Online (Sandbox Code Playgroud)

在后缀输出(/etc/postfix-out/sasl/smtp.conf)的配置中:

  pwcheck_method: saslauthd-out
Run Code Online (Sandbox Code Playgroud)

和后缀(/etc/postfix/sasl/smtp.conf):

  pwcheck_method: saslauthd
Run Code Online (Sandbox Code Playgroud)

当我重新启动时saslauth一切正常

当我尝试连接smtp server(postfix) 时,一切正常,并且身份验证成功,但在smtp server(postfix-out) 中,连接到 smtp 正常,但无法进行身份验证,并且发生了此错误:

:~# telnet mail2.example.com 25 
Trying 111.222.333.444...
Connected to mail2.example.com.
Escape character is '^]'. 
220 mail2.example.com ESMTP Postfix (@@DISTRO@@) 
auth plain YWdoc2EAYWdoc2hhbGRvcmFu 
535 5.7.8 Error: authentication failed: no mechanism available
Run Code Online (Sandbox Code Playgroud)

日志:

Nov 30 09:17:47 mail4 postfix-out/smtpd[4361]: connect from unknown[111.222.333.444]
Nov 30 09:17:58 mail4 postfix-out/smtpd[4361]: warning: SASL authentication problem: unknown password verifier 
Nov 30 09:17:58 mail4 postfix-out/smtpd[4361]: warning: SASL authentication failure: Password verification failed
Nov 30 09:17:58 mail4 postfix-out/smtpd[4361]: warning: unknown[111.222.333.444]: SASL plain authentication failed: no mechanism available
Nov 30 09:18:04 mail4 postfix-out/smtpd[4361]: disconnect from unknown[111.222.333.444]
Run Code Online (Sandbox Code Playgroud)

问题是什么?

lsm*_*oth 1

pwcheck_method是 Cyrus SASL 库的配置选项。可能的值为auxpropsaslauthdpwcheck。这里不支持。你的配置需要像这样authdaemondsaslauthd-out

/etc/default/saslauthd-out:

DESC="SASL Authentication Daemon postfix-out"
NAME="saslauthd-out"
MECHANISMS="pam"
OPTIONS="-c -m /var/spool/postfix-out/var/run/saslauthd-out"
Run Code Online (Sandbox Code Playgroud)

/etc/postfix-out/sasl/smtp.conf:

pwcheck_method: saslauthd
saslauthd_path: /var/spool/postfix-out/var/run/saslauthd-out/mux
Run Code Online (Sandbox Code Playgroud)

/etc/postfix-out/main.cf 中的某处:

smtpd_sasl_auth_enable = yes
smtpd_sasl_path = smtp 
smtpd_sasl_type = cyrus
cyrus_sasl_config_path = /etc/postfix-out/sasl
Run Code Online (Sandbox Code Playgroud)

我只是使用该配置设置了一个虚拟机,它就可以工作了。

/var/spool/postfix-out/var/run/saslauthd-out必须存在,尽管我个人更希望它更像/var/spool/postfix-out/saslauthd-out. 但这是你的决定。

  • 我的意思是符号链接是不必要的。您已经告诉 saslauthd-out 使用 -m 开关将所有内容放入“/var/spool/postfix-out/var/run/saslauthd-out”中。它将包含 mux、mux.accept 和 pid 文件 (saslauthd.pid),但 libsasl 需要的只是 mux 的(完整)路径,它从 smtp.conf 中的 saslauthd_path 获取该位置。 (2认同)