На моем сервере LDAP (ApacheDS)
У меня есть пользователи под ou=users,ou=system
.
Я написал приведенную ниже конфигурацию в Джеймса, и оба сервера могут запускаться (DS и James).
<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
с
Я хочу спросить, как я могу войти через Джеймса (почтовый сервер) в свою учетную запись на сервере LDAP? Что писать для бла @ бла. я думаю, что могу использовать uid
для первого бла, но я не могу определить домен через Джеймса, потому что его шлюз LDAP доступен только для чтения.
ШАГИ ПО АУТЕНТИФИКАЦИИ ДЖЕЙМСА С 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», а его пароль по умолчанию - «секретный», поэтому нам нужны следующие атрибуты:
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
должен быть использован.