Migrando entre Servidores Zimbra


O Zimbra é um servidor de colaboração completo, o “lindo” nome é porque ele foi criado pela empresa Zimbra e depois comprado pelo Yahoo e finalmente pela VMware mas como o nome já estava consolidado ficou :-P. Ele é um concorrente direto do Exchange da Microsoft e como ele tem: Email, agenda colaborativa, interface de administração completa, Porta Arquivos e gerenciamento de recursos, possui cliente integrado de Email (Exchange tem o Outlook ele tem o Zimbra Desktop), etc…
Pode ser comprado com Licença de suporte e uso, pode também ser utilizado em sua versão Open Source que conta com todas as funcionalidades principais. Possui muita documentação (wiki.zimbra.com) e integra com LDAP, Active Directory, etc.
Mas eu vou falar hoje sobre migração entre servidores Zimbra, já trabalho com ele há alguns anos e em alguns clientes chegou a hora de atualizar a versão. É uma tarefa simples, dá um pouco de trabalho mas é simples, basta ter um servidor novo instalado e funcionando(basta seguir alguns dos muitos tutoriais que existem por aí para isso 🙂 ) e fazer a migração.
Já migrei de Zimbra 5.0.9 para 7, de 6 para 8 e de 7 para 8. Esse procedimento funcionou em todas as migrações que fiz para a versão 8 do Zimbra, que é a mais nova e muito mais rápida. Portanto faça em uma ambiente de teste, confira se há igualdade nas contas dos servidores e depois pode fazer a migração. Lembre-se que não é atualizar o software, é migrar para outro servidor com versão mais nova do software.
Esse procedimento não altera nada no servidor de produção, ou seja, pode fazer que continua tudo funcionando.

Vamos à migração.
Com os dois servidores na mesma rede, vamos de 192.168.1.250 produção e 192.168.1.251 migração, vamos começar o processo.
Primeiro sincronizamos as contas, podem ser todas ou apenas algumas, no caso faremos com todas. No servidor de migração faremos o serviços através de linha de comando, mas não se preocupe farei um pequeno tutorial sobra a função na interface de administração posteriormente :-).
Se você tem 10 ou 20 usuários crie de novo e deixe de preguiça :-P, mas se tem 200, 400, 1500, 2500… Faça com scripts que é muito melhor 🙂
Primeiro vamos obter uma lista das contas e dados básicos dos usuários com o seguinte procedimento:
Logue no servidor de produção como root e mude para usuário zimbra:
# su – zimbra
Entre no diretório /tmp e crie um diretório contas:
$ cd /tmp
$ mkdir contas

Crie o seguinte script no /tmp que irá obter os dados(nome completo(displayName, primeiro nome(givenName), sobrenome(sn),senha(userPassword) dos usuários e gravá-los nos diretório contas:

Esse script irá criar um arquivo no diretório contas com o nome dados-EMAIL_DA_PESSOA com os dados necessários.
Execute o script da seguinte forma:
$ chmod 755 obtem-contas-zimbra.sh
$ ./obtem-contas-zimbra.sh

Agora basta copiar esse diretório para o servidor de migração(ftp, ssh, rsync, pendrive, cd-rom … use seu recurso preferido).
No servidor de migração logue como root, mude para o usuário zimbra e copie o diretório contas para o /tmp :
# su – zimbra
$ cd /tmp
Agora crie o seguinte script para criar os usuários:

Esse script lê todos os arquivos do diretório contas, transforma os dados que obtivemos no servidor de produção e cria as contas, caso algum dados não exista(displayName, givenName, sn) ele cria com valor padrão do nome da conta. Não podem estar vazios EMAIL e SENHA.
Execute o script da seguinte forma:
$ chmod 755 cria-contas.sh
$ ./cria-contas.sh

Pronto, com os usuários criados vamos aos emails, se pudermos parar o servidor de produção podemos criar exportar as mensagens conta a conta e depois importar no servidor de migração, mas se não pudermos temos um script de sincronia chamado imapsync, que pode nos ajudar.
Vou colocar aqui os dois métodos utilizados para que vocês possam escolher.
O primeiro método iremos parar o recebimento de email, pode ser desligando o acesso externo, pode ser bloqueando as portas de leitura/recebimento, bem você é quem sabe. Vamos ao procedimento:
No servidor de produção, faça o seguinte:
# su – zimbra
$ cd /tmp
$ mkdir mensagens
Agora vamos usar o seguinte script para importar as caixas:

Execute o script da seguinte forma:
$ chmod 755 obtem-mensagens.sh
$ ./obtem-mensagens.sh

Com esse script criamos um arquivos chamado, [email protected] dentro do diretório mensagens, agora basta compartilhar esse diretório(copiar pode ser inviável se for muito grande, eu lidei com diretórios com mais de 200GB e sei disso 🙂 ), pode compartilhar via NFS, SMB, CIFS, GlusterFS, o que você desejar, desde que compartilhe com o servidor de migração.
No servidor de migração entre no diretório onde as mensagens foram compartilhadas e faça o seguinte como usuário zimbra(ele tem que ter direito de leitura/escrita no diretório para criar o script e para ler os arquivos. Ex: /mnt/mensagens
# su – zimbra
$ cd /mnt/
Crie o seguinte script:

Execute o script da seguinte forma:
$ chmod 755 importa-mensagens.sh
$ ./importa-mensagens.sh

Pronto, todas as mensagens estão importadas, agora basta conferir e habilitar o servidor novo para receber e enviar as mensagens.
Mas se você não pode parar o servidor para exportar/importar as mensagens pode usar o script imasync para fazer a sincronia com os servidores online.
Utilizei a versão 1.3.15, as anteriores deram erro.
Já estando com as contas criadas lembre de liberar o login em texto plano (para a migração apenas), crie no servidor de migração o seguinte script:

Agora execute:
$ chmod 755 migra-mensagens.sh
$ ./migra-mensagens.sh

Pronto, contas e mensagens criadas. Se o servidor não for entrar em produção no dia, basta repetir o script que ele atualiza as mensagens que ainda não estão no servidor de migração.
Espero ter ajudado na migração de servidores e não se esqueça de comentar e de curtir nossa página no Facebook.

    Comments

    1. Muito legal o post parabens.
      E pra quem for realizar esta tarefa só tomar cuidado com:
      “//?fmt=tgz&resolve=reset” quando importar as mensagens, já que se fizer isso no servidor em produção “sem querer”, a caixa anterior é apagada.
      “//?fmt=tgz&resolve=modify” já é usado quando você quer enviar toda Conta (Caixa de Entrada, Itens Enviados, Lixeira) para outra conta sem remover a caixa atual, fazendo a indexação das duas.
      Achei interessante comentar isso, porque já usei bastante essas duas opções.

      • Cleiton
        Valeu pelo comentário, mas eu não havia colocado no post pois a idéia é migrar para um servidor novo, portanto não necessita manter o que há.
        Será que vale a pena um post sobre como instalar o Zimbra do zero? ou um vídeo?
        Que acha.

        • Caro Vagner ,
          Seria muito interessante postar algo sobre o Zimbra do zero, eu voto em um vídeo.
          Abs.
          Fabrício Campos

        • Entendi a idéia do post sim hehe, foi só um comentário para caso alguém precisar um dia hehehe.
          Acho interessante um post sobre instalação do zero do Zimbra, pois quando instalei tive certa dificuldade com postfix e a parte de Spam (acho que era SpamAssassin, hoje implementei com um outro algoritmo junto), sem contar parte de POP3/IMAP, DNS também, seria interessante sim a idéia.

          • Cleiton,
            Eu sei que foi para ajudar, e é sempre bom que as pessoas colaborem.
            Vou me programar e tentar, veja bem, tentar fazer um vídeo. Mas não tive problemas com SMTP nem com Spam, vou tentar ver o que pode ser.
            Abraços.

            • Uma curiosidade se meu SMTP for em outro servidor ok? EU consigo enviar/receber usando dois Zimbra um velho em produção e um atualizado simultaneamente em servidores/VM’s diferentes?

    2. Avatar for Vagner Fonseca Galileu Bernardes : 1 de novembro de 2012 at 8:13 pm

      Já tinha ouvido falar do servidor Zimbra, parece ser muito bom!!!
      Qual a diferença do Zimba com o IceWarp?

    3. Com certeza vale Vagner.

    4. Com certeza Vagner, seria de grande contribuição para todos!
      Estou até procurando um vídeo como instalar o zimbra do zero, mas não encontrei ainda.
      Grato.
      Jacó Ramos

    5. Olá
      Parabéns ótimo Tutorial. Fiz todo o procedimento as contas e as mensagens foram certinha pro novo server, Uffa!!! de 5.09 pra 8.0 é punk e está ok, agora não consigo logar com a mesma senha de antes. Algo a fazer? Grato

      • Corrigindo os usuários não conseguem acessar com sua senha.

      • Luiz,
        No servidor de produção faça o seguinte script:

        Copie o diretório contas do servidor de produção para o de migração e faça o seguinte script:

        Isso vai copiar o hash das senhas para o diretório contas e depois vai importa-las no servidor de migração:
        zmprov ca (create account) cria uma conta
        zmprov ma (modify account) modifica uma conta
        Abraços.

        • Cara muito obrigado por está agora (sabado) me ajudando.
          To num sufoco. (668 usuários brabos heheh) fiz todo seu tuto e desativei o server antigo, mas tenho as contas do primeiro script então preciso fazer somente o 2º script certo? Se fizer em produção ele vai persistir pois a conta já existe. Se puder me ajudar ficarei muito grato. Estou no gmail.

    6. Como corrijo a url antes era
      mail.servidor.br/zimbra
      agora está
      mail.servidor.br
      Como colocaria o /zimbra muitas pessoas tem isso no favoritos.
      Grato

    7. Também deverá responder a muita gente.
      Na tela de Login não pedia o complemento @empresa.br
      Agora só loga se digitar o nome completo. Antes apenas o nome da conta já logava.
      Grato.

      • Luiz,
        Tente o seguinte como usuário zimbra:

        Isso muda o domain name padrão para empresa.com.br, assim os usuários logam apenas com a primeira parte do email (o que vem antes do arroba).
        Abraços.

    8. Como sempre tem a ultima.
      Tive erros na importação das caixas. E algumas caixa não copiaram. Tem alguma dica pra recuperar a caixa 100%
      Grato.

      • Luiz,
        Faça o método com imapsync, mesmo se a migração inicial não foi feita com ele. Ele sincroniza as caixas de email apenas com o que é diferente.
        Abraços.

        • Vagner Fonseca,
          Muito obrigado meu caro.
          Poderia me informar 2 coisas:
          1) Como recupero somente 1 caixa que não migrou. (Advinha a maior de todas e a mais importante 4.8 GB) Eu hein.
          2 ) Ao fazer isso deletará as mensagens existentes ou ele apenas sobrescreve as que existirem. Como posso adaptar o script importa-mensagens.sh para migrar apenas a caixa que está no diretório /contas (deixei somente a caixa que quero em /contas)
          Grato.

    9. Vagner fiz isso.
      /opt/zimbra/bin/zmmailbox -z -m [email protected] postRestURL “//?fmt=tgz&resolve=reset” mensagens/[email protected]
      Veio esse erro
      ERROR: service.FAILURE (system failure: POST failed, status=413 upload too large: file ‘/’: upload too large)

    10. Muito bacana o conteúdo deste post, serve para esclarecer os mais leigos, parabéns.
      Como vi que alguns colegas ainda têm dúvidas como instalar o zimbra do zero, tem um vídeo no you tube do Brivaldo Junior, onde ele mostra a instalação do zimbra.
      O vídeo tem 1 h 30 + ou -, muito bom e recomendo.

    11. Oi, nao sei se pode ou nao ser de ajuda. mias juntei informcacao deste site e de outro para uma migracao dos emails. e segui esta guia ate o ponto de importar as contas de emails no servidor a ser migrado.
      depois segui a guia de outro site (http://linuxnatyworking.wordpress.com/2012/04/20/zimbra-opensource-export-import-de-caixas-postais-e-mensagens/)
      com isto pulo um paso para importacao das mensagens e fica mais automatico por assim dizer.
      Após executar os procedimentos acima, as contas já podem ser visualizadas no painel. Agora a ferramenta de migração zmztozmig será configurada para importação das mensagens. P
      Para isso edite o arquivo zmztozmig.conf:
      # vim /opt/zimbra/conf/zmztozmig.conf
      Devem ser alterados os seguintes parâmetros:
      #Source ZCS server IP/name,admin user name and password, server port
      SourceZCSServer=zcs1.example.com
      SourceAdminUser=Admin
      SourceAdminPwd=pwdpwd
      SourceAdminPort=7071
      SourceZCSServer: servidor_que_será_migrado
      SourceAdminUser: usuário com permissões administrativas
      SourceAdminPwd: senha do usuário
      SourceAdminPort: 7071 (padrão)
      #Destination/Target ZCS server IP/name,admin user name and password, server port
      TargetZCSServer=zcs2.example.com
      TargetAdminUser=Admin
      TargetAdminPwd=pwdpwd
      TargetAdminPort=7071
      TargetZCSServer: novo_servidor
      TargetAdminUser: usuário com permissões administrativas
      TargetAdminPwd: senha do usuário
      TargetAdminPort: 7071 (padrão)
      #Threads to run simultaneously
      Threads=5
      Número de processos executados simultaneamente.
      #Do you want to keep tar mailbox files after successful migration- TRUE/FALSE
      KeepSuccessFiles=TRUE
      Esse opção permite manter uma cópia de cada conta (em um arquivo compactado), no caminho setado na linha “SuccessDirectory=/tmp/ztozmig/successes/”. Caso não deseje manter estes arquivos após a importação, altere o parâmetro acima para “FALSE”.
      Descomentar a seguinte linha:
      #resolve=skip
      DomainMap=zcs1.example.com zcs2.example.com
      Nesta linha devem ser informados o domínio a ser importado e o domínio que receberá as contas.
      Domains=zcs1.example.com,zcs2.example.com
      Esta linha deve ser omitida no caso da importação não ser do domínio inteiro, quando apenas algumas contas serão importadas.
      Accounts=all
      Utilize o parametro ‘all’ para importar todas as contas naquele domínio, ou os endereços separados por vírgula.
      Com todos os parâmetros alterados, deve ser iniciar a importação. Com o usuário zimbra (su – zimbra), executar o script:
      $ /opt/zimbra/libexec/zmztozmig -d
      espero que seja de utilidae (fiz do 7.21 para 7.2.1, e do 7.2.1 para o 8.0.1) todos funcionando que e uma beleza.
      neste momento estou migrando o servidor da empresa (600 GB e 80 contas) de um servidor no brasil para um em USA.

    12. Muito bom seu post Wagner. Bem como sua atenção para a resolução das dúvidas do pessoal. Parabens!

    Deixe uma resposta

    O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

    © 2019 All Rights Reserved. Cooperati. 

    Deseja uma consultoria especializada?