Usando o servidor Apache James Mail com o LDAP

1

No meu servidor LDAP (ApacheDS)

Eu tenho usuários em ou=users,ou=system .

Eu escrevi a configuração abaixo em James e ambos os servidores podem iniciar (DS e 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"/>

Eu entendo minha configuração está OK porque eu recebo aviso "repositório de usuários é somente leitura" quando tento adicionar usuário por james-cli.sh

Eu adicionei alguns usuários diretamente no servidor LDAP, eles tinham DN , CN e uid 's

Eu quero perguntar, como posso fazer login através do James (Mail Server) na minha conta de usuários no servidor LDAP? O que devo escrever para blah @ blah. Eu acho que eu posso usar uid para o primeiro blah, mas eu não posso definir o domínio através de James, porque o seu portão LDAP é somente leitura.

    
por merveotesi 18.07.2012 / 10:28

1 resposta

1

PASSOS PARA AUTENTICAR JAMES COM O LDAP (ApacheDS para este caso)

Exclua o registro sobre o JPA em conf / usersrepository.xml do James

e adicione linhas abaixo, o ultimo ivew deve ser assim:

<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>

Para explicar um pouco;

Na construção padrão do ApacheDS, há uma raiz com "dc = example, dc = com"

Por causa disso, as linhas devem ser adicionadas:

<UsersDomain>example.com</UsersDomain>  
<LDAPRoot>dc=example,dc=com</LDAPRoot> 

E um domínio chamado "example.com" deve ser adicionado ao James, ele salva as informações sobre os domínios ainda no JPA.

${james_root}/container-spring/target/appassembler/bin/james-cli.sh -h localhost adddomain example.com

O admin do ApacheDS é admin na entrada "ou = system", e sua senha padrão é "secret", portanto, precisamos dos seguintes atributos:

principal="uid=admin,ou=system" credentials="secret"

No ApacheDS quando você quer adicionar uma entrada, ela requer classes de objeto, ela deve ser selecionada, "inetOrgPerson" e colocar mais algumas automaticamente, portanto, o atributo deve ser aaded na configuração:

userObjectClass="inetOrgPerson"  

Os usuários estão na entrada "ou = users, ou = system", portanto, o atributo deve ser adicionado:

userBase="ou=users,ou=system" 

Para o ApacheDS, userIdAttribute é "uid", portanto, é especificado:

userIdAttribute="uid"

No ApacheDS, novos usuários devem ser adicionados em "ou=users,ou=system" , com os atributos "uid" e "userPassword" . Além disso, ao adicionar um novo usuário, o DN deve conter "uid" .

Ao consultar James usando, por exemplo, POP3,

USER [email protected]
PASS yourUsersPassword

deve ser usado.

    
por 19.07.2012 / 16:24