web-dev-qa-db-ja.com

LDAPでのApacheJamesメールサーバーの使用

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サーバーに直接ユーザーを追加しました。ユーザーにはDNCNuidがありました。

質問したいのですが、James(メールサーバー)を介してLDAPサーバーのユーザーアカウントにログインするにはどうすればよいですか? blah @blahのために何を書くべきですか。最初の何とかにはuidを使用できると思いますが、LDAPゲートが読み取り専用であるため、Jamesを介してドメインを定義することはできません。

1
merveotesi

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

使用すべきです。

1
merveotesi