Привет, я бегу Linux <hostname> 4.9.0-11-amd64 #1 SMP Debian 4.9.189-3+deb9u1 (2019-09-20) x86_64 GNU/Linux
Я новичок в настройке почтовых серверов. У меня есть постфикс для SMTP, и он может получать электронные письма. Версия Postfix mail_version = 3.1.12
Я также установил версию Dovecot:2.2.27 (c0f36b0)
Моя конфигурация такова, что POSTFIX настроен на использование DOVECOT SASL через локальный сокет.
Моя система настроена на хранение электронной почты в /var/mail/<owndomain.org>/<username>
. Для каждого домена у меня есть собственный файл passwd, в котором dovecot должен искать имена пользователей и пароли. /var/mail/<owndomain.org>/passwd
.
Я создал virtualuser
для доступа к почте и аутентификации пользователей. Моя конфигурация голубятни: В /etc/dovecot/dovecot.conf
я добавил в конец файла
userdb {
driver = passwd-file
args = username_format=%n /var/mail/%d/passwd
default_fields = uid=virtualmail gid=virtualmail home=/var/mail/%d/%n
}
passdb {
driver = passwd-file
args = username_format=%n /var/mail/%d/passwd
}
Содержимое файла passwd имеет формат:
<username_without_domain>:{plain}test
В /etc/dovecot/conf.d/10-auth.conf
я установил:
disable_plaintext_auth = no
auth_mechanisms = plain login
В /etc/dovecot/conf.d/10-mail.conf
я установил:
mail_home = /var/mail/home/%d/%n
mail_location = mbox:~/mail:INBOX=/var/spool/mail/%d/%n
mail_privileged_group = virtualmail
Теперь проблема: Я тестировал конфигурацию с помощью telnet. POSTFIX получает электронную почту, сохраняет ее. Нет проблем. Когда я пытался войти в Dovecot IMAP с помощью Telnet, я получаю следующее сообщение:
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH-LOGIN] Dovecot ready.
a login "username@owndomain.org" "test"
a NO [UNAVAILABLE] Internal error occured. Refer to server log for more information.
Я включил подробное ведение журнала, и это результат журналов: /var/log/dovecot.log
было это сообщение:
Nov 16 14:20:49 auth: Error: plain(username@owndomain.org,192.168.9.131,<RF4llXaXisPAqAmD>): user not found from any userdbs
Nov 16 14:20:49 imap: Error: Authenticated user not found from userdb, auth lookup id=684589057 (client-pid=9601 client-id=1)
/var/log/dovecot-debug.log
было это сообщение:
Nov 16 14:20:18 auth: Debug: Loading modules from directory: /usr/lib/dovecot/modules/auth
Nov 16 14:20:18 auth: Debug: Read auth token secret from /var/run/dovecot/auth-token-secret.dat
Nov 16 14:20:18 auth: Debug: auth client connected (pid=9601)
Nov 16 14:20:47 auth: Debug: client in: AUTH 1 PLAIN service=imap session=RF4llXaXisPAqAmD lip=192.168.2.2 rip=192.168.9.131 lport=143 rport=$
Nov 16 14:20:47 auth-worker(9603): Debug: Loading modules from directory: /usr/lib/dovecot/modules/auth
Nov 16 14:20:47 auth-worker(9603): Debug: pam(username@owndomain.org,192.168.9.131,<RF4llXaXisPAqAmD>): lookup service=dovecot
Nov 16 14:20:47 auth-worker(9603): Debug: pam(username@owndomain.org,192.168.9.131,<RF4llXaXisPAqAmD>): #1/1 style=1 msg=Password:
Nov 16 14:20:49 auth: Debug: passwd-file /var/mail/owndomain.org/passwd: Read 2 users in 0 secs
Nov 16 14:20:49 auth: Debug: passwd-file(username@owndomain.org,192.168.9.131,<RF4llXaXisPAqAmD>): lookup: user=username file=/var/mail/owndomain.org/passwd
Nov 16 14:20:49 auth: Debug: client passdb out: OK 1 user=username@owndomain.org
Nov 16 14:20:49 auth: Debug: master in: REQUEST 684589057 9601 1 a61dd67ee43390596ddf86e6c08db6f9 session_pid=9604 request_auth_token
Nov 16 14:20:49 auth-worker(9603): Debug: passwd(username@owndomain.org,192.168.9.131,<RF4llXaXisPAqAmD>): lookup
Nov 16 14:20:49 auth: Debug: passwd-file(username@owndomain.org,192.168.9.131,<RF4llXaXisPAqAmD>): lookup: user=username file=/var/mail/owndomain.org/passwd
Nov 16 14:20:49 auth: Debug: master userdb out: NOTFOUND 684589057
И я совершенно не понимаю, в чем проблема. Потому что кажется, что пароль был найден, а пользователя нет? Пароль и пользователь ищутся в одном файле passwd. Я что-то забыл настроить? Любая помощь приветствуется!
Хорошо, я обнаружил проблему. Или так кажется.
В файле passwd я использовал формат
username:{scheme}password
но я не добавил двойные двоеточия для остальных пустых значений, поэтому правильный формат должен был быть:
username:{scheme}password:::::
Проблема решена.