Migrando o servidor de E-mail

17 fevereiro, 2009 34 Comentários »

emailEm Janeiro eu tive uma missão aqui no trabalho, que era de migrar uma velha estrutura de e-mail para uma nova e mais segura.  Antes foi retratar como foram as migrações passadas e de quantas estruturas passei até chegar nessa ultima que provavelmente foi a reta final para mim como administrador do sistema de e-mail da empresa.

Quando eu fui contratado em 2005 eu encontrei um cenário não muito animador, que era:
- Dois servidores COMPAQ ML370 G1 (P3 + 256Mb Ram cada)
- Um desktop montado (Celeron + 128Mb Ram)
Nessa estrutura rodava hospedagem de sites (Apache+PHP+Mysql) e servidor de e-mail (Postfix+Cyrus+Horde), só que a estrutura era muito bagunçada, foi feita por um funcionário que já havia saido da empresa a muito tempo e era alvo de constantes invasões e ataques.
Para mudar esse cenário eu então peguei o equipamento que tinha, e refiz toda a estrutura, e um dos ML370 eu coloquei a parte de hospedagem web (APACHE+PHP+MYSQL) usando bastante restrição no php.ini principalmente a diretiva open_basedir para restringir cada virtualhost em seu diretório, e outros paramentos que eliminou de vez as invasões.

No cenário de E-mail eu resolvi radicalizar e mudar quase tudo, de Postfix eu mudei para a combinação de Qmail+Vpopmail e o Cyrus foi mudado para o Courier. No final das contas eu consegui migrar todas as contas do Postfix para o Qmail usando alguns scripts que encontrei na internet, somente as mensagens que não migrei, pois a estrutura antiga não tinha sistema de quota e a nova eu coloquei quota, com isso não dava para migrar as mensagens pois todo mundo iria ficar “overquota”, mesmo assim foi dado um prazo para cada usuário fazer backup das mensagens.

[Vou dividir o post pois o texto é grande]


Este novo cenário de e-mail permaneceu por muito tempo, estavel e sem problemas graves, porem foi apresentado um novo projeto para o cenário de e-mail aqui na empresa, na qual eu não faço parte, foi-se então adotado o Expresso Livre, que trata-se de uma combinação do (E-groupware + Postfix + Cyrus + Ldap), é um software livre brasileiro, e está sendo adotado por muitas empresas do setor publico e privado.

Eu estava com alguns planos e ideias de melhorar a estrutura que eu tinha criado quando cheguei aqui, porem com esse novo projeto aprovado eu desisti e larguei meu “filho”, só mantendo as atualizações em dia, e dando suporte enquanto o sistema migrava para o Expresso.

Nesse meio tempo minha estrutura estava sobrecarregada, e com isso eu ganhei um servidor novo, um HP ML350 G4, com processador Xeon 2GHZ e 2GB de RAM, isso serviu bastante e deixou o sistema mais leve, porém ainda não era a estrutura ideal, ter apenas uma maquina “bombril” com mil e uma utilidades não é o certo. Essa maquina recebia e enviava e-mails, verificava as mensagens com antivírus e antispam, hospedava o webmail e guardava as mensagens em disco. O certo seria dividir essas tarefas em servidores diferentes, porem todo hardware novo que chegava era destinado a estrutura do expresso, que já estava funcionando com 1 domínio de 500 contas, contra 98 domínios com na media de 600 contas cada na minha estrutura.

O Projeto do Expresso estava muito lento, a migração demorava seculos para por um domínio, cada domínio passava por uma burocracia enorme, pois o expresso tinha um grande problema, primeiro a nova politica de que os e-mails deveriam ser nome.sobrenome@dominio e outra que o Expresso não suporta nomes iguais, como por exemplo joao.silva@dominio.com e joao.silva@outrodominio.com para ele joao.silva é uma pessoa só e isso estava gerando muita confusão, pois entre as milhares de contas de e-mails existentes o que mais vai ter é colisão de nome.
Na minha estrutura como eu uso Vpopmail, joao.silva@dominio.com é diferente de joao.silva@outrodominio.com, assim eu poderia ter quantas pessoas com o mesmo nome pois o login no vpopmail conta com todo o endereço e não apenas o que vem antes da arroba (@).

Em um dia negro minha estrutura deu um problema grave no HD, as fitas de backup já não suportavam o tamanho do backup que era de 60gigas e as fitas so tinham 40gb, foi um dia péssimo, eu passei uma semana inteira tentando recuperar os dados, e ainda bem que no final das contas tudo voltou ao normal, porem nesse dia eu pedi para meu chefe um investimento na estrutura antiga, já que o expresso não ia para frente. Com isso eu ganhei duas HP DL360 G5 com XEON quadcore e 4GB Ram, e ainda mais ligada ao nosso cluster podendo usar a Library para backup.

Com esse equipamento eu resolvi então montar uma estrutura dividida e mais organizada. Meu projeto então foi:
- Em uma DL360 ficaria o MTA, com Qmail + Clamav + DSPAM unicamente com a função de receber e enviar e-mail, filtrar e etc.
- Em uma DL360 ficaria os e-mails com Vpopmail e dessa vez eu não optei em usar o Courier e sim o Dovecot no lugar dele.
- Em uma maquina virtual no cluster ficaria o webmail.

A estrutura seria mais ou menos assim:
[INTERNET] <===e-mail===> [MTA COM FILTROS] <===e-mail===> [MAILSTORAGE] <===e-mail===> [USUARIO]

1. MTA
O MTA é o servidor que vai receber as mensagens pela internet, e ele também vai enviar as mensagens enviadas pelo usuário da rede, pelo o que eu notei na estrutura antiga em horário de pico o processo do qmail-smtpd fica mais lento, por causa dos filtros e com isso ele deixava a maquina toda mais lenta, comprometendo o IMAP e o APACHE (Webmail) mas isso era devido a filtragem de Spam que consumia bastante memoria (eu usava Spamassassin).
No MTA eu coloquei o Qmail (netqmail) com todos os patchs, e coloquei o Simscan no lugar do qmail-scanner.pl para gerenciar a filtragem de e-mail, o Simscan é compatível com o clamav e com o DSPAM e eu escolhi ambos para a filtragem de Virus e Spam. E nela eu coloquei as regras de smtproute, para que o MTA enviasse as mensagens dos meus domínios para meu outro servidor que eu chamo de MAILSTORAGE.

Programas utilizados:
clamav-0.94.2 => antivírus
daemontools-0.76 => supervisor do qmail
dspam-3.8.0 = > antispam
mod_auth_imap2 = > autenticação do apache via imap ou pop
netqmail-1.06 => qmail atualizado com patchs
simscan-1.4.0 => scanner para qmail
ucspi-tcp-0.88 => tcptools para o qmail

2. MAILSTORAGE
Este servidor é no caso o mais importante, ele vai guardas as mensagens dos usuários e ser acessado via IMAP ou POP usando SSL ou não, mas para que ele possa receber mensagens ele precisa também ser um MTA. Porem o MTA deve ser mais simples e rápido, ele já vai receber as mensagens filtradas e so tem o papel de gravar no disco o que receber. Com isso nessa maquina eu também uso o Qmail, porem sem filtros apenas com os patchs, esse qmail recebe os e-mails do qmail do MTA através do smtproute.

Esta estrutura usa o vpopmail para guardar os e-mails, eu costumo usar o Vpopmail pela sua estrutura de diretórios, ele usa Maildir, e diferencia um usuário do outro através do domínio, impedindo de existir conflito entre dois usuários de mesmo nome. Outra mudança que teve foi o servidor de IMAP/POP. Na estrutura antiga eu usava o Courier-IMAP. Eu tive muitos problemas com ele, principalmente de contas travando, loop infinitos, e eu fiquei sem poder atualizar o courier pois eles tiraram o suporte a Vpopmail, com isso eu fui tentar o Cyrus, mas no meio do caminho encontrei o Dovecot, e depois de ler bastante a respeito resolvi testar, e vi que o Dovecot é 10x melhor que o Courier.

Programas utilizados:
autorespond-2.0.2 => Progama usado pelo qmail para auto resposta de mensagens
daemontools-0.76 = > Supervisor do qmail
dovecot-1.1.7 => Servidor IMAP/POP3
ezmlm-idx-5.1.2 => Programa de lista de e-mails
imapsync-1.267 => Programa usado para a migração, sincronizar as contas
maildrop-2.0.4 = > Usado pelo qmail para entregar as mensagens
netqmail-1.06 => MTA atualizado com os patchs + Patch Checkuser.
qmailadmin-1.2.12 => Gerencia das contas
ucspi-tcp-0.88 => Tcptools usado pelo qmail
vpopmail-5.4.25 => Suporte a dominios virtuais ao qmail.

3. WEBMAIL
O webmail foi colocado em uma maquina virtual, no nosso cluster VMware. Nela roda apenas o apache+php+mysql e o Horde Groupware (Webmail Edition). Sendo uma maquina virtual separada a performance do webmail melhorou 100%, o webmail se conecta com o MAILSTORAGE para autenticar e ler as mensagens dos usuários e com o MTA para enviar mensagens.

Todas as três maquinas incluindo a virtual usam Slackware 12.2 como sistema operacional.

4. A MIGRAÇÃO
O processo de migração foi feito nas seguintes etapas:

  • Instalações dos sistemas operacionais e programas nos novos servidores
  • Backup do banco de dados do vpopmail
  • Criação dos scriptsde migração
  • Criar os domínios no novo servidor
  • Criar as novas contas no novo servidor usando uma senha padrão
  • Atualizar a quota dos usuários criados no novo servidor
  • Salvar a senha dos usuários no servidor antigo, para que sejam atualizadas no novo servidor
  • Mudar a senha dos usuários no servidor antigo para uma senha padrão de forma que o possa se fazer o login na conta e migrar as mensagens.
  • Limpar o lixo das contas como mensagens excluídas e spam para facilitar a migração, usando o “comando_do_demonio” (Um script que criei que verificar o lixo nas contas e apaga, mensagens excluídas e spam).
  • Migrar as mensagens para o novo servidor usando o ImapSync
  • Atualizar as senhas no novo servidor usando as senhas salvas no servidor antigo.
  • Alterar o servidor de login nas configurações do webmail para que o webmail conecte no novo servidor.
  • Efetuar testes de login
  • Configurar o Backup do novo servidor
  • Alterar os IPS do servidor antigo com o novo.

5. CONCLUSÃO
A migração foi um sucesso, e agora eu tenho 3 servidores para a estrutura, onde posso parar e trabalhar com cada um sem interferir no outro, posso para o webmail sem parar o acesso pop/imap3, posso parar o MTA mas os usuários podem ainda acessar as mensagens, e por ai vai. A performance melhorou 100%, e agora tenho backup em fitas de 800GB com mais segurança para os dados.
O DSPAM ainda não funciona muito bem, pois tem um esquema de treinar ele, e ainda estou coletando os spams reportado pelos usuários para treina-lo.
Enquanto o Expresso não anda pra frente minha estrutura nova agora pode aguentar por muito tempo.

Se você tiver algum interesse nas configurações que usei na estrutura, parametros de compilação ou scripts de migração, comenta ai que eu envio.


34 Responses to “Migrando o servidor de E-mail”

  1. Por: Bruno Windows XP Firefox 3.0.6 on mar 4, 2009 | Reply

    Olá cara, achei bem interessante seu post sobre a migração que você executou, no meu caso estou implementando o Expresso (Apesar de preferir pessoalmente o Zimbra … mas o chefe que manda hehe ), e gostaria de ver os scripts do imapsync que você usou, se possível me manda por email.

    Valeu.

  2. Por: Thiago Melo Windows XP Firefox 3.0.6 on mar 5, 2009 | Reply

    Opa Bruno, o Expresso é um ótimo conjunto de softwares, um bom pacote para a implementação de e-mail, além do mais e um produto BR, e ainda com apoio do governo federal. Mas claro para mim por exemplo ele não é tão bom tecnicamente com relação a outros pacotes, nunca vi esse Zimbra, vou dar uma estudada. Estou enviando para seu e-mail os scripts que utilizei com imapsync.

  3. Por: Ricardo Windows XP Firefox 2.0.0.20 on abr 16, 2009 | Reply

    Opa, show de bola esse post, estou passando por procedimento parecido, sendo que só em relação aos e-mails.

    Teria como eu ter os scripts que voce utilizou em relação o imapsync?

    Tem alguma forma de o servidor novo puxar e sincronizar as mensagens do servidor antigo? Ou só tem mesmo se o servidor antigo mandar para o novo?

    Obrigado e meu e-mail é cadincamara@gmail.com

  4. Por: Thiago Melo Windows XP Firefox 3.0.8 on abr 16, 2009 | Reply

    @Ricardo, tanto faz o servidor novo puxar do antigo ou o antigo enviar para o novo, eu ja testei os dois modos, na migração acima eu do novo puxei tudo do antigo, ontem eu fiz uma migração dessa estrutura nova para o expresso, e ai como eu não tenho acesso root a maquina do expresso que é de outra equipe eu então executei o script da maquina velha enviando para a maquina nova.

    Estou enviando os scripts para seu e-mail, obrigado pela visita.

  5. Por: Demir Windows XP Firefox 3.0.8 on abr 17, 2009 | Reply

    Muito legal seu post !! Parabéns !!
    Poderia me enviar o script de migração ?

  6. Por: Thiago Melo Windows XP Firefox 3.0.8 on abr 19, 2009 | Reply

    @Demir, me passa seu e-mail para eu poder mandar os scripts.

  7. Por: Ataliba Linux Firefox 3.0.8 on abr 20, 2009 | Reply

    Nada como o Qmail. Ainda é sem dúvida um dos MTAs que eu mais gosto.

    Apesar de administrar servidores com o Postfix, ainda acho a arquitetura do Qmail mais “bonita”, ou seja, mais administrável. O postfix hoje, só ganha mesmo por ser mais documentado que o Qmail.

    Mas legal o seu relato de migração. Vou fazer um relato de uma migração deste final de semana no blog também, mas foi bem menor que a que você fez :-)

  8. Por: Thiago Windows XP Firefox 3.0 on abr 28, 2009 | Reply

    Boa tarde Thiago, muito bom esse post, gostaria de saber se poderia me ajudar, to migrando um postfix+openwebmail+mailbox para o zimbra e estou com uma dificuldade danada na migração das contas antigas para o novo. Poderia me enviar seus scprits para eu dar uma estudada? Fico agradecido.

  9. Por: Thiago Melo Windows XP Firefox 3.0.10 on abr 29, 2009 | Reply

    Me passa teu e-mail para que eu possa enviar.

  10. Por: Thiago Windows XP Firefox 3.0 on mai 5, 2009 | Reply

    thiago27@gmail.com

  11. Por: Fabiano Windows XP Firefox 3.0.10 on mai 12, 2009 | Reply

    Tiago, estou passando por uma migração de máquinas dos servidores de e-mail, a máquina antiga tem o qmail instalado, porém estou migrando para uma versão mais atualizada e corretamente distribuida do qmail em outra máquina. Sendo que estou com problema para mandar as mensagens ao servidor. Como Vc usou o imapsync

  12. Por: Thiago Melo Windows XP Firefox 3.0.10 on mai 12, 2009 | Reply

    Fabiano, o imapsync funciona da seguinte forma, você da um comando passando os parâmetros de duas contas em servidores diferentes.

    Exemplo: imapsync servidor1=10.1.1.1 conta1=thiago senha1=123mudar servidor2=192.158.3.3 conta2=thiago senha2=123mudar

    Com isso ele vai conectar no servidor1 e logar com o usuário e senha que eu passei, listar as mensagens e depois logar no servidor2 e sicronizar as mensagens das duas contas, o que tiver no servidor1 e não tiver no servidor2 ele vai enviar, se der erro nesse meio tempo ele recomeça de onde parou.

    No caso você deve fazer uma linha de comando para cada conta e assim migrar todas de uma vez.

    O que eu fiz foi fazer um script que criasse essas linhas em uma lista e depois eu só fiz executar a lista já que tinha mais de 5mil contas.

    Lembrando que você precisa ter servidor imap funcionando em ambos servidores, novo e no antigo.

  13. Por: Fabiano Windows XP Firefox 3.0.10 on mai 13, 2009 | Reply

    Muito obrigado, mas consegui resolver o problema, mas de qq forma é uma boa solução, não conhecia esta ferramenta. Mas sua explicação de como todo o processo foi feito esta excelente.

  14. Por: Ban.Midou Windows XP Internet Explorer 6.0 on jul 16, 2009 | Reply

    Boa Tarde Thiago,

    Poderia me enviar seus scprits para eu dar uma estudada?
    Grato

  15. Por: Thiago Melo Linux Firefox 3.0.11 on jul 17, 2009 | Reply

    Me manda o seu e-mail para eu enviar os arquivos.

  16. Por: Tasso Gomes Windows XP Internet Explorer 7.0 on jul 24, 2009 | Reply

    Boa Tarde Thiago,

    poderia me envia os scripts tambem?

    tasso.gomes@sisbmg.com.br

  17. Por: Thiago Melo Windows XP Firefox 3.0.12 on jul 27, 2009 | Reply

    Enviado.

  18. Por: Ronaldo Meneguite Windows XP Firefox 3.5.1 on ago 4, 2009 | Reply

    Bom dia Thiago,

    Bom primeiramente gostaria de parabeniza-lo pelo excelente artigo publicado.

    Eu tb gostaria de receber esses scripts. Poderia me enviar no e-mail ronaldo@rlmti.com?

    Desde já agradeço a atenção.

  19. Por: Thiago Melo Linux Firefox 3.0.11 on ago 5, 2009 | Reply

    Enviei pro seu e-mail Ronaldo.

  20. Por: Rudnei Windows XP Firefox 3.5.1 on ago 19, 2009 | Reply

    ola Thiago, achei muito interessando o seu post, sou aluno do curso de SI e estou aprendendo SQL e outras linguagens neste semestre e queria conhecer os seus scripts para ficar mais por dentro do assunto…um abraço e fique com Deus…rudneidias@hotmail.com

  21. Por: Guilherme Debian Unknow on ago 20, 2009 | Reply

    Opa THiago Melo gostei de seu depoimento
    estou tendo que migrar para o expresso livre em minha empresa tambem gostaria de ver seus scripts prontos se possivel para poder estar utilizando aqui .. se puder me enviar agradeco… email: thauros@gmail.com

    abracos

  22. Por: Thiago Melo Linux Firefox 3.5.2 on ago 20, 2009 | Reply

    Enviei para os dois, obrigado pela visita e boa sorte nas migrações.

  23. Por: Salatiel Windows XP Internet Explorer 8.0 on ago 25, 2009 | Reply

    Opa Thiago tudo bem? Gostaria de receber também os Scripts de migração, desede já agradeço, e Parabéns pelo post….

  24. Por: Salatiel Windows XP Internet Explorer 8.0 on ago 25, 2009 | Reply

    meu email é salatiel [at] panambra.com

  25. Por: Thiago Melo Linux Firefox 3.5.2 on ago 28, 2009 | Reply

    Salatiel, o script foi enviado.

  26. Por: Jhonatan Rampin Ubuntu Firefox 3.0.13 on set 12, 2009 | Reply

    Boa tarde, Thiago

    Tudo bem?

    Instalei o Expresso aqui na Empresa, e não só eu, mas os demais adoraram o Software. Porem, estou com problemas na hora de enviar e-mail. Meu Servidor de E-mail, também é o Dovecot, e utilizo autenticação tls. Tem como vc me ajudar a fazer essa configuração de autenticação no Expresssoo???

    Se puder me mandar um e-mail, ia ser mto bom!

    Obrigado pela atenção.

    [ ]
    Jhonatan Rampin

  27. Por: Thiago Melo Linux Firefox 3.5.2 on set 14, 2009 | Reply

    Olá Jhonathan, nem sei se posso te ajudar, conforme eu botei no texto acim,a o Expresso está sendo implementado aqui por outra equipe, e eu não estou muito por dentro de como funciona.
    Tipo se o problema e no “ENVIO” então o problema não deve ser no dovecot e sim no Postfix, acho melhor você começar a estudar esta parte para encontrar o problema.

    PS: Perguntei aqui pro pessoal do expresso, e eles não usam autenticação encriptada TSL/SSL no expresso.

  28. Por: Wanderley Santos Windows other version Internet Explorer 8.0 on out 9, 2009 | Reply

    Thiago, parabéns pelo artigo!
    Gostaria de saber se você pode me enviar os scripts/documentação utilizada na sua implementação para que eu possa utilizar aqui na empresa.
    wysantos@gmail.com

  29. Por: Thiago Melo Linux Firefox 3.5.3 on out 9, 2009 | Reply

    Wanderley, enviei o script e as instruções.

  30. Por: Eduardo Windows XP Internet Explorer 6.0 on out 15, 2009 | Reply

    Olá Thiago, excelente artigo. Vai ajudar muita gente. Gostaria que me enviasse também os scripts. Desde já agradeço. eduardo.bambirra[at]gmail.com

  31. Por: igor Windows XP Firefox 3.5.3 on out 27, 2009 | Reply

    Tiago, tenho uma estrutura parecida com a sua tenho um servidor aplinux q deu pau o hd foi pro chinelo, tenho salvo a pasta vpopmail porem tudo do mysql foi para o vinagre, e queria migrar para o zimbra ! sera q seu script da certo ?
    Manda pra mim para testar !
    abracos
    Igor

  32. Por: Thiago Melo Windows other version Firefox 3.5.3 on out 27, 2009 | Reply

    bom o script precisa da base de dados para que a migração funcione, porem voce pode reestruturar sua base de dados usando os diretórios do vpopmail.

    1) Fazer uma instalação nova do vpopmail
    2) Fazer um script que vai listar o domínio e criar os usuários na nova instalação do vpopmail
    exemplo: for z in `ls dominio.com.br`; do vadduser $z@dominio.com.br 123456; done

    Copiar as mensagens do seu backup por cima do novo.
    $#mv /home/vpopmail /home/vpopmail-novo
    $#mv /backup/vpopmail /home/vpopmail

    *Faça uma copia de segurança antes.

    Com isso seu vpopmail volta 100% e ai voce pode migrar.

  33. Por: Júlio Agostini Ubuntu Firefox 3.5.7 on fev 11, 2010 | Reply

    E aí Thiago, Parabéns pela iniciativa, Gostaria de receber os Scripts de migração.
    OBS: Estou testando a migração do exchange 2003 para o zimbra e o expresso.
    desde já agradeço.

  34. Por: Thiago Melo Linux Firefox 3.5.6 on fev 12, 2010 | Reply

    Preciso do seu e-mail para isso, abraços.

Post a Comment