• Português
  • Inglês
  • Espanhol

Índice do Fórum Comunidade Expresso Livre
   Performance: Problemas e Melhorias
  Cyrus Aggregator - Escalando o IMAP do Expresso

Navegando neste Tópico:   1 usuários anônimos

 

 Final   Tópico anterior   Próximo tópico
Enviado por Tópico
  •  Rodrigo Tornis
      Rodrigo Tornis
Cyrus Aggregator - Escalando o IMAP do Expresso
#1
Não tão novato
Cadastrado em: 22/6/2010
De
Mensagens: 12
Offline
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.
Enviado em: 25/10/2010 18:00
Criar PDF com esta mensagem Imprimir
Topo
  •  Joaquim Ferraz
Re: Cyrus Aggregator - Escalando o IMAP do Expresso
#2

Cadastrado em: 11/9/2008
De Recife - PE
Mensagens: 1083
Offline
Obrigado por compartilhar.
Enviado em: 25/10/2010 18:37
Criar PDF com esta mensagem Imprimir
Topo
  •  Visitante
      Visitante
Re: Cyrus Aggregator - Escalando o IMAP do Expresso
#3
Visitante
Que legal!! Ótima contribuição Rodrigo, meus parabéns a você e toda sua equipe.

Este seu "case" é muito importante para reforçar aqui na comunidade Expresso Livre a escalabilidade do Cyrus, já que muitos ainda perguntam se isto é possível.


Um abraço,
Enviado em: 26/10/2010 9:31
Criar PDF com esta mensagem Imprimir
Topo
  •  William Merlotto
Re: Cyrus Aggregator - Escalando o IMAP do Expresso
#4

Cadastrado em: 21/11/2006
De Foz do Iguaçu
Mensagens: 994
Offline
Olá!

Muito bacana Tornis!
Parabéns!

Att,
Enviado em: 26/10/2010 12:42
Criar PDF com esta mensagem Imprimir
Topo
  •  Rodrigo Tornis
      Rodrigo Tornis
Re: Cyrus Aggregator - Escalando o IMAP do Expresso
#5
Não tão novato
Cadastrado em: 22/6/2010
De
Mensagens: 12
Offline
Olá Nilton e aos demais amigos...

Quero agradecer as palavras de apoio de todos e mais uma vez levo os agradecimentos aos citados nesse post.

Pedi para a equipe se cadastrar também e logo eles iram contribuir com mais informações

Estamos realizando uma bateria de testes com todo ambiente do Expresso tanto na infra quanto no desenvolvimento a Prognus também esta como parceira e também ira contribuir bastante.

No caso do cyrus aggregator, permite separar caixa postais em servidores físico e distantes geograficamente, permitindo trabalhar com um único domínio, ou seja, o Cyrus "move/trasporta a pilha de caixa postais(IMAP)" de forma transparente para o Expresso. Então quando alguém se deslocar não precisa saber qual é o endereço de seu servidor basta apontar para o endereço único que o Cyrus Aggregator faz o resto. Outro ponto importante é a escalabilidade mesmo. Se o backend estiver com a capacidade estourada vc pode colocar mais um backend e mover determinadas caixas para o novo servidor através de comandos do próprio CyrusAdmin.

Em fim, o próximo passo que estamos trabalhando e a disponibilidade de cada elemento do cyrus aggregator (frontends, murder e backends)


Estamos a disposição para dúvidas e esclarecimentos sobre os procedimentos apresentados.

Abraços a todos e obrigado.
Enviado em: 26/10/2010 17:14
Criar PDF com esta mensagem Imprimir
Topo
  •  Visitante
      Visitante
Re: Cyrus Aggregator - Escalando o IMAP do Expresso
#6
Visitante
Se quiser submeter um artigo sobre toda esta experiência com Cyrus Aggregator, podemos inclui-lo na seção "Documentação" do site do Expresso.

Um abraço,
Enviado em: 26/10/2010 17:29
Criar PDF com esta mensagem Imprimir
Topo
 Topo   Tópico anterior   Próximo tópico

 


 Você não pode iniciar um novo tópico.
 Você pode ver os tópicos.
 Você não pode responder.
 Você não pode editar.
 Você não pode excluir mensagens.
 Você não pode incluir votações.
 Você não pode votar.
 Você não pode anexar arquivos.
 Você não pode enviar mensagens sem aprovação.