我有一个带有 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,我想?) 在chroot
jail中运行所致/var/spool/postfix
。我试过禁用 chroot并安装mysql.sock
到 Postfic chroot 中的一个文件夹,然而什么都没有改变。
我也尝试过将 改为127.0.0.1
或localhost
将 改为 ,但都无济于事。我试图寻找解决方案,但 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
,这意味着身份验证失败。