Использование почтового сервера 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

должен быть использован.

Другие вопросы по тегам