我正在build立一个邮件服务器,我希望得到一些帮助。 它开始与Roundcubenetworking邮件,当我试图用现有的正确的用户名和密码login,它给了我'login失败',所以我检查/var/log/mail.log
错误日志,我发现有一个错误说的是
dovecot: auth-worker(10370): Error: sql([email protected],127.0.0.1): Password query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''maildir:/var/vmail/...' as userdb_mail, 150 as userd' at line 1
当我检查在/etc/dovecot/dovecot-sql.conf.ext
的密码查询
password_query = \ SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, \ 'maildir:/var/vmail/%d/%n' as userdb_mail, 150 as userdb_uid, 8 as userdb_gid \ FROM mailbox WHERE username = '%u' AND active = '1'
这似乎是正确的?
有人有想法吗?
用这样的SQL查询来更改你的configuration文件:
. . . . . password_query= SELECT username as user, \ password \ FROM mailbox \ WHERE username = '%n@%d' \ AND active=1 user_query = SELECT maildir AS userdb_home, \ 150 AS userdb_uid, \ 8 AS userdb_gid, \ FROM mailbox \ WHERE username = '%n@%d' \ AND active=1 iterate_query = SELECT username AS user FROM mailbox . . . . .
请记住,除了反斜杠之后允许的[ENTER]之外,没有任何字符。
将下一个块添加到postfixadmin
的config.local.php
中:
. . . . . $CONF['maildir_name_hook'] = 'mdname'; function mdname ($domain, $user) { $part=explode("@", strtolower($user) ); return sprintf("/var/vmail/%s/%s/", $part[1], $part[0]); } . . . . .