У меня есть комбинированная установка демона Postfix + Dovecot на почтовом сервере (назовем его сервером M), который поддерживает виртуальные домены и поиск пользователей на сервере LDAP (назовем его сервером D). Прямо сейчас я настроил Postfix для доставки почты специально созданному локальному пользователю на сервере M для хранения почты для всех виртуальных пользователей, поэтому почтовый каталог для пользователя находится в формате / home / vmail / <domain > / <идентификатор пользователя>.
В этом случае я также настроил Dovecot для получения почты из каталога пользователя:
userdb static { args = uid=501 gid=501 home=/home/vmail/%d/%n }
Поиск пароля:
passdb ldap { args = /etc/dovecot-ldap.conf }
при этом указанный файл конфигурации содержит следующее:
hosts = server M base = dc=www,dc=example,dc=com ldap_version = 3 auth_bind = yes pass_filter = (mail=%u)
Теперь эта конфигурация работает (класс объекта LDAP реализован в inetOrgPerson), но когда я добавил класс объекта posixAccount в запись пользователя на сервере M, Dovecot перестала распознавать пользователя в формате user @ domain.
Проверка журналов почты показывает, что Dovecot каким-то образом распознает пользователя как «user» вместо «user @ domain», и, таким образом, моя директива userdb вернула / home / vmail // user вместо / home / vmail / domain / user
Как мне изменить мою конфигурацию, чтобы Dovecot снова распознал пользователя как «user @ domain»?
Нашел ответ!
По сути, чтобы Dovecot распознал пользователя как «user @ domain» после аутентификации, выполняемой путем добавления:
pass_attrs = mail=user
Это заставляет Dovecot распознавать пользователя по атрибуту почты в LDAP. Поскольку формат поля - «пользователь @ домен», Dovecot принимает пользователя как «пользователь @ домен».
Мне кажется ложь блок passdb passwd-file {...} или, возможно, аналогичный блок userdb имеет приоритет над блоком passdb ldap