Postfix 无法连接到 MySQL 服务器进行身份验证

Postfix 无法连接到 MySQL 服务器进行身份验证

我有一个带有 Postfix、Dovecotsaslauthd和 MySQL 存储和身份验证后端的邮件服务器。我可以正常发送电子邮件,但是接收电子邮件(在本例中来自 Outlook)失败,并显示以下消息/var/log/mysql/mysql.log

MySQL 日志显示以下错误:

53 Connect   mail@localhost on mail
53 Connect   Access denied for user 'mail'@'localhost' (using password: YES)
54 Connect   mail@localhost on mail
54 Connect   Access denied for user 'mail'@'localhost' (using password: YES)
55 Connect   mail@localhost on mail
55 Connect   Access denied for user 'mail'@'localhost' (using password: YES)
56 Connect   mail@localhost on mail
56 Connect   Access denied for user 'mail'@'localhost' (using password: YES)

看来我无法登录 MySQL 服务器,然而, 当我做

mysql -u mail -p -h localhost

我可以登录美好的。在两种情况下,密码均正确。

我感觉这都是因为 Postfix (以及随后的 SMTPD,我想?) 在chrootjail中运行所致/var/spool/postfix。我试过禁用 chroot并安装mysql.sock到 Postfic chroot 中的一个文件夹,然而什么都没有改变。

我也尝试过将 改为127.0.0.1localhost将 改为 ,但都无济于事。我试图寻找解决方案,但 Google 已经耗尽了搜索资源。也许我搜索错了。

我需要做什么才能允许 Postfix 访问在同一台服务器上运行的 MySQL 数据库?我想将 MySQL 用于其他用途,例如 PHP,因此 Postfix 独有的解决方案并不是一个真正的选择。这个问题已经困扰了我整整 3 天,我尝试了所有可用的解决方案。

我的/etc/postfix/sasl/smtpd.conf样子是这样的:

pwcheck_method: auxprop
mech_list: PLAIN LOGIN
log_level: 7
allow_plaintext: true
auxprop_plugin: sql
sql_engine: mysql
sql_hostnames: localhost
sql_user: mail
sql_passwd: [hidden]
sql_database: mail
sql_select: select password from mailbox where username='%u@%r' and active = 1

我不确定要发布哪些其他文件,因此请发表评论,我会进行相应更新。我正在运行 32 位 Ubuntu Server 12.10。

答案1

我遇到了同样的问题,用户名/密码正确,但就我而言,我有这个疑问:

query = select 1 as found from users where email = '%u@%d' and enabled = true LIMIT 1;

问题在于结局;

我刚刚删除了它并且它起作用了

query = select 1 as found from users where email = '%u@%d' and enabled = true LIMIT 1

错误信息可以更改为更有用的内容。

答案2

这是我犯的一个极其愚蠢的错误。事实证明,在配置文件中/etc/postfix/sasl/smtpd.conf,和其他字段后面有一个空格sql_passwd,这意味着身份验证失败。

相关内容