我有这样的配置:
/etc/postfix/main.cf
smtpd_sasl_type = cyrus
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = /usr/lib/sasl2/smtpd
/usr/lib/sasl2/smtpd.conf
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN LOGIN DIGEST-MD5 NTLM
但当我连接到 SMTP 时,我得到了意外的 CRAM-MD5 机制
$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 ubuntu8 ESMTP Postfix (Ubuntu)
EHLO localhost
250-AUTH NTLM CRAM-MD5 PLAIN LOGIN DIGEST-MD5
...
因此看起来它没有使用我的配置。这里出了什么问题?
另外,如果我不指定 smtpd_sasl_path,是否有默认配置?根据http://www.postfix.org/SASL_README.html
Cyrus SASL version 2.x searches for the configuration file in /usr/lib/sasl2/.
但实际上我默认在这个位置没有配置。
版本:Ubuntu 8.04,Postfix 2.5
答案1
您不应该在这里为“smtpd_sasl_path”设置完整路径“/usr/lib/sasl2/smtpd”,只有“smtpd”就可以,这个角度需要一个应用程序名称而不是cyrus决定postfix使用的配置文件的路径。
答案2
的含义smtpd_sasl_path
特定于您的 SASL 实现;对于 Dovecot,它指向 Postfix 可用于与 IMAP 守护进程通信的套接字。我不确定它对于 Cyrus 的具体含义,但您可以通过运行以下命令找到其默认值(以及所有其他 Postfix 配置变量的默认值):
$ sudo postconf -d | grep smtpd_sasl_path
至于 Cyrus 配置文件,您是否尝试过cyrus_sasl_config_path
设置main.cf
?
答案3
此配置选项的文档有点混乱。
正如其他答案中提到的那样,本文档(http://www.postfix.org/postconf.5.html#smtpd_sasl_path) 规定默认值为smtpd
。
那么,要了解这实际上意味着什么,请看这里 -
http://www.postfix.org/SASL_README.html#server_cyrus_name
和这里 -
http://www.postfix.org/SASL_README.html#server_cyrus_location
这些规定:
配置文件的名称(默认:smtpd.conf)是可配置的。它由 Postfix SMTP 服务器发送给 Cyrus SASL 库的值和 Cyrus SASL 添加的后缀 .conf 连接而成。
Postfix 发送的值是将使用 Cyrus SASL 的服务器组件的名称。它默认为 smtpd,并使用以下变量之一进行配置:
/etc/postfix/main.cf:
# Postfix 2.3 and later smtpd_sasl_path = smtpd # Postfix < 2.3 smtpd_sasl_application_name = smtpd
和:
Cyrus SASL 搜索命名文件的位置取决于 Cyrus SASL 版本和所使用的操作系统/发行版。
您可以阅读有关以下主题的更多信息:
Cyrus SASL 版本 2.x 在 /usr/lib/sasl2/ 中搜索配置文件。
Cyrus SASL 版本 2.1.22 及更新版本还会在 /etc/sasl2/ 中进行搜索。
一些 Postfix 发行版经过修改,并在 /etc/postfix/sasl/、/var/lib/sasl2/ 等中查找 Cyrus SASL 配置文件。请参阅发行版特定的文档以确定预期位置。
注意 Cyrus SASL 首先搜索 /usr/lib/sasl2/。如果它在那里找到指定的配置文件,它就不会检查其他位置。
然后,你可以检查 Postfix 首先在哪里查找 sasl 配置文件,该文件可以在以下位置找到(对于基于 Debian 的发行版)/usr/share/doc/postfix/README.Debian
这里提到:
- 由于政策原因:
a. SASL 配置进入 /etc/postfix/sasl
所以...把所有这些放在一起,将其定义为(或保留为默认值),它将在目录中smtpd
查找。smtpd.conf
/etc/poostfix/sasl
如果不存在,它会/usr/lib/sasl2/
在/etc/sasl2/
我很喜欢古代文献 :D