Сконфигурируйте dovecot и exim4 для принятия логинов username@company.com
Я могу войти на свой IMAP-сервер, используя мой username
, но не могу использовать username@company.com
(связанный: аутентификация Dovecot завершилась неудачно при попытке входа с помощью @domain). То же самое происходит для SMTP с exim4.
Как я могу настроить dovecot
(IMAP) и exim4 (SMTP), чтобы разрешить username@company.com в качестве логина?
РЕДАКТИРОВАТЬ: я использую driver = passwd для userdb и driver = pam для passdb.
3 ответа
У меня был такой же вопрос и похожие причины. Возможно, это не лучший вариант, но я использовал тестовую учетную запись, давайте назовем ее "user" для иллюстрации и скопировал строку пользователя в /etc/passwd (я на облачном сервере Ubuntu) и изменил name в скопированной строке - просто добавьте fqdn, чтобы UID пользователя имел два имени: 'user@mydomain.com' и оригинал, просто 'user'. Сначала я установил учетную запись на Thunderbird, используя только пользователя, чтобы войти в dovecot и exim, протестировал send/recieve ok. Затем измените имя входа в Thunderbird для обоих серверов на user@mydomain.com. Мне пришлось повторно ввести пароль, но, похоже, он работал очень хорошо. Он протестировал отправку / получение нормально, а в остальном выглядит так же, как и раньше. Сейчас у меня мало времени, поэтому я установил пароль отдельно для обеих учетных записей, но я не уверен, что эта часть необходима. Мне придется проверить позже, но я думаю, что Пэм ищет пароли, соответствующие PID (если я ошибаюсь, пожалуйста, кто-нибудь, скажите мне!). Во всяком случае, еще тестирование позже. Я дам вам знать, если есть вредные побочные эффекты. Кроме того: может быть возможно просто добавить полный адрес электронной почты в качестве псевдонима в /etc/alias, но я не проверял это, и я только подумал об этом. Кто угодно попробует это, оставьте комментарий! Спасибо! Чао...
Вы можете изменить свой SQL-запрос на использование только первой части перед знаком @ с помощью функции substring_index(). Удобно, если этот строковый поисковый запрос вернет всю строку, если нет знака @. Это означает, что если клиент вводит "user@domain.com", он будет использовать правильное значение (только "local_part"), а если клиент вводит только "user", он будет возвращать всю строку.
Пример:
mysql> select substring_index('user@example.net','@',1);
+-------------------------------------------+
| substring_index('user@example.net','@',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)
- Вы должны создавать пользователей в полной форме
user@domain.tld
, - Настройте автозаполнение при входе через @
hostname
если доменная часть опущена, передdovecot-auth
призывание.
Поскольку существует множество dot ocot/exim howtos, готового рецепта для вашего случая не существует.