Получение ошибки с dovecot при аутентификации пользователя (домашний каталог не задан для пользователя)

Я пытаюсь настроить относительно простой postfix / dovecot IMAP / SMTP-сервер с серверной частью MySQL. Похоже, что аутентификация прошла успешно, я просто получаю эту ошибку:

Инициализация не удалась: пространство имен '': домашний каталог не задан для пользователя. Не удается развернуть ~ / для корневого каталога почты в: ~ / myserver.io / mail /

Я получаю следующую ошибку вместе с DEBUG:

Feb  8 04:27:13 localhost dovecot: auth: Debug: Loading modules from directory: /usr/lib64/dovecot/auth
Feb  8 04:27:13 localhost dovecot: auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libdriver_mysql.so
Feb  8 04:27:13 localhost dovecot: auth: Debug: Module loaded: /usr/lib64/dovecot/auth/libdriver_sqlite.so
Feb  8 04:27:13 localhost dovecot: auth: Debug: Read auth token secret from /var/run/dovecot/auth-token-secret.dat
Feb  8 04:27:13 localhost dovecot: auth: Debug: auth client connected (pid=9974)
Feb  8 04:27:13 localhost dovecot: auth: Debug: client in: AUTH#0111#011PLAIN#011service=imap#011secured#011session=IeV306tkgAB/AAAB#011lip=127.0.0.1#011rip=127.0.0.1#011lport=143#011rport=50816#011resp=AG1haWxAdmVuZ2VhbmNlLmlvAENyM2F0MXZlLS0= (previous base64 data may contain sensitive data)
Feb  8 04:27:13 localhost dovecot: auth-worker(9977): Debug: Loading modules from directory: /usr/lib64/dovecot/auth
Feb  8 04:27:13 localhost dovecot: auth-worker(9977): Debug: Module loaded: /usr/lib64/dovecot/auth/libdriver_mysql.so
Feb  8 04:27:13 localhost dovecot: auth-worker(9977): Debug: Module loaded: /usr/lib64/dovecot/auth/libdriver_sqlite.so
Feb  8 04:27:13 localhost dovecot: auth-worker(9977): Debug: sql(mail@myserver.io,127.0.0.1): query: SELECT username, domain, password, CONCAT('maildir:~/', maildir) AS userdb_home, '1000' AS userdb_uid, '1000' AS userdb_gid FROM mailbox WHERE username = 'mail' AND domain = 'myserver.io'
Feb  8 04:27:13 localhost dovecot: auth: Debug: client passdb out: OK#0111#011user=mail@myserver.io
Feb  8 04:27:13 localhost dovecot: auth: Debug: master in: REQUEST#0112229403649#0119974#0111#011aaa130ec6f6296678ec1e9e7866efbaf#011session_pid=9980#011request_auth_token
Feb  8 04:27:13 localhost dovecot: auth-worker(9977): Debug: sql(mail@myserver.io,127.0.0.1): SELECT CONCAT('maildir:~/', maildir) as mail, '1000' AS uid, '1000' as gid FROM mailbox WHERE username = 'mail' AND domain = 'myserver.io'
Feb  8 04:27:13 localhost dovecot: auth: Debug: master userdb out: USER#0112229403649#011mail@myserver.io#011mail=maildir:~/myserver.io/mail/#011uid=1000#011gid=1000#011auth_token=d72ede03452694f33b4b1c759539f7ec613cab95
Feb  8 04:27:13 localhost dovecot: imap-login: Login: user=<mail@myserver.io>, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, mpid=9980, secured, session=<IeV306tkgAB/AAAB>
Feb  8 04:27:13 localhost dovecot: imap: Debug: Added userdb setting: mail=maildir:~/myserver.io/mail/
Feb  8 04:27:13 localhost dovecot: imap(mail@myserver.io): Debug: Effective uid=1000, gid=1000, home=
Feb  8 04:27:13 localhost dovecot: imap(mail@myserver.io): Debug: Namespace inbox: type=private, prefix=, sep=/, inbox=yes, hidden=no, list=yes, subscriptions=yes location=maildir:~/myserver.io/mail/
Feb  8 04:27:13 localhost dovecot: imap(mail@myserver.io): Error: user mail@myserver.io: Initialization failed: Namespace '': Home directory not set for user. Can't expand ~/ for mail root dir in: ~/myserver.io/mail/
Feb  8 04:27:13 localhost dovecot: imap(mail@myserver.io): Error: Invalid user settings. Refer to server log for more information.
p=/, inbox=yes, hidden=no, list=yes, subscriptions=yes location=maildir:~/myserver.io/mail/

Моя конфигурация dovecot:

[root@postfix webmail]# dovecot -n
# 2.2.10: /etc/dovecot/dovecot.conf
# OS: Linux 4.14.14-x86_64-linode94 x86_64 CentOS Linux release 7.4.1708 (Core)
auth_debug_passwords = yes
disable_plaintext_auth = no
mail_debug = yes
mail_gid = vmail
mail_privileged_group = mail
mail_uid = vmail
namespace inbox {
  inbox = yes
  location =
  mailbox Drafts {
    auto = subscribe
    special_use = \Drafts
  }
  mailbox Junk {
    auto = subscribe
    special_use = \Junk
  }
  mailbox Sent {
    auto = subscribe
    special_use = \Sent
  }
  mailbox Trash {
    auto = subscribe
    special_use = \Trash
  }
  prefix =
  separator = /
  type = private
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf
  driver = sql
}
protocols = imap
service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
  unix_listener auth-master {
    group = vmail
    mode = 0660
    user = vmail
  }
  user = $default_internal_user
}
ssl = no
userdb {
  args = /etc/dovecot/dovecot-sql.conf
  driver = sql
}

Наконец, моя конфигурация MySQL

driver = mysql
# The mysqld.sock socket may be in different locations in different systems.
# Use "host= ... pass=foo#bar" with double-quotes if your password has '#' character.
connect = host=localhost dbname=postfix user=root password=supersecretpass
default_pass_scheme = MD5-CRYPT

# Alternatively you can connect to localhost as well:
#connect = host=localhost dbname=mails user=admin password=pass # port=3306

password_query = SELECT username, domain, password, \
                 CONCAT('maildir:~/', maildir) AS userdb_home, \
                 '1000' AS userdb_uid, '1000' AS userdb_gid \
                 FROM mailbox WHERE username = '%n' AND domain = '%d'

user_query = SELECT CONCAT('maildir:~/', maildir) as mail, '1000' AS uid, '1000' as gid FROM mailbox WHERE username = '%n' AND domain = '%d'

# For using doveadm -A:
iterate_query = SELECT username, domain FROM mailbox

Я в полной потере!

0
задан 8 February 2018 в 06:34
1 ответ

Ошибка довольно ясно:

Error: user mail@myserver.io: Initialization failed: Namespace '': Home directory not set for user. Can't expand ~/ for mail root dir in: ~/myserver.io/mail/

Dovecot не знает, куда поместить почту, потому что вы установили maildir как ~ / myserver.io / mail / , но вы не сказали ему, где находится пользователь каталог есть. Попробуйте что-нибудь подобное, которое устанавливает home , а также userdb_mail :

password_query = SELECT username, domain, password, \
             FROM mailbox WHERE username = '%n' AND domain = '%d' 
user_query     = SELECT CONCAT('maildir:~/', maildir) as userdb_mail,\
             CONCAT('/home/', username) as home,\
             '1000' AS uid, '1000' as gid \
             FROM mailbox WHERE username = '%n' AND domain = '%d'
0
ответ дан 5 December 2019 в 06:37

Теги

Похожие вопросы