= Cyrus IMAP Aggregator = [[PageOutline(1-3, Conteúdo)]] == O que é ? == É uma forma de você escalar horizontalmente o Cyrus IMAP entre vários servidores.[[BR]] Para provedores com um número muito grandes de caixas o servidor IMAP se torna um componente muito crítico, [[BR]] a falha de um servidor acaba afetando a milhares de usuários. A idéia do Aggregator é que você possa particionar[[BR]] 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.[[BR]] Para os clientes eles funciona como se fosse um servidor imap/pop3/lmtp normal. Quando uma operação é disparada[[BR]] ele verifica no MUPDATE em que Backend está localizada a caixa do usuário e dispara a operação neste Backend.[[BR]] Se você move a caixa do usuário para um Backend diferente para o usuário é transparente já que o Frontend[[BR]] sabe a nova localização da caixa do usuário através do MUPDATE.[[BR]] 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[[BR]] 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.[[BR]] Ele é responsável em informar aos Frontends a localização da caixa do usuário e em coordenar as operações efetuadas[[BR]] pelos Backends. Se o mupdate master está fora não é possível criar novas pastas , nem alterar as propriedades das mailboxes.[[BR]] 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[[BR]] é 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[[BR]] e em que partição você quer criar a caixa IMAP. Por isto estes dois parâmetros[[BR]] devem ser informados. As caixas criadas pelo módulo Expresso Admin vão ser criadas[[BR]] inicialmente neste servidor e partição, mas depois você pode movê-la entre qualquer[[BR]] 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[[BR]] 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.[[BR]] Ou seja, o postfix deve se autenticar como lmtp_admin para realizar a entrega no Cyrus.[[BR]] '''Configuração Passo a Passo:''' Edite o '''/etc/postfix/main.cf''' e altere os parametros: {{{ ............... mailbox_transport = lmtp::lmtp lmtp_sasl_auth_enable = yes lmtp_sasl_password_maps=hash:/etc/postfix/lmtp_passwd lmtp_sasl_security_options = noanonymous virtual_transport = lmtp::lmtp ................. }}} O arquivo '''/etc/postfix/lmtp_passwd''': {{{ : : : }}} Sendo que o '''ltmp_admin''' é o mesmo configurado no parametro '''lmtp_admins:''' do '''/etc/imapd.conf'''.[[BR]] 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[[BR]] '''/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:[[BR]] 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''' e altere apenas o '''mupdate_server''' {{{ .... 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.[[BR]] Ou seja, os clientes continuam acessando as suas caixas IMAP, e a entrega continua normal mesmo com o mupdate master fora.