使用 Apache James 邮件服务器和 LDAP

使用 Apache James 邮件服务器和 LDAP

在我的 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's、CN's 和uid's

我想问一下,我如何通过 James(邮件服务器)登录到 LDAP 服务器中的用户帐户?我应该为 blah@blah 写些什么。我想我可以uid先使用 blah,但我无法通过 James 定义域,因为它的 LDAP 门是只读的。

答案1

使用 LDAP(本例中为 ApacheDS)对 JAMES 进行身份验证的步骤

删除 James 的 conf/usersrepository.xml 中有关 JPA 的记录

并添加以下几行,最后的结果必须是这样的:

<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示例.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 等方式查询 James 时,

USER [email protected]
PASS yourUsersPassword

应该使用。

相关内容