我想configurationdovecot使用mysql作为用户数据库。 这是我的configuration:
# Authentication for SQL users. Included from 10-auth.conf. # # <doc/wiki/AuthDatabase.SQL.txt> passdb { driver = sql # Path for SQL configuration file, see example-config/dovecot-sql.conf.ext args = /etc/dovecot/dovecot-sql.conf.ext } # "prefetch" user database means that the passdb already provided the # needed information and there's no need to do a separate userdb lookup. # <doc/wiki/UserDatabase.Prefetch.txt> userdb { driver = prefetch }
Dovecot将mail_gid和mail_uid设置为邮件用户(exim用户)。 这是SQLconfiguration:
driver = mysql connect = host=/var/run/mysqld/mysqld.sock dbname=system user=dovecot password=mypass default_pass_scheme = PLAIN password_query = SELECT password, '/var/mail/%d/%n' AS userdb_home FROM user WHERE username = '%n' AND domain = '%d'
这是一个很好的login后的错误:
dovecot: pop3-login: Login: user=<test@user>, method=PLAIN, rip=xxx, lip=xxx, mpid=24372, session=<dwTdGT8n0QBf9La9> dovecot: pop3(test@user): Error: user test@user: Initialization failed: Namespace '': Home directory not set for user. Can't expand ~/ for mail root dir in: ~/mail:INBOX=/var/mail/domain/test@user dovecot: pop3(test@user): Error: Invalid user settings. Refer to server log for more information.
我检查了mysql日志,并发现密码和home的正确答复。 它可能是什么? 我可以将dovecot用户添加到邮件组吗?
有两个错误:
我不得不在dovecot中更改这个configuration行从:
mail_location = mbox:~/mail:INBOX=/var/mail/%d/%u
至
mail_location = maildir:/var/mail/%d/%n
(我强调“maildir”前缀而不是“mbox”和%n占位符而不是%u)