Cyrus Aggregator - Escalando o IMAP do Expresso

Enviado por Rodrigo Tornis em 25/10/2010 18:00:28
Primeiramente quero dar todos os créditos a:

Fábio Schmidt - 4Linux(Autor do Documento)
Luiz Gustavo - 4Linux(Autor do Documento)
William Merlotto - Prognus(Desenvolvimento)
Ronaldo Wanzeller - CAIXA/CNDTI(Testes no ambiente)
José Rômulo - CAIXA/GEART(Coordenador)

Obs: Os procedimentos foram feitos em ambiente de homologação com vistas a testar todas as funcionalidades que o Cyrus Aggregator oferece, dentre elas a de mover caixa postais entre servidores diferentes

Vamos aos procedimentos...

Instalação e Configuração do Cyrus Aggregator

O Cyrus IMAP Aggregator (IMAP Murder) distribui de forma transparente caixas postais IMAP e POP entre múltiplos servidores. O Aggregator possibilita que os usuários acessem caixas postais de todos os servidores do ambiente a partir ou não de um ponto único.
1-Arquitetura

A solução possui três classes de servidores: Frontend, Backend e Mupdate (Murder). Os clientes IMAP conecta no servidores Fontends que por sua vez realiza a consulta no servidor MURDER perguntando em qual Backend esta caixa postal do cliente conectado. Então o servidor MURDER informa ao Fontend que estabelece a comunicação com direta com o Backend trazendo a caixa postal do usuário.Os servidores Backend armazenam as caixas postais e informam ao servidor MURDER a sua localização, permissões e mudanças que por sua vez sincronizam com os Frontends a posição das caixa postais. Neste cenário realizamos o teste com 4 máquinas, sendo 1 Fontend, 1 Murder e 2 Backends.
2-Instalando os pacotes necessários(realizar em todos os servidores Frontends, Murder e Backends):

# aptitude install cyrus22-murder cyrus22-imapd sasl2-bin cyrus22-admin libsasl2-modules

3-Criar o certificado e copiar para os servidores Frontend, Backend e Murder no diretório /etc/ssl/certs:

# cd /etc/ssl/certs
# openssl req -new -nodes -out server.csr -keyout server.key
# openssl x509 -in server.csr -out server.crt -req -signkey server.key
# openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 99999
# cat server.key server.crt > server.pem

4-Configurando o Murder

a) - Editar os seguintes os parâmetros no arquivo /etc/imapd.conf:

# PERMITE UTILIZAR PONTO ENTRE O NOME DO USUÁRIO
unixhierarchysep: yes
# Mecanismos de autenticação suportados
sasl_mech_list: PLAIN LOGIN
# Método de autenticação
sasl_pwcheck_method: auxprop
#Usuário que são administradores do Cyrus
admins: expresso-admin murder

#Apontar o diretório dos certificados
tls_cert_file: /etc/ssl/certs/server.pem
tls_key_file: /etc/ssl/certs/server.pem
tls_ca_file: /etc/ssl/certs/server.pem
tls_ca_path: /etc/ssl/certs

b) - Editar os seguintes os parâmetros no arquivo /etc/cyrus.conf:

# Ativar a seguinte linhas para habilitar o Cyrus MURDER master
# (mupdate master, only one in the entire cluster)
mupdate cmd="mupdate -m" listen=3905 prefork=1
# proxies that will connect to the backends

# ATENÇÃO - Comentar as linhas abaixo

#imap cmd="proxyd" listen="imap" prefork=0 maxchild=100
#imaps cmd="proxyd -s" listen="imaps" prefork=0 maxchild=100
#pop3 cmd="pop3proxyd" listen="pop3" prefork=0 maxchild=50
#pop3s cmd="pop3proxyd -s" listen="pop3s" prefork=0 maxchild=50
#lmtp cmd="lmtpproxyd" listen="lmtp" prefork=1 maxchild=20

c) - Editar o arquivo /etc/default/saslauthd alterando os seguintes parâmetros:

START=yes
MECHANISMS="sasldb"

d) - Executar o comando para criar os usuários no SASL:

# saslpasswd2 -c murder
# saslpasswd2 -c expresso-admin

5-Configurando o Backend

a) - Editar os seguintes os parâmetros no arquivo /etc/imapd.conf:

unixhierarchysep: yes
# Mecanismos de autenticação suportados
sasl_mech_list: PLAIN LOGIN
# Método de autenticação
sasl_pwcheck_method: auxprop
#Usuário que são administradores do Cyrus
admins: expresso-admin murder

#Apontar o diretório dos certificados
tls_cert_file: /etc/ssl/certs/server.pem
tls_key_file: /etc/ssl/certs/server.pem
tls_ca_file: /etc/ssl/certs/server.pem
tls_ca_path: /etc/ssl/certs

#Nome do servidor Murder(hostname)
mupdate_server: murder
#Porta do servidor Murder
mupdate_port: 3905
#Usuário para conectar no servidor Murder
mupdate_authname: expresso-admin
mupdate_username: expresso-admin
#Senha do usuário do servidor Murder
mupdate_password: 123
mupdate_retry_delay: 10
proxy_authname: expresso-admin

#Incluir os Backends que esse Backend fara contato no caso de transferência de
#Caixas Postais formato é: hostname_parametro ex: maquina_password: senha
cyrus_password: 123
cyrus2_password: 123

# Habilita a opção de mover caixas postais
allowusermoves: yes
allowsubscribes: yes

b) - Editar os seguintes os parâmetros no arquivo /etc/cyrus.conf:

# PARAMETRO NECESSÁRIO NOS SERVIDORES BACKEND, FAZ A SINCRONIZAÇÃO DAS CAIXAS POSTAIS COM O MURDER NA INICILIZAÇÃO

mupdatepush cmd="/usr/sbin/ctl_mboxlist -m"

imap cmd="imapd -U 30" listen="imap" prefork=0 maxchild=100
imaps cmd="imapd -s -U 30" listen="imaps" prefork=0 maxchild=100
lmtp cmd="lmtpd -a" listen="lmtp" prefork=0 maxchild=20
sieve cmd="timsieved" listen="sieve" prefork=0 maxchild=100

# ATENÇÃO - Comentar as linhas abaixo

#imap cmd="proxyd" listen="imap" prefork=0 maxchild=100
#imaps cmd="proxyd -s" listen="imaps" prefork=0 maxchild=100
#pop3 cmd="pop3proxyd" listen="pop3" prefork=0 maxchild=50
#pop3s cmd="pop3proxyd -s" listen="pop3s" prefork=0 maxchild=50
#lmtp cmd="lmtpproxyd" listen="lmtp" prefork=1 maxchild=20

c) - Editar o arquivo /etc/default/saslauthd alterando os seguintes parâmetros:

START=yes
MECHANISMS="sasldb"

d) - Executar o comando para criar os usuários no SASL:

# saslpasswd2 -c murder
# saslpasswd2 -c expresso-admin

6-Configurando o Frontend

a) - Editar os seguintes os parâmetros no arquivo /etc/imapd.conf:

unixhierarchysep: yes
# Mecanismos de autenticação suportados
sasl_mech_list: PLAIN LOGIN
# Método de autenticação
sasl_pwcheck_method: auxprop
#Usuário que são administradores do Cyrus
admins: expresso-admin murder

#Apontar o diretório dos certificados
tls_cert_file: /etc/ssl/certs/server.pem
tls_key_file: /etc/ssl/certs/server.pem
tls_ca_file: /etc/ssl/certs/server.pem
tls_ca_path: /etc/ssl/certs

#Nome do servidor Murder(hostname)
mupdate_server: murder
#Porta do servidor Murder
mupdate_port: 3905
#Usuário para conectar no servidor Murder
mupdate_authname: expresso-admin
mupdate_username: expresso-admin
#Senha do usuário do servidor Murder
mupdate_password: 123
mupdate_retry_delay: 10
proxy_authname: expresso-admin

#Incluir os Backends que esse Backend fara contato no caso de transferência de
#Caixas Postais formato é: hostname_parametro ex: maquina_password: senha
cyrus_password: 123
cyrus2_password: 123

# Habilita a opção de mover caixas postais
allowusermoves: yes
allowsubscribes: yes

b) - Editar os seguintes os parâmetros no arquivo /etc/cyrus.conf:

# ATENÇÃO - Comentar as linhas abaixo
#imap cmd="imapd -U 30" listen="imap" prefork=0 maxchild=100
#imaps cmd="imapd -s -U 30" listen="imaps" prefork=0 maxchild=100
#pop3 cmd="pop3d -U 30" listen="pop3" prefork=0 maxchild=50
#pop3s cmd="pop3d -s -U 30" listen="pop3s" prefork=0 maxchild=50
#nntp cmd="nntpd -U 30" listen="nntp" prefork=0 maxchild=100
#nntps cmd="nntpd -s -U 30" listen="nntps" prefork=0 maxchild=100

# ATENÇÃO - Descomentar as linhas abaixo
imap cmd="proxyd" listen="imap" prefork=0 maxchild=100
imaps cmd="proxyd -s" listen="imaps" prefork=0 maxchild=100

# Realiza o sincronismo com o Murder tornando-o um cache do Murder das caixas postais
mupdate cmd="mupdate" listen=3905 prefork=1


c) - Editar o arquivo /etc/default/saslauthd alterando os seguintes parâmetros:

START=yes
MECHANISMS="ldap"

d) - Criar o arquivo /etc/saslauthd.conf conforme modelo abaixo:

ldap_servers: ldap://IP_DO_SERVIDOR_LDAP
ldap_port: 389
ldap_version: 3
ldap_referrals: no
ldap_search_base: dc=teste,dc=com
ldap_bind_dn: cn=admin,dc=teste,dc=com
ldap_password: 123
ldap_auth_method: bind
ldap_debug: 6
ldap_verbose: on

7 - Reiniciando os serviços(Executar os procedimentos em todos os servidores Fontends,Backends e Murder)

# /etc/init.d/saslauthd restart
# /etc/init.d/cyrus-imapd restart

8 - Considerações Finais

a) - O nosso servidor Frontend esta instalado na mesma máquina do que hospeda o Expresso.
b) - Após realizado as configurações acima é necessário configurar o Expresso na opção "Configuração do servidor" e configurar o servidor IMAP/POP colocando o fqdn ou IP do servidor Frontend.

Fonte: http://www.expressolivre.org/newbb/viewtopic.php?forum=8&topic_id=1811&post_id=11333