Version 13 (modified by lucas.carraro, 13 years ago) (diff) |
---|
Cyrus IMAP Aggregator
O que é ?
É uma forma de você escalar horizontalmente o Cyrus IMAP entre vários servidores.
Para provedores com um número muito grandes de caixas o servidor IMAP se torna um componente muito crítico,
a falha de um servidor acaba afetando a milhares de usuários. A idéia do Aggregator é que você possa particionar
o problema distribuindo as caixas entre vários servidores.
Como funciona ?
Existem basicamente 3 tipos de servidores envolvidos:
Frontends - São os servidores em que os clientes IMAP/POP3 e MTAs(Mail transfer Agent ) se conectam.
Para os clientes eles funciona como se fosse um servidor imap/pop3/lmtp normal. Quando uma operação é disparada
ele verifica no MUPDATE em que Backend está localizada a caixa do usuário e dispara a operação neste Backend.
Se você move a caixa do usuário para um Backend diferente para o usuário é transparente já que o Frontend
sabe a nova localização da caixa do usuário através do MUPDATE.
Os Frontends funcionam de forma redundante.
Backends - São os servidores aonde fica localizado efetivamente a caixa do usuário, a diferença deste servidor para
um servidor IMAP Cyrus normal é que toda a operação efetuada nele é commitada no servidor MUPDATE.
Mupdate - É o servidor que coordena as operações do ambiente, ele funciona como um tipo Banco de Dados.
Ele é responsável em informar aos Frontends a localização da caixa do usuário e em coordenar as operações efetuadas
pelos Backends. Se o mupdate master está fora não é possível criar novas pastas , nem alterar as propriedades das mailboxes.
A entrega também fica comprometida, mas abaixo na documentação é citado como contornar esta limitação.
Como o Expresso atualmente se comporta com o ambiente configurado em Aggregation (Murder)
O Expresso funciona normalmente com o Cyrus Aggregator. A única adaptação necessária
é informar no /etc/imapd.conf os seguintes parâmetros:
..... defaultserver: backend1 defaultpartition: default .....
Por enquanto no Expresso não é possível selecionar em que servidor IMAP
e em que partição você quer criar a caixa IMAP. Por isto estes dois parâmetros
devem ser informados. As caixas criadas pelo módulo Expresso Admin vão ser criadas
inicialmente neste servidor e partição, mas depois você pode movê-la entre qualquer
backend e partição do ambiente.
Como mover uma caixa entre os Backends
Basta usar o comando RENAME do IMAP.
cyradm --user admin frontend1 frontend1> rename user/joe user/joe backend2!default
Instalando e configurando um Frontend
.. Ainda não escrito ...
Instalando e configurando um Mupdate
.. Ainda não escrito ...
Instalando e configurando um Backend
.. Ainda não escrito ...
Acertando o postfix para fazer a entrega via lmtp em um Frontend
Usando o Murder o postfix passa a ter que entregar obrigatoriamente as mensagens via TCP/IP
para o lmtpproxyd. Com isto a configuração se altera um pouco da padrão.
Em modo Aggregator todas as entregas via lmtp devem ser necessariamente autenticadas.
Ou seja, o postfix deve se autenticar como lmtp_admin para realizar a entrega no Cyrus.
Configuração Passo a Passo:
Edite o /etc/postfix/main.cf e altere os parametros:
............... mailbox_transport = lmtp:<frontend_server.domain>:lmtp lmtp_sasl_auth_enable = yes lmtp_sasl_password_maps=hash:/etc/postfix/lmtp_passwd lmtp_sasl_security_options = noanonymous virtual_transport = lmtp:<frontend_server.domain>:lmtp .................
O arquivo /etc/postfix/lmtp_passwd:
<frontend_server.domain> <lmtp_admin>:<senha> <frontend2_server.domain> <lmtp_admin>:<senha> <frontend3_server.domain> <lmtp_admin>:<senha>
Sendo que o ltmp_admin é o mesmo configurado no parametro lmtp_admins: do /etc/imapd.conf.
Após isto:
postmap /etc/postfix/lmtp_passwd chown postfix:postfic /etc/postfix/lmtp_passwd chmod o-rwx /etc/postfix/lmtp_passwd* postfix reload
Como otimizar a entrega LMTP para usar o Mupdate local e não o Mupdate Master
Por padrão o lmtpproxyd utiliza para consultar aonde devem ser entregues a mensagem o mupdate_server: informado no arquivo
/etc/imapd.conf ou seja se você tem um número muito grande de entregas você acaba sobrecarregando o MUPDATE MASTER com as solicitações.
Uma maneira simples de resolver este problema é fazer o lmtpproxyd do Frontend usar o próprio mupdate para consulta ao invés de usar o mupdate master.
A configuração é realizada da seguinte forma:
Copie o /etc/imapd.conf como um arquivo /etc/imapd-local.conf'
cp /etc/imapd.conf /etc/imapd-local.conf
Edite o arquivo /etc/imapd-local.conf
mupdate_server: 127.0.0.1
Depois edite o /etc/cyrus.conf e mude o serviço lmtpptoxyd para usar este arquivo ao invés do default.
SERVICES { .............. lmtp cmd="lmtpproxyd -C /etc/imapd-local-lmtpd.conf" listen="lmtp" prefork=1 ............... }
Outra vantagem desta abordagem é que mesmo que o mupdate master falhe todo sistema continua entregando as mensagens normalmente.
Ou seja, os clientes continuam acessando as suas caixas IMAP, e a entrega continua normal mesmo com o mupdate master fora.