Аутентифицировать пользователей, используя их имя
Я устанавливаю 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
Когда я ввожу адрес электронной почты пользователя и пароль следующим образом: электронная почта: firstname.lastname@domain.com
пароль: пароль
и согласно моей настройке, которую я использовал "%n", как вы видите выше, имя пользователя, используемое для аутентификации, - "firstname.lastname". Я проверил переменные Dovecot, но не смог найти что-то полезное в этом случае для манипулирования переменной "%n".
Я хотел бы продолжать использовать адреса электронной почты как "firstname.lastname@domain.com", но аутентифицировать пользователей, используя их имя. Я действительно врезался в стену здесь, и любая помощь будет высоко ценится.
3 ответа
Если у вас еще нет адреса электронной почты в ваших данных LDAP, я бы порекомендовал добавить его.
Искать полный адрес электронной почты
user_filter = (&(objectclass=inetOrgPerson)(mail=%u))
Я решил использовать полный адрес электронной почты в качестве имени пользователя. Вот мои настройки:
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))
Если вы хотите аутентифицироваться как firstname.lastname, а затем посмотреть полный адрес электронной почты (как если бы он использовался для аутентификации), вам нужно установить userdb_user:
pass_attrs = userdb_user=mail