2015-02-19 1 views
0

Я могу войти на свой IMAP-сервер, используя мой username, но не могу использовать [email protected] (связанный: Dovecot Authentication failed if trying login with @domain). То же самое происходит для SMTP с exim4.Конфигурировать dovecot и exim4, чтобы принять [email protected] logins

Как настроить dovecot (IMAP) и exim4 (SMTP), чтобы разрешить [email protected] в качестве логина?

EDIT: Я использую driver = passwd для userdb и driver = pam для passdb.

ответ

0
  1. Необходимо создать пользователей в полной форме [email protected].
  2. Регистрация автозаполнения входа в систему по @hostname, если часть домена опущена, перед вызовом dovecot-auth.

Поскольку существует много догов/exim howtos, готового к использованию рецепта для вашего случая нет.

+0

Пользователи уже созданы только с 'username', и изменений, которые вызывают много неприятностей. Неужели это можно сделать наоборот? Для dovecot я нашел 'username_format =% n', но не могу получить этот параметр для работы с' userdb {driver = passwd} '. –

0

Вы можете изменить свой SQL-запрос, чтобы использовать только первую часть перед знаком @, используя функцию substring_index(). Удобно, этот строковый поисковый запрос вернет целую строку, если нет знака @. Это означает, что если клиент вводит «[email protected]», он будет использовать правильное значение (только «local_part»), и если клиент входит только «пользователь», он вернет всю строку.

Пример:

mysql> select substring_index('[email protected]','@',1); 
+-------------------------------------------+ 
| substring_index('[email protected]','@',1) | 
+-------------------------------------------+ 
| user          | 
+-------------------------------------------+ 
1 row in set (0.00 sec) 

mysql> select substring_index('user','@',1); 
+-------------------------------+ 
| substring_index('user','@',1) | 
+-------------------------------+ 
| user       | 
+-------------------------------+ 
1 row in set (0.00 sec) 
+0

Я использую driver = password. Наверное, я должен был это отметить, но я думал, что решение не будет специфичным для бэкэнд. –

+0

У Exim нет драйвера с именем «password». В exim аргументы вашего клиента передаются в $ auth1 (имя пользователя) и $ auth2 (пароль) для LOGIN и находятся в $ auth2 (имя пользователя) и $ auth3 (пароль) для PLAIN. Поскольку вы просто вызываете оболочку dovecot для проверки параметров auth, измените ее, чтобы передать значения: $ {local_part: $ auth1} для LOGIN и $ {local_part: $ auth2} для PLAIN. Включите в свое сообщение полные exim PLAIN и LOGIN-аутентификаторы для получения лучших предложений. –

Смежные вопросы