Servidor POP/IMAP com Cyrus

A implementação padrão, de referência, do protocolo IMAP é baseada no servidor Cyrus. O servidor Cyrus usa um método próprio de armazenamento de mensagens. Cada mensagem é armazenada em um arquivo. Os cabeçalhos das mensagens e o estado das mensagens (lido, por exemplo) são armazenados em uma base de dados.

Todas as mensagens são indexadas para melhor performance. O servidor Cyrus-IMAP é tido como umas das implementações mais rápidas e é apropriado para manuseio de grande volume de usuários e mensagens.

O Cyrus-IMAP usa o autenticador externo Cyrus-SASL, baseado na SASL (Camadas de Autenticação e Segurança Simples). O serviço “saslauthd” é responsável por atender aos pedidos de autenticação.

A tarefa de configurar a camada de autenticação para uso do OpenLDAP possibilita usos futuros da infraestrutura, como a implementação de SMTP autenticado.

Instalando e configurando suporte a SASL

Uma vez que vamos utilizar o Cyrus com autenticação SASL é fundamental instalar e configurar esse serviço antes.

1. Instale o “sasluthd” com o seguinte comando:

aptitude install sasl2-bin

2. Edite o arquivo /etc/default/saslauthd

3. Altere a opção START para “yes”

4. Altere a opção MECHANISMS para “ldap”

5. Reinicie o “saslauthd” com o seguinte comando:

/etc/init.d/saslauthd restart

6. Crie o arquivo “/etc/saslauthd.conf” com o seguinte conteúdo:

ldap_servers: ldap://ldap__.kyapanel.com.br
ldap_port: 389
ldap_version: 3
ldap_referrals: no
ldap_auth_method: bind
ldap_search_base: dc=kyapanel,dc=com,dc=br
ldap_filter: uid=%u

Explicando

linha 1 – Define o “host” do servidor LDAP onde será feita a pesquisa
linha 2 – Define a porta de conexão com o servidor LDAP
linha 3 – Define a versão do protocolo que será utilizada
linha 4 – Define se o cliente poderá ou não seguir referências lógicas
linha 5 – Define o método de autenticação (bind | custom | fastbind)*
linha 6 – Define o “galho” onde a pesquisa será realizada
linha 7 – Define o filtro de pesquisa

A opção desconhecida na lista acima é a “ldap_auth_method”. Vamos entender as três opções:

bind – Esta é a opção padrão e ela é utilizada para perguntar diretamente à base LDAP se o par usuário + senha coincidem;
custom – Esta opção usa o atributo “userPassowrd” para validar o par usuário + senha. Ele suporta os “hashes”: crypt, md5, smd5, sha e ssha. Além de texto plano.
fastbind – É igual à opção “bind” mas utiliza o DN completo para validação.

7. Utilize o comando “testsaslauthd” para testar o SASL. Abaixo um exemplo:

testsaslauthd -u fulano1 -p fulano1

Perceba que a opção “-u” define o usuário e a opção “-p” define a senha do usuário. O resultado do comando é auto-explicativo e indicará se a conexão entre o SASL e o LDAP foi o não realizada com sucesso.

Instalando o Cyrus

Para instalar o Cyrus execute o seguinte comando:

aptitude install cyrus21-pop3d cyrus21-imapd cyrus21-admin

Configurando o Cyrus

1. Edite o arquivo de configuração do Cyrus, /etc/imapd.conf

2. Descomente a opção “admins”

3. Descomente a opção “sasl_mech_list”

4. Descomente e defina a opção “sasl_pwcheck_method” para “saslauthd”

5. Reinicie o Cyrus utilizando o seguinte comando:

/etc/init.d/cyrus21 restart

Configurando o Postfix para usar LMTP

Para que o Postfix possa entregar as mensagens ao Cyrus é necessário configurá-lo.

1. Edite o arquivo de configuração /etc/postfix/main.cf e adicione o conteúdo abaixo:

mailbox_transport = lmtp:unix:/var/run/cyrus/socket/lmtp

2. É necessário “desenjaular” o seviço “lmtp”, que por padrão vem enjaulado no Postfix. Para fazer isso edite o arquivo /etc/postfix/master.cf e procure pela opção “lmtp”. Altere a configuração para que fique assim:

lmtp      unix  -       -       n       -       -       lmtp

Perceba que a alteração está na troca do caracter “-” pelo caracter “n”.

3. Será necessário criar o grupo “lmtp”, adicioná-lo ao grupo postfix e depois ajustar às permissões do arquivo de “SOCKET” do Cyrus. Para isso execute:

dpkg-statoverride --remove /var/run/cyrus/socket
dpkg-statoverride --add cyrus postfix 750 /var/run/cyrus/socket

4. Reinicie o Cyrus e o Postfix com o comando:

/etc/init.d/cyrus21 restart
/etc/init.d/postfix restart

Criando contas no Cyrus

Antes de poder criar as contas no Cyrus será necessário criar o usuário “cyrus” na base LDAP. Esse é o usuário administrativo do Cyrus.

1. Crie um arquivo chamado “cyrus.ldif” com o seguinte conteúdo:

dn: cn=cyrus,dc=kyapanel,dc=com,dc=br
cn: cyrus
objectClass: organizationalRole
objectClass: posixAccount
objectClass: simpleSecurityObject
uid: cyrus
uidNumber: 1010
gidNumber: 1010
homeDirectory: /home/cyrus
userPassword: 123456
description: Cyrus Admin user

2. Adicione o conteúdo do arquivo “ldif” com o comando:

ldapadd -h ldap__.kyapanel.com.br -p 389 -x -D cn=admin,dc=kyapanel,dc=com,dc=br  -w senha -f cyrus.ldif

3. Para adicionar as contas no Cyrus utilize os comandos abaixo:

cyradm --user cyrus ldap__.kyapanel.com.br
IMAP Password:
ldap__.kyapanel.com.br> cm user.fulano1
ldap__.kyapanel.com.br> cm user.fulano1.SENT
ldap__.kyapanel.com.br> cm user.fulano1.TRASH
ldap__.kyapanel.com.br> cm user.fulano1.SPAM
ldap__.kyapanel.com.br> quit

Testes de funcionamento

Para saber se tudo está funcionando como deveria vamos enviar uma mensagem ao usuário fulano1@kyapanel.com.br e ver se a mensagem está acessível pelo protocolo POP.

1. Abra um terminal e monitore o arquivo de “log” do Postfix:

tail -f /var/log/mail.log

2. Abra um segundo terminal e envie uma mensagem para o usuário fulano1@kyapanel.com.br:

echo "Teste final" | mail -s "Teste final" fulano1@kyapanel.com.br

Procure pela mensagem de sucesso, ou seja, “status=sent”

3. No mesmo terminal utilize o comando “telnet” para se conectar na porta 110 que é a porta utilizada pelo protocolo POP3:

telnet ldap__.kyapanel.com.br 110
user fulano1
pass fulano1
list
retr 1
quit

Licença

Copyright 2007 Anahuac de Paula Gil e Francisco Kem Iti Saito

Permite-se distribuição, publicação e cópia literal da íntegra deste documento, sem pagamento de royalties, desde que sejam preservadas a nota de copyright, a URL oficial do documento e esta nota de permissão.

Permite-se também distribuição, publicação e cópia literal de seções individuais deste documento, sem pagamento de royalties, desde que sejam preservadas a nota de copyright e a nota de permissão acima, e que a URL oficial do documento seja preservada ou substituída pela URL oficial da seção individual.

openldap_basico/servidor_cyrus_21.txt · Last modified: 2009/08/19 13:59 by anahuac
Recent changes RSS feed Creative Commons License Donate Driven by DokuWiki