我在对我的 postfix 服务器进行传入 SMTP 身份验证时遇到了问题(使用带有 MySQL 后端的 Cyrus SASL)。
在我的 auth.log 中我得到:
postfix/smtpd[3389]: sql auxprop plugin using mysql engine
postfix/smtpd[3389]: SQL engine 'mysql' not supported
postfix/smtpd[3389]: auxpropfunc error no mechanism available
postfix/smtpd[3389]: _sasl_plugin_load failed on sasl_auxprop_plug_init for plugin: sqlite
postfix/smtpd[3389]: sql plugin Parse the username <email>
postfix/smtpd[3389]: sql plugin try and connect to a host
postfix/smtpd[3389]: sql plugin trying to open db 'postfix' on host 'localhost'
我的 /etc/postfix/sasl/smtpd.conf 如下所示:
pwcheck_method: saslauthd
mech_list: plain login cram-md5 digest-md5
log_level: 7
allow_plaintext: true
auxprop_plugin: sql
sql_engine: mysql
sql_hostnames: localhost
sql_user: -removed-
sql_passwd: -removed-
sql_database: postfix
sql_select: select password from mailbox where username = '%u@%r'
基本上我明白它的意思,它找不到 MySQL 身份验证模块,但是我已经安装了和libsasl2-modules-sql
。postfix-mysql
我遗漏了什么?
答案1
如果你使用的是 ubuntu 12.04,你的问题似乎是这样的:
https://bugs.launchpad.net/ubuntu/+source/cyrus-sasl2/+bug/875440
对我来说最好的选择是将 libsqlite0 db4.8-util libssl0.9.8 包降级到 2.1.23 版本。
欢呼吧。
答案2
您可能应该使用:pwcheck_method:auxprop
我说“可能”是因为配置 cyrus-sasl 时存在很多困惑。手册上说 saslauthd 只适用于 PLAIN 和 LOGIN,但有证据表明事实恰恰相反!
您是否检查过 sql 插件的存在?某些发行版(例如 Fedora)默认不安装插件。您需要类似以下内容的插件:/use/lib/sasl2/libsql.so
还要注意,除非您的客户端用户名采用 user@realm 格式,或者 realm 源自您的 smtp 默认值且未由客户端指定,并且可能未向 saslauthd 提供 -r 参数(请参阅手册页并弄清楚 saslauthd 启动时如何传递 -r),否则 realm 将不会传递给您的 swl select 中的 %r!您可以通过在 select 文本到达 mysql 服务器时转储它来检查 %r 是否正确传递。
欢迎来到电子邮件配置地狱;-)希望这会有所帮助。