Tadeu Cruz


Migrando do OpenWebMail+SendMail para Zimbra

Tive este ótimo desafio de migrar do OpenWebMail para o Zimbra. Sempre estive de olho no que o Zimbra poderia oferecer para usuários finais sem falar para o administrador . OpenWebMail também pode ser bem potente porem precisa de um administrador mais encima do servidor controlando.

1 – Problemas com: OpenWebMail+SendMail+Outros

O grande problema que estava tendo com o antigo servidor era basicamente as caixas dos usuários serem maiores que 1GB então para o OpenWebMail abrir estas caixas era um custo de CPU muito grande alem da antiga maquina ser uma maquina virtual que não ajudava muito com operação I.O.(Acho que seja um problema bem comum de sistemas que usam mbox). Com o SendMail não tenho reclamação fazia seu trabalho com rapidez .

Outro problema que estava tendo era com SPAM, não tinha forma simples de fazer um treinamento com as mensagens que eram ou não eram SPAM e com o Zimbra somente com um único click os próprios usuários podem realizar este treinamento do que é Spam e não é.  O servidor antigo tinha ate o SpamAssassin instalado porem para fazer algo parecido como o Zimbra no treinamento de Spam tinha que tentar fazer uma padronização de pastas com usuarios e fazer eles moverem as mensagens para as pastas e fazer um crontab para rodar sempre o SpamAssassin nestas pastas de todos usuários para ele aprender o que seria SPAM ou não.

Outra coisa que me incomodava era que o antigo servidor não tem suporte a IMAP e usava um servido POP que somente buscava os mbox de um lugar.

2 – Desafio: Migrando caixas de e-mail

Não tem segredo.  O Zimbra tem uma ótima documentação de qual ferramenta usar para a migração de emails: http://wiki.zimbra.com/index.php?title=User_Migration

As caixas de email do antigo servidor eram organizadas das seguintes formas:

  • /mail/usuario
  • /home/horizontes/usuario/mail

Com isso teria que fazer uma escolha de um servidor de IMAP que tivesse suporte a multiplas caixas. Outro problema que tive era o pouco tempo para fazer migração de 80 GB de email e não podia parar um servidor para fazer a migração, tinha que fazer a migração em HOT e com isso vem o grande problema,  como fazer o controle de senhas ?  Quero dizer que não podia mudar a senha do servidor original para poder fazer a autenticação no IMAP pois assim o usuário não ia conseguir olhar seus emails. Acabei descobrindo que o dovecot tem uma solução simples e rápido para isso.

2.1 – dovecot

O dovecot tem opção de usar o “modulo” passwd-file que tem a possibilidade de você informar,  em um arquivo de texto simples,  usuário e senha:

user:{plain}password user2:{plain}password2

E automaticamente ele busca informações do /etc/passwd do diretorio Home do usuario, precisava disso pois configurei o  dovecot para ler os mbox da seguinte forma:

mail_location = mbox:~/mail:INBOX=/mail/%u

Para configuração do devecot olhar o link acima que é muito bem documentado.

Resolvi colocar como senha para os usuários os 3 primeiro dígitos do CPF e os 3 últimos dígitos, com isso resolvi o problema de usuário e senha durante a migração. Agora é buscar a ferramenta para migração dos e-mails.

2.2 – imapsync e criação de usuário.

Agora com os problemas da senha resolvido bastava fazer um script simples para fazer a migração e criação dos usuário no zimbra, o script abaixo foi executado na maquina que o zimbra foi instalado.

#!/bin/bash 

while read LINHA do  
    email=`echo $LINHA |cut -d: -f1` 
    nome=`echo $LINHA |cut -d: -f2` 
    senha=`echo $LINHA |cut -d: -f3` 
    echo "/opt/zimbra/bin/zmprov ca $email $senha displayName $nome zimbraCOSid 1c6d4f62-e622-4370-8082-fab43b41e4b5" 
    /opt/zimbra/bin/zmprov ca $email $senha displayName "$nome" zimbraCOSid 1c6d4f62-e622-4370-8082-fab43b41e4b5 
    echo "/opt/zimbra/bin/zmprov listaGeralEmail@empresa.com $email" 
    /opt/zimbra/bin/zmprov adlm listaGeralEmail@empresa.com $email 
    nomeantigo=`echo $email |cut -d "@" -f1` 
    imapsync --buffersize 8192000 --nosyncacls --subscribe --noauthmd5 --syncinternaldates --host1 192.168.20.87 --user1 $nomeantigo.nh --password1 $senha --host2 localhost --user2 $email --password2 $senha 
done < listausuarios  

O parametro zimbraCOSid é ID da sua “Class of Service”  e para obter este numero basta entrar na área administrativa e clicar na sua COS padrão para os usuários.

No arquivo “listausuarios” ele esta no seguinte formato:

email@daempresa.com:'Nome da Pessoa':password

Lembrando que o password são os 3 primeiro dígitos do CPF e os 3 últimos dígitos. Antes de executar o script é importante você entrar na área administrativa do Zimbra ir em “Global Settings>IMAP” e selecionar “Enable clear text login” senão vai dar erro durante a migração. Basta executar os scripts que ele vai criar o usuário e migrar as contas de e-mail.