Вопрос или проблема
Когда я пытаюсь протестировать функциональность моего IMAP сервера с помощью telnet, я сталкиваюсь со следующей ошибкой.
Если во время теста я опущу @domain.ex, все работает нормально (как видно ниже);
a login user password
a OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT
SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL
CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC
ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS SPECIAL-USE BINARY MOVE] Вошел
если я попробую использовать [email protected], я получаю следующую ошибку:
a login [email protected] password
a NO [AUTHENTICATIONFAILED] Аутентификация не удалась.
Кто-нибудь знает, где я ошибаюсь?
Вывод команды dovecot -n
# 2.2.10: /etc/dovecot/dovecot.conf
# ОС: Linux 2.6.32-openvz-042stab090.5-amd64 x86_64 CentOS Linux release 7.0.1406 (Core)
auth_mechanisms = plain login
disable_plaintext_auth = no
mail_location = maildir:~/Maildir
mbox_write_locks = fcntl
namespace inbox {
inbox = yes
location =
mailbox Drafts {
special_use = \Drafts
}
mailbox Junk {
special_use = \Junk
}
mailbox Sent {
special_use = \Sent
}
mailbox "Sent Messages" {
special_use = \Sent
}
mailbox Trash {
special_use = \Trash
}
prefix =
}
passdb {
driver = pam
}
service auth {
unix_listener auth-userdb {
group = postfix
user = postfix
}
}
ssl = required
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem
userdb {
driver = passwd
}
В качестве драйвера аутентификации вы выбрали драйвер passwd
. Иными словами, пользователь будет искать в файле /etc/passwd
. Вот как выглядит содержимое /etc/passwd
.
Обычно /etc/passwd
содержал только имя пользователя и не имел доменной части. Поэтому очевидно, почему это не срабатывает. Вот некоторые ресурсы относительно dovecot с аутентификацией passwd.
Ответ или решение
Проблема, с которой вы столкнулись, заключается в том, что при попытке аутентификации на вашем IMAP-сервере Dovecot с использованием полного адреса электронной почты (например, [email protected]) возникает ошибка "Authentication failed". Однако при использовании только имени пользователя (например, ‘user’) аутентификация проходит успешно.
Причина проблемы
Основная причина данного поведения кроется в конфигурации Dovecot и в том, как настроено определение пользователей. Ваша конфигурация Dovecot использует passwd
в качестве auth
драйвера:
passdb {
driver = pam
}
это означает, что Dovecot ищет пользователей в файле /etc/passwd
, который, как правило, содержит только имена пользователей без доменной части. Поэтому, когда вы вводите полный адрес электронной почты, Dovecot не может найти соответствующую запись в /etc/passwd
, что приводит к ошибке аутентификации.
Решение
Чтобы исправить эту проблему и обеспечить возможность аутентификации с использованием полного адреса электронной почты, вы можете рассмотреть следующие варианты:
-
Использование пользовательских баз данных:
Вместо того чтобы полагаться только на
/etc/passwd
, вы можете настроить Dovecot для использования более сложного механизма аутентификации, такого как SQL-база данных (MySQL, PostgreSQL и т.д.), LDAP или даже собственного файла с пользователями. Это даст вам возможность хранить и управлять пользователями, где каждый пользователь будет хранить полный адрес электронной почты. -
Изменение конфигурации Dovecot:
Если вы хотите оставить текущую конфигурацию, но при этом желаете аутентифицировать пользователей с доменной частью, вы можете изменить способ аутентификации:
userdb { driver = static args = uid=500 gid=500 home=/home/%u }
Здесь
%u
автоматически заменится на указанное имя пользователя, при этом вам нужно будет убедиться, что соответствующие пользователи существуют в системе. -
Настройка Virtual Users:
Dovecot также поддерживает работу с виртуальными пользователями, что означает, что вы можете настроить своих пользователей в специальной таблице базы данных, что упростит управление множеством доменных адресов. Для этого потребуется создать или изменить существующую конфигурацию.
Проведение тестов
После выполнения вышеуказанных изменений не забудьте:
-
Перезагрузить Dovecot для применения новых настроек:
systemctl restart dovecot
-
Запустить тест с использованием telnet:
telnet your-imap-server 143 a login [email protected] password
Если аутентификация проходит успешно, значит, изменения в конфигурации были успешно применены.
Заключение
Проблема с аутентификацией пользователей в Dovecot при использовании полного адреса электронной почты может быть успешно решена путем изменения конфигурации аутентификации или использования более сложной модели управления пользователями. Если у вас есть дополнительные вопросы или необходима помощь в настройке, не стесняйтесь обращаться за поддержкой.