我一直在尝试设置服务器,但不起作用。我收到此错误:
23:59:43 mail dovecot:auth-worker(14604):错误:sql([电子邮件保护], ip): 密码查询失败;您的 SQL 语法有误;请查看与您的 MariaDB 服务器版本相对应的手册,以了解在 '\ROM users WHERE userid = ' 附近使用的正确语法[电子邮件保护]' 和 mysql_pass = password('psw' 在第 1 行。
这是我的配置:
驱动程序 = mysql 连接 = “host=127.0.0.1 dbname=dbname 用户=userdb 密码=psw” default_pass_scheme = SHA512-CRYPT
password_query = SELECT NULL AS 密码,'Y' 作为 nopassword,userid AS 用户 \ FROM 用户 $
user_query = SELECT 用户名 AS 用户,域,密码 FROM 帐户 WHERE 用户名 = '%n$
iterate_query = SELECT 用户名,域 FROM 帐户其中 sendonly = false;
我的设置:我已经安装了 mariadb、dovecot、postfix、postfixadmin。
当我使用 postfixadmin 创建电子邮件帐户并使用与 dovecot 相同的数据库时,出现错误。我做错了什么?
我经验不多。如果您需要更多信息,请询问。
答案1
您的错误如下;粗体强调是我的:
23:59:43 mail dovecot:auth-worker(14604):错误:sql([电子邮件保护], ip): 密码查询失败;您的 SQL 语法有错误;请查看与您的 MariaDB 服务器版本相对应的手册以了解在 '\ ROM users WHERE userid = ' 附近使用正确的语法[电子邮件保护]‘并且 mysql_pass = password('psw' 在第 1 行。
您设置的查询值如下;再次强调是我的:
选择 NULL 作为密码,'Y' 作为无密码,用户 IDAS 用户 \ FROM 用户$
看起来这\
是个问题。但有些查询的$
末尾也有一个奇怪的字符,例如:
SELECT NULL AS password, 'Y' as nopassword, userid AS user \ FROM users $
SELECT username AS user, domain, password FROM accounts WHERE username = '%n$
看起来您是从截断查询的某些命令行输出中复制并粘贴这些查询的。解决方案是什么?获取实际的完整查询并将其放置在配置中。
另外,这是关于什么的?
driver = mysql connect = "host=127.0.0.1 dbname=dbname user=userdb password=psw"
为什么这两个driver
和connect
值在同一行?
总体而言,您看到的整体格式怪癖使配置看起来一团糟。我们没有简单的方法可以解决这个问题,但基本上我建议使用完整查询、将值括起来(如果配置以这种方式工作)并正确设置每行上的每个值来正确重写配置。