LDAPサーバー(ApacheDS)で
ou=users,ou=system
の下にユーザーがいます。
以下の構成をJamesに書き込んだところ、両方のサーバーが起動できます(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
、CN
、uid
がありました。
質問したいのですが、James(メールサーバー)を介してLDAPサーバーのユーザーアカウントにログインするにはどうすればよいですか? blah @blahのために何を書くべきですか。最初の何とかにはuid
を使用できると思いますが、LDAPゲートが読み取り専用であるため、Jamesを介してドメインを定義することはできません。
LDAPを使用してJAMESを認証する手順(この場合はApacheDS)
Jamesのconf/usersrepository.xmlにあるJPAに関するレコードを削除します
下の行を追加すると、最後の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」というドメインをJamesに追加する必要があります。これにより、ドメインに関する情報がJPAに保存されます。
${james_root}/container-spring/target/appassembler/bin/james-cli.sh -h localhost adddomain
example.com
ApacheDSの管理者は「ou = system」エントリのadminであり、デフォルトのパスワードは「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 [email protected]
PASS yourUsersPassword
使用すべきです。