Использование почтового сервера Apache James с LDAP
В моем сервере LDAP (ApacheDS)
У меня есть пользователи под ou=users,ou=system
,
Я написал конфигурацию ниже в Джеймс, и оба сервера могут запускаться (DS и Джеймс).
<repository name="LocalUsers"
class="org.apache.james.user.ldap.ReadOnlyUsersLDAPRepository"
ldapHost="ldap://localhost:10389"
principal="uid=admin,ou=system" credentials="secret" userBase="ou=users,ou=system"
userIdAttribute="uid"/>
Я понимаю, что моя конфигурация в порядке, потому что я получаю предупреждение "репозиторий пользователей только для чтения", когда я пытаюсь добавить пользователя с помощью james-cli.sh
Я добавил некоторых пользователей непосредственно на сервер LDAP, они DN
"S,CN
и uid
"s
Я хочу спросить, как я могу войти через Джеймс (почтовый сервер) в свою учетную запись пользователя на сервере LDAP? Что я должен написать для бла @ бла. я думаю, что могу использовать uid
для первого бла, но я не могу определить домен через Джеймса, потому что его шлюз LDAP только для чтения.
1 ответ
ШАГИ ДЛЯ АУТЕНТИФИКАЦИИ ДЖЕЙМСА С LDAP(ApacheDS для этого случая)
Удалить запись о JPA в файле conf/usersrepository.xml Джеймса
и добавьте ниже строки, последний ivew должен быть таким:
<xml>
<repository name="LocalUsers"
class="org.apache.james.user.ldap.ReadOnlyUsersLDAPRepository"
ldapHost="ldap://localhost:10389"
principal="uid=admin,ou=system" credentials="secret" userObjectClass="inetOrgPerson" userBase="ou=users,ou=system"
userIdAttribute="uid">
<UsersDomain>example.com</UsersDomain>
<LDAPRoot>dc=example,dc=com</LDAPRoot>
<MailAddressAttribute>mail</MailAddressAttribute>
<IdentityAttribute>uid</IdentityAttribute>
<AuthenticationType>simple</AuthenticationType>
<ManagePasswordAttribute>TRUE</ManagePasswordAttribute>
<PasswordAttribute>userPassword</PasswordAttribute>
</repository>
</xml>
Немного объяснить;
В конструкции по умолчанию ApacheDS есть корень, имеющий "dc=example,dc=com"
Из-за этого должны быть добавлены строки:
<UsersDomain>example.com</UsersDomain>
<LDAPRoot>dc=example,dc=com</LDAPRoot>
И домен под названием "example.com" должен быть добавлен к Джеймсу, он сохраняет информацию о доменах все еще в JPA.
${james_root}/container-spring/target/appassembler/bin/james-cli.sh -h localhost adddomain
example.com
Администратор ApacheDS является администратором в разделе "ou=system", а его пароль по умолчанию - "secret", поэтому нам нужны следующие атрибуты:
principal="uid=admin,ou=system" credentials="secret"
В ApacheDS, когда вы хотите добавить запись, для нее требуются классы объектов, ее следует выбрать "inetOrgPerson", и она добавит еще несколько автоматически, поэтому атрибут должен быть добавлен в конфигурацию:
userObjectClass="inetOrgPerson"
Пользователи находятся под записью "ou=users,ou=system", поэтому атрибут должен быть добавлен:
userBase="ou=users,ou=system"
Для ApacheDS userIdAttribute равен "uid", поэтому он указан:
userIdAttribute="uid"
В ApacheDS новые пользователи должны быть добавлены в "ou=users,ou=system"
с "uid"
и "userPassword"
атрибутов. Также при добавлении нового пользователя DN должно содержать "uid"
,
Опрашивая Джеймса, используя, например, POP3,
USER yourUsersUID@example.com
PASS yourUsersPassword
должен быть использован.