Я устанавливаю Postfic и Dovecot с почтовым сервером LDAP. Мои пользователи в LDAP выглядят следующим образом:
dn: uid=firstname,ou=People,dc=domain,dc=com
uid: firstname
uidNumber: 4025
gidNumber: 4025
givenName: firstname
objectClass: top
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
objectClass: organizationalPerson
objectClass: inetOrgPerson
loginShell: /bin/bash
homeDirectory: /home/firstname
cn: firstname lastname
mail: firstname.lastname@domain.com
Вот как я подключаю Dovecot к LDAP
hosts = ldapserver
ldap_version = 3
base = ou=People,dc=domain,dc=com
deref = never
scope = subtree
user_attrs =
user_filter = (&(objectclass=inetOrgPerson)(uid=%n)
pass_attrs = uid=user,userPassword=password
pass_filter = (&(objectclass=inetOrgPerson)(uid=%n))
default_pass_scheme = SSHA
Когда я ввожу адрес электронной почты и пароль пользователя следующим образом: электронная почта: (скрытый) пароль
и согласно моим настройкам, которые я использовал "% n", как вы видите выше, имя пользователя, используемое для аутентификации, - "firstname.lastname". Я проверил переменные Dovecot, но не нашел в данном случае чего-то полезного для управления переменной "% n".
Я хотел бы продолжать использовать адреса электронной почты как (скрытые), но аутентифицировать пользователей по их имени. Я действительно упираюсь в стену, и любая помощь будет очень благодарна.
Я решил использовать полный адрес электронной почты в качестве имени пользователя. Вот мои настройки:
hosts = LDAP server address
dn = cn=manager,dc=domain,dc=com
dnpass = password
ldap_version = 3
base = ou=People,dc=domain,dc=com
deref = never
scope = subtree
user_attrs =
user_filter = (&(objectclass=inetOrgPerson)(mail=%u)
pass_attrs = mail=user,userPassword=password
pass_filter = (&(objectclass=inetOrgPerson)(mail=%u))
Если у вас еще не было адреса электронной почты в данных LDAP, я бы рекомендовал добавить его.
Найдите полный адрес электронной почты
user_filter = (&(objectclass=inetOrgPerson)(mail=%u))
Если вы хотите пройти аутентификацию как имя.имя, а затем увидеть полный адрес электронной почты (как если бы он использовался для аутентификации), вам необходимо установите userdb_user:
pass_attrs = userdb_user=mail