Поиск локального пользователя и вход в систему Dovecot не удается. Где моя конфигурация неверна?

Вопрос или проблема

Я использую dovecot 2.3.21 с Ubuntu 24.04.1 LTS. Я пытаюсь настроить сервер для работы как с виртуальными, так и с локальными пользователями. Виртуальные пользователи работают нормально, но у меня возникли проблемы с аутентификацией локального пользователя, когда я пытаюсь получить электронную почту с помощью клиента, такого как Roundcube. Я могу аутентифицировать локального пользователя (который существует в /etc/passwd и имеет действующий домашний каталог) с помощью doveadm:

$ sudo doveadm auth login test <passwd>
passdb: test auth succeeded
дополнительные поля:
  user=test

дополнительные поля userdb:
  test
  system_groups_user=test
  uid=5002
  gid=5002
  home=/home/test
  auth_mech=PLAIN
$

Вот журнал, который создается при попытке входа с помощью Roundcube:

Dec 01 15:23:30 auth: Debug: auth client connected (pid=178248)
Dec 01 15:23:30 auth: Debug: client in: AUTH    1       CRAM-MD5        service=imap    secured session=W92MNDsoEtl/AAAB        lip=127.0.0.1       rip=127.0.0.1   lport=143       rport=55570
Dec 01 15:23:30 auth: Debug: client passdb out: CONT    1       PDM1ODYyOTExNDk5NjY2NjUuMTczMzA4NDYxMEBtYXJhdWRlcj4=
Dec 01 15:23:30 auth: Debug: client in: CONT    1       ZG1hcmMtcnVhQHByb2N1cmF0dXMubmV0IDYyZjRmNmQzY2RjOGY3MTA4ZDliMDMyMDI2YTYxYmNm (предыдущие данные в base64 могут содержать конфиденциальные данные)
Dec 01 15:23:30 auth: Debug: pam([email protected],127.0.0.1,<W92MNDsoEtl/AAAB>): Выполняется поиск в passdb
Dec 01 15:23:30 auth: Debug: pam([email protected],127.0.0.1,<W92MNDsoEtl/AAAB>): passdb не поддерживает поиск учетных данных
Dec 01 15:23:30 auth: Debug: pam([email protected],127.0.0.1,<W92MNDsoEtl/AAAB>): Завершен поиск в passdb
Dec 01 15:23:30 auth: Debug: passwd-file([email protected],127.0.0.1,<W92MNDsoEtl/AAAB>): Выполняется поиск в passdb
Dec 01 15:23:30 auth: Debug: passwd-file([email protected],127.0.0.1,<W92MNDsoEtl/AAAB>): поиск: [email protected] файл=/etc/dovecot/passwd
Dec 01 15:23:30 auth: Info: passwd-file([email protected],127.0.0.1,<W92MNDsoEtl/AAAB>): неизвестный пользователь
Dec 01 15:23:30 auth: Debug: passwd-file([email protected],127.0.0.1,<W92MNDsoEtl/AAAB>): Завершен поиск в passdb
Dec 01 15:23:30 auth: Debug: auth([email protected],127.0.0.1,<W92MNDsoEtl/AAAB>): Запрос аутентификации завершен
Dec 01 15:23:32 auth: Debug: client passdb out: FAIL    1       [email protected]
Dec 01 15:23:32 imap-login: Info: Отключено: Соединение закрыто (ошибка аутентификации, 1 попытка за 2 секунды): user=<[email protected]>, метод=CRAM-MD5, rip=127.0.0.1, lip=127.0.0.1, защищенное, session=<W92MNDsoEtl/AAAB>

Обратите внимание на сообщения “passdb не поддерживает поиск учетных данных” и “неизвестный пользователь”. Вот что у меня настроено в auth-system.conf.ext:

passdb {
  driver = pam
  args = session=yes failure_show_msg=yes dovecot
}

userdb {
  driver = passwd
}

Что мне здесь не хватает?

PAM действительно не поддерживает поиски. Единственное, что он поддерживает, это интерактивная проверка, то есть его нельзя запрашивать о хэше пароля, но можно только дать пароль, и он ответит, действителен он или нет.

Но ваш RoundCube пытается использовать CRAM-MD5, который работает не так — это механизм вызова-ответа (очень похожий на NTLM по концепции), где клиент не отправляет серверу фактический пароль, который он мог бы проверить; вместо этого механизм требует, чтобы Dovecot извлек хэш пароля для проверки ответа на его основе, что PAM сделать не может. (Кроме того, по своей природе CRAM-MD5 требует, чтобы сохраненный хэш был в очень специфическом формате; ваши хэши в /etc/shadow также не сработают.)

Установите ваши Dovecot auth_mechanisms, чтобы предлагать только PLAIN, а не CRAM:

auth_mechanisms = plain

Ответ или решение

Для решения проблемы аутентификации локальных пользователей в Dovecot, важно обратить внимание на конфигурацию, которую вы используете. Исходя из предоставленных данных, можно выделить несколько ключевых моментов, касающихся журналов и конфигурации сервера.

Анализ проблемы

Вы указали, что локальные пользователи, существующие в файле /etc/passwd, не могут аутентифицироваться через Roundcube, в то время как виртуальные пользователи работают без проблем. При этом команда doveadm auth login подтверждает, что аутентификация для локального пользователя проходит успешно.

Сервер Dovecot пытается выполнить аутентификацию, используя метод CRAM-MD5, что приводит к сообщениям об ошибках, таким как "unknown user" и "passdb doesn’t support credential lookups". Эти сообщения указывают на то, что существует несоответствие между методами аутентификации, используемыми вашим клиентом и Dovecot.

Причины возникновения проблемы

Наиболее вероятная причина заключается в том, что метод CRAM-MD5 требует, чтобы сервер мог извлекать хэш пароля для проверки, что невозможно с использованием PAM (Pluggable Authentication Modules). PAM поддерживает только интерактивные проверки, при которых ему передается пароль, и в ответ он указывает, действителен ли он или нет. Ни PAM, ни метод CRAM-MD5 не подходят для обеспечения этого механизма аутентификации.

Решение

Чтобы выйти из данной ситуации, вам необходимо изменить настройки Dovecot и запретить использование CRAM-MD5 в пользу более простой и совместимой схемы аутентификации. Ключевой настройкой здесь будет изменение auth_mechanisms на PLAIN.

  1. Откройте файл конфигурации Dovecot, где у вас указаны настройки аутентификации (например, 10-auth.conf).

  2. Найдите строку, начинающуюся с auth_mechanisms и измените её, если она уже существует:

    auth_mechanisms = plain
  3. Если строки не существует, добавьте её под соответствующим блоком:

    auth_mechanisms = plain
  4. Перезапустите Dovecot, чтобы изменения вступили в силу:

    sudo systemctl restart dovecot

Заключение

После выполнения этих изменений локальные пользователи должны успешно аутентифицироваться через Roundcube, используя метод PLAIN. Это решение должно устранить конфликты, связанные с несовместимостью между методами аутентификации и поддержкой PAM.

Если проблема сохраняется, обязательно проверьте другие возможные пути маршрутизации (например, наличие дополнительных конфигурационных файлов, которые могут перезаписывать настройки) и убедитесь, что ваш клиент правильно настроен для работы с аутентификацией PLAIN.

Этот подход не только обеспечит работоспособность вашей системы, но также повысит общую надежность сервера.

Оцените материал
Добавить комментарий

Капча загружается...