在我的 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
应该使用。