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:

vi obtem-contas-zimbra.sh
#!/bin/bash
# Obtemos uma lista de todas as contas do servidor
ZMPROV="/opt/zimbra/bin/zmprov"
for MAIL in $($ZMPROV -l gaa | sort); 	do
		DNOME=$($ZMPROV -l ga $MAIL displayName | grep displayName | awk -F " " '{print $2" "$3" "$4" "$5}')
		PNOME=$($ZMPROV -l ga $MAIL givenName | grep givenName | awk -F " " '{print $2}')
		SNOME=$($ZMPROV -l ga $MAIL sn | grep sn | awk -F " " '{print $2}')
		SENHA=$($ZMPROV -l ga $MAIL userPassword | grep userPassword | awk -F " " '{print $2}')
 
   		echo "Conta: $MAIL" > contas/dados-$MAIL
   		echo "Display: $DNOME" >> contas/dados-$MAIL
		echo "Nome: $PNOME" >> contas/dados-$MAIL
		echo "Sobrenome: $SNOME" >> contas/dados-$MAIL
		echo "Senha: $SENHA" >> contas/dados-$MAIL
done

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:

vi cria-contas.sh
 
#!/bin/bash
# Cria as contas no Zimbra
ZMPROV="/opt/zimbra/bin/zmprov"
for DADOS in $(ls contas); do
 
	EMAIL=$(grep Conta contas/$DADOS | awk -F " " '{print $2}')
	DNAME=$(grep Display contas/$DADOS | awk -F " " '{print $2" "$3" "$4" "$5}')
	PNAME=$(grep Nome contas/$DADOS | awk -F " " '{print $2}')
	SNAME=$(grep Sobrenome contas/$DADOS | awk -F " " '{print $2}')
	SENHA=$(grep Senha contas/$DADOS | awk -F " " '{print $2}')
 
	$ZMPROV ca "$EMAIL" "$SENHA" displayName "$DNAME" givenName "$PNAME" sn "$SNAME"
	done

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:

vi obtem-mensagens.sh
#!/bin/bash
# Obtemos uma lista de todas as contas do servidor
ZMPROV="/opt/zimbra/bin/zmprov"
ZMMAILBOX="/opt/zimbra/bin/zmmailbox"
for MAIL in $($ZMPROV -l gaa | sort); 	do
		$ZMMAILBOX -z -m $MAIL getRestURL "//?fmt=tgz" > mensagens/$MAIL.tgz
done

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:

vi importa-mensagens.sh
 
#!/bin/bash
# Obtemos uma lista de todas as contas do servidor
ZMPROV="/opt/zimbra/bin/zmprov"
ZMMAILBOX="/opt/zimbra/bin/zmmailbox"
for MAIL in $($ZMPROV -l gaa | sort); 	do
                $ZMMAILBOX -z -m $MAIL postRestURL "//?fmt=tgz&resolve=reset" mensagens/$MAIL.tgz 
done

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:

vi migra-mensagens.sh
#!/bin/bash
ZMPROV="/opt/zimbra/bin/zmprov"
for USER in $($ZMPROV -l gaa); do
 
imapsync --nosyncacls --host1 192.168.1.250 --host2 192.168.1.251 --authmech1 PLAIN --authmech2 PLAIN --ssl1 --user1 $USER --authuser1 [email protected] --password1 'senha_do_admin_zimbra_producao' --ssl2 --user2 $USER --authuser2 [email protected] --password2 'senha_do_admin_zimbra_migracao'
 
done

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.

  • 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?

    • Vagner boa Noite! precisei instalar um MX secundário na empresa e com seu post foi fantástico……….parabéns pela iniciativa. abraços Marcelo

  • Galileu Bernardes

    Já tinha ouvido falar do servidor Zimbra, parece ser muito bom!!!

    Qual a diferença do Zimba com o IceWarp?

    • O Zimbra é um produto mais completo e com uma base de usuários muito maior, mas em questão de funções são muito parecidos.

  • Francisco

    Com certeza vale Vagner.

  • jaco

    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

  • Luiz Humberto

    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

    • Luiz Humberto

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

    • Luiz,

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

      #!/bin/bash
      # Obtemos uma lista de todas as contas do servidor
      ZMPROV="/opt/zimbra/bin/zmprov"
      for MAIL in $($ZMPROV -l gaa | sort); 	do
       
      		SENHA=$($ZMPROV -l ga $MAIL userPassword | grep userPassword | awk -F " " '{print $2}')
       
         		echo "Conta: $MAIL" > contas/dados-$MAIL
         		echo "Senha: $SENHA" >> contas/dados-$MAIL
      done

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

      #!/bin/bash
      # Cria as contas no Zimbra
      ZMPROV="/opt/zimbra/bin/zmprov"
      for DADOS in $(ls contas); do
       
      	EMAIL=$(grep Conta contas/$DADOS | awk -F " " '{print $2}')
      	SENHA=$(grep Senha contas/$DADOS | awk -F " " '{print $2}')
       
      	$ZMPROV ma "$EMAIL" userPassword "$SENHA" 
      	done

      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.

      • Luiz Humberto

        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.

        • Luiz,

          Primeiro: Você é doido por desativar o primeiro sem fazer todos os teste no servidor de migração 🙂
          Segundo: Pode usar o segundo script que ele apenas altera as senhas dos usuários, não altera mais nada.

          Abraços.

          • Luiz Humberto

            Sucessfull.

            Senhas estão ok.

            Grato mais uma vez.

  • Luiz Humberto

    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

    • Luiz,

      Verifique como está a configuração agora:

      su - zimbra
      zmprov gcf zimbraMailURL

      Se estiver / basta digitar (como usuário zimbra):

      zmprov mcf zimbraMailURL /zimbra

      Se não quiser este nome basta mudar o /zimbra no final.

      Abraços.

      • Luiz Humberto

        Grato.

        Vou aguardar a migração das mensagens, e as alterações das senhas. Volto a postar o result.

        Grato. Fique bem!

      • Luiz Humberto

        Ok Alterado.

        zmprov mcf zimbraMailURL /zimbra

        Porém ainda não está funcional. Tenho que reiniciar o zimbra.

        Grato.

        • Luiz,
          Este tipo de alteração sempre pede para reiniciar o serviço, pois muda a forma como ele funciona.

          Abraços.

          • Luiz Humberto

            Ok
            Url apontando para o lugar certo.

            Se tudo isso fosse chamado técnico eu tava enrolado. (rs)

            Grato.

          • Luiz,

            Ainda mais fim de semana, que é “bandeira dois”…hehehe

            Abraços.

  • Luiz Humberto

    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:

      zmprov mcf zimbraDefaultDomainName empresa.com.br

      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.

      • Luiz Humberto

        Ok.

        Login corrigido. Tenho dois dominios um deles não era para ser o default.

        Grato

  • Luiz Humberto

    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.

      • Luiz Humberto

        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.

  • Luiz Humberto

    Vagner fiz isso.
    /opt/zimbra/bin/zmmailbox -z -m [email protected] postRestURL “//?fmt=tgz&resolve=reset” [email protected]

    Veio esse erro

    ERROR: service.FAILURE (system failure: POST failed, status=413 upload too large: file ‘/’: upload too large)

  • Carlos Eduardo

    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.

  • 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.

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

  • Carlos Celio
    • Carlos,

      Essa migração não deve ser simples pois está com muitas gerações atrasada… Tenta fazer a migração das caixas por imapsync.

  • Pedro Facanha

    Vagner sabe se é possivel eu possuindo um Zimbra funcionando normal, e instalar em outro servidor o Zimbra recente e poder utilizar os dois Zimbras? Ae a base de dados seria de apenas um deles? Saberia me passar esta informação?

    Abraços..

    • Pedro,
      Desculpe a demora nas respostas mas é que estava com milhares de email pra responder e me enrolei e perdi a data de alguns.
      É possível sim, na instalação do Zimbra devemos apontar que o servidor não é standalone.

  • Henrique Oliveira

    Vagner, o imapsync é possivel sincronizar as msg mantendo a data do recebimento das msg? no seu scripts todas as msg vem com a data atual.

    Abraços e obrigado.

    • Henrique,
      Tem que ver nas opções do imapsync, mas se eu não me engano é –idatefromheader
      Teste essa pois acho que ela sincroniza o cabeçalho.

  • Vagner,

    O que você quis dizer com: “lembre de liberar o login em texto plano” na parte do imapsync?

    • Dependendo da configuração do servidor de email ele não aceitará a senha em texto plano como é usada no script de imapsync, teria que converter as senhas para base64 primeiro e depois executar os scripts.
      Liberando a senha em texto plano fica mais simples de fazer a sincronia entre os servidores.

  • Pessoal, tem ZxMig (Zextras Migration Tool) que faz a migração muito mais fácil.

    • Andres,

      Sim, mas o zxextras é uma ferramenta paga, com apenas algumas funções gratuitas.

      • Não, o ZxMig é de graça, permite exportar a informação do server de origem, e importar no server de destino. Você paga depois do periodo de trial de 30 dias os demais módulos que quiser, mas para a migração não precisa pagar nada.

    • Gomes B

      Olá. Fiz uma migração com esta ferramenta. MInha pergunta é se posso remover os diretórios criados para fazer a importação (no servidor novo) ou se tem algum impacto negativo.

  • O imapsync tem um log? para ver todas os email que não foram importados.

    • Adan,

      Para gravar os resultados do imapsync coloque no final da linha de comando o seguinte:

      > /var/log/imasync.log 2> /var/log/imasync-error.log

      Assim as mensagens de sucesso irão para imasync.log e as de erro para imapsync-error.log no diretório /var/log

      Abraço.

      • Tem algum parâmetro no imasync que interfere na importação de emails grandes? Se sim qual e como posso aumentar!

        Muito obrigado pela ajuda!

  • Boa tarde.

    Amigo, já uso Zimbra a bastante tempo na instituição onde trabalho, já passei por processos de migração, minha dúvida hoje é se posso trabalhar em conjunto com o Zimbra uma ferramenta antispam, algo como gateway antispam, você tem essa vivência? ou se melhorias nos confs do amavis e spamassassim pudesse tornar ainda mais fortes essa luta que estou tendo contra SPAM.

    Ótimo Post.
    Deste já agradeço.

    • Ricardo,

      Ter um gateway de email sempre ajuda, pois diminui a carga em cima do servidor real.
      Mas melhorar a configuração do antispam e antivírus é muito efetiva.

  • Pinguintux

    Boa tarde Vagner!
    Parabéns pela excelente iniciativa. Aproveito a oportunidade para perguntar se é possível migrar o zimbra na seguinte situação:

    1) Servidor de Produção: Servidor Debian 5 (Lenny) com zimbra 6.0.16;
    2) Desejo migrar para: Servidor Ubuntu 12.04 (Precise Pangolin) e instalar o zimbra 8.0.4

    OBS: Preciso fazer esta migração pois o zimbra para o Debian foi descontinuado na versão “8”

    Caso Tenhas alguma solução para este problema eu desde já agradeço!
    Até mais!

    • Cara (que fez questão de não deixar o nome),

      Eu migrei do 6.0.6(Ubuntu 8.04) para 8.01 no ubuntu 12.04 e tudo funcionou perfeitamente.

      Abraços

  • Boa tarde Wagner!
    Cara, estou tentando migrar os emails com o seu script e não estou conseguindo dar o seguindo erro:

    ###############################################################
    Turned ON syncinternaldates, will set the internal dates on host2 same as host1.
    TimeZone :[BRT]
    Will try to use PLAIN authentication on host1
    Will try to use PLAIN authentication on host2
    From imap server [200.198.3.1] port [993] user [[email protected]]
    To imap server [200.198.3.2] port [993] user [[email protected]]
    Banner : No banner
    Host 200.198.3.1 says it has CAPABILITY for AUTHENTICATE PLAIN
    Error login : [200.198.3.1] with user [[email protected]] auth [PLAIN]: 2 NO AUTHENTICATE failed

    Trying LOGIN Auth mechanism on [200.198.34.1] with user [[email protected]]
    Error login : [200.198.3.1] with user [[email protected]] auth [LOGIN] : 3 BAD parse error: excess characters at end of command
    ##################################################################

    Você poderia me orientar?

  • Marcos Schimidt

    Vagner
    Muito bom seu tuto, só estou com um “probleminha”
    No momento em que vou recuperar a conta usando “/opt/zimbra/bin/zmmailbox -z -m [email protected] postRestURL “//?fmt=tgz&resolve=reset” [email protected]

    Notei q o sistema esta deixando os ultimos 3 meses de fora… o que pode ser?

    grande abraço

  • Mike Melo

    Vagner, boa tarde
    Antes de mais nada, esse procedimento que vc postou funcionou REDONDO, maravilha mesmo.
    Minha duvida é, tem como migrar os contatos dos usuários e as configurações sem ter que fazer de/para ?

    MUITO OBRIGADO pelo ótimo trabalho feito com esse post.

  • Marcos Schimidt

    Algum pode me ajudar??

  • Marcos Schimidt

    Vagner, fiz com esse APP e funcionou, mas o ruim dele é que preciso colocar a senha do usuário, e isso eu não tenho em mãos,
    https://code.google.com/p/imaputils/downloads/detail?name=imaputils-1.0.2.tar.gz&can=2&q=

    Agora eu tentei com o seu imapsync aqui do seu tuto, e ele me retornou o seguinte erro:
    Argument “” isn’t numeric in numeric gt (>) at /usr/bin/imapsync line 2491.
    Can not open imap connection on [192.168.0.2] with user [[email protected]]: IO::Socket::SSL: connect: Conexão recusada

    Obrigado

    • Marcos,
      Isso está com cara de erro no script imapsync.
      Verifique se o shell padrão é o bash;
      Verifique o script se tem erros ou baixe novamente.

  • Wagner,

    Você usa a conta admin para sincronizar a conta de qualquer usuário?

    imapsync –nosyncacls –host1 192.168.1.250 –host2 192.168.1.251 –authmech1 PLAIN –authmech2 PLAIN –ssl1 –user1 $USER –authuser1 [email protected] –password1 ‘senha_do_admin_zimbra_producao’ –ssl2 –user2 $USER –authuser2 [email protected] –password2 ‘senha_do_admin_zimbra_migracao’

    Estou perguntando isso porque tenho um ambiente em que vou usar o imapsync para migrar e a dificuldade está em não saber a senha dos usuários; se isso for possível como na sua linha de comando acima, resolveria meu problema… i wiil try test now…

  • Vagner preciso migrar da versão 7.2 para a versão 8.0,muda muito cooisa entre as duas versões?
    Ganho algum recurso novo?
    Posso fazer um snapshot na versão 7.2 e atualizar em cima dele para a versão 8.0?
    Obrigado.

    • Wagner,
      No 8 não temos mais o chat interno, somente com programas externos teremos o chat. Fora isso são apenas poucas mudanças na interface de gerenciamento.

      Não costumo atualizar por cima, por isso eu migrei de um pra outro, mas pode fazer um teste sendo um snapshot.

      • Obrigado.Este procedimento que está neste post, é o procedimento que devo usar pra migrar para nova versão correto?Outra duvida na versão 7.2 ao responder um email não consigo colocar confirmação de leitura para todas as mensagens enviadas, somente uma a uma, você sabe se na 8 mudou algo?

        • Wagner,

          O procedimento é esse mesmo. Na versão 8.0 não mudou a questão de confirmação de leitura.

  • Paulo Ferreira

    Vagner ainda pretende disponibilizar a video aula sobre a instalação do zimbra?

    • Paulo,

      Pretendo sim, estou testando a nova versão para ver se tem mudanças em relação a 8.0 ou só melhorias e vou fazer um vídeo.

      • Paulo Ferreira

        Vagner,

        Estou aguardando! O curso de Linux do cooperati vai ser com você? abraços

  • Vagner voce sabe porque nao consigo sincronizar o email no zimbra pelo 3g?tem alguma configuração?

    • Wagner,

      Nenhum problemas com 3g, tem certeza que não é algo de sua operadora?

  • Vagner, uma duvida ao preparar o novo servidor , vc colocou o novo servidor com o mesmo nome do de produção?

    • Gustavo,

      EU coloquei outro nome, pois senão ia dar conflito.

      Tipo original: mail
      Novo servidor: mail2

  • Rodrigo Hendges

    Eu gostaria de deixar meu agradecimento ao Vagner e ao pessoal do CooperaTI. Já utilizei essa dica em várias migrações de servidores Zimbra e sempre funcionou 100%. E hoje estou finalizando mais uma migração. Muito obrigado!

  • Marcos Neves

    Vagner fiz a migração de contas, senhas e mensagens no meu servidor zimbra, executei o script para importar as mensagens, deu tudo mas quando rodei o script de importar as mensagens pela segunda vez, ele duplicou as mensagens antigas. Tem como corrigir esse problema.

  • Vagner, meu estimado Boa noite, venho lhe agradecer imensamente este tutorial pois estava com essa missão migrate de um 7 para o 8 e o antigo cheio de problemas… Este tutorial foi demais! Muito obrigado por compartilhar conosco. Ficou mais uma lição. Gilberto Mendes – Fortaleza/CE

  • Bruno Montenegro

    Bom dia, primeiro queria enaltecer esta iniciativa, excelente tutorial! Segundo, como faço para acrescentar no primeiro script o nome alternativo? agradeço o apoio.

    • Bruno,
      O que você quer dizer com “nome alternativo”

  • thiago lima

    Alguém sabe como bloquear links no corpo de emails??? As vezes recebemos emails com links direcionando para baixar aplicativos, exemplo exe,msi..

    • Thiago,

      Na interface do administrador tem como fazer a exclusão de certas extensões.

  • Caro Wagner,
    Inicialmente agradeço e parabenizo-o pelo post de migração do Zimbra.
    Mas, se possível, peço-o o favor de ajudar-me quanto ao problema abaixo:
    Tenho 3 domínios no mesmo servidor e ao executar o script “obtem-mensagens.sh” apenas os usuários do primeiro domínio é exportado. Já dos demais não.
    Apesar de diversas pesquisas na web sobre o utilitário “zmmailbox” do Zimbra e não encontrei nenhuma informação de como exportar apenas um domínio do meu servidor de produção (versão 6.0.4).
    Aguardo resposta.

    • Espedito,

      Quando você executa o script para obter todas as contas do servidor, ele cria uma lista com todas as contas de todos os domínios ou só de um?

  • Marcos

    Pessoal, boa tarde..

    Não sei se já foi falado aqui, alguem já conseguiu fazer a migração das contas de um servidor para o outro levando o Calendário e a Lista de Contatos de cada usuário??

    Dificil essa??
    Valei pessoal

  • Augusto Becker Jucá

    Ola ! no script cria-contas.sh esta faltando o userPasword apos na linha
    $ZMPROV ca “$EMAIL” “$SENHA” displayName “$DNAME” givenName “$PNAME” sn “$SNAME”
    Por este motivo alguns nao conseguiram migrar a senha, o correto seria:
    $ZMPROV ca “$EMAIL” userPassword “$SENHA” displayName “$DNAME” givenName “$PNAME” sn “$SNAME”

    abraco

  • Fernando Ricardo de Almeida

    Boa tarde, primeiramente parabéns pelo post
    Estou com problema na hora de restaurar as mensagens, algumas contas não restauram, e na hora da restauração da seguinte erro: (system failure: POST failed, status=500 Server Erro, Desde ja agradeço a atenção.

  • Olá Vagner, parabéns pelo post, muito detalhado.
    Estou usando a versão do Zimbra 8.5.1, e migrando para uma versão 8.0.9. Não consegui fazer funcionar nem a criação das contas através do script, será que mudou alguma coisa nessa nova versão que não me permite criar as contas através das contas importadas?
    Obrigado!

    • Paulo,

      Nunca fiz downgrade de versão. Mas houve mudanças na estrutura dos comandos desde a versão 8.1, mas nada que impeça o funcionamento dos scripts.

  • Fabio

    Vagner eu posso migrar do 8.0.2 para o 8.6, essa 8.6 fiquei na dúvida se é livre, pois mudou completamente a numeração.

    • Fábio,

      Pode migrar sim, principalmente pois nas versões acima de 8.4 foi resolvido um bug que abre brechas para descoberta de dados administrativos do servidor.

  • Osiel Nunes

    Olá Vagner, bom dia! De antemão gostaria de parabenizar pelo excelente trabalho!
    E aproveitar para pedir alguma ajuda. Estou realizando a configuração de um servidor de backup para o zimbra e tenho o servidor de produção com a versão: Release 6.0.4_GA_2038.DEBIAN5_64 DEBIAN5_64 FOSS edition.
    E instalei um novo server com UBUNTU 12.04.4 LTS com o Zimbra: Release 8.0.9.GA.6191.UBUNTU12.64 UBUNTU12_64 FOSS edition.
    Realizei a execução do script para coletar as contas e acredito que não houve problemas, no entanto executei o script para criar as contas e obtive a seguinte mensagem: ERROR: ACCOUNT .NO_SUCH_DOMAIN, e nenhuma conta foi criada; mas notei que não vi aqui nos comentarios nenhum relato com este erro, poderia me ajudar, obrigado!

    • Bom dia Osiel,

      Isso deve ser porque você não criou o domínio antes de importar as contas.

      • Osiel Nunes

        Olá Vagner, bom dia! Em princípio gostaria de agradecer a atenção meu nobre, muito obrigado! Vagner, te comento o seguinte, o domínio é um AD(Active Directory), o coloquei no /etc/hosts bem como no resolv.conf todos os apontamentos, mas o que acontece é que criei o hostname com nome diferente do servidor de produção e em seguida alterei, mas enfim, tomei a seguinte decisão: removi todo o zimbra e reinstalei, com todos os nomes corretos inclusive o nome do domínio e ainda assim continua dando o mesmo erro!

  • Osiel Nunes

    Vagner, você diz criar o domínio no zimbra ou no server?, quando instalo o zimbra ele já não cria o dominio? Desculpa sou iniciante com zimbra!

    • Fabio

      Boa noite Osiel, fiz uma migração seguindo este tutorial
      no meu caso eram dois dominios, o primeiro cria na instalação, instalei o zimbra completo, e o segundo fiz manualmente, depois bastou:

      1 – para pegar as contas com as senhas
      #!/bin/bash
      # Obtemos uma lista de todas as contas do servidor
      ZMPROV=”/opt/zimbra/bin/zmprov”
      for MAIL in $($ZMPROV -l gaa | sort); do

      SENHA=$($ZMPROV -l ga $MAIL userPassword | grep userPassword | awk -F ” ” ‘{print $2}’)

      echo “Conta: $MAIL” > contas/dados-$MAIL
      echo “Senha: $SENHA” >> contas/dados-$MAIL
      done

      2- no servidor novo
      arquivo cria-contas.sh
      #!/bin/bash
      # Cria as contas no Zimbra
      ZMPROV=”/opt/zimbra/bin/zmprov”
      for DADOS in $(ls contas); do

      EMAIL=$(grep Conta contas/$DADOS | awk -F ” ” ‘{print $2}’)
      DNAME=$(grep Display contas/$DADOS | awk -F ” ” ‘{print $2″ “$3” “$4” “$5}’)
      PNAME=$(grep Nome contas/$DADOS | awk -F ” ” ‘{print $2}’)
      SNAME=$(grep Sobrenome contas/$DADOS | awk -F ” ” ‘{print $2}’)
      SENHA=$(grep Senha contas/$DADOS | awk -F ” ” ‘{print $2}’)

      $ZMPROV ca “$EMAIL” “$SENHA” displayName “$DNAME” givenName “$PNAME” sn “$SNAME”
      done

      depois rodei o outro script
      #!/bin/bash
      # Cria as contas no Zimbra
      ZMPROV=”/opt/zimbra/bin/zmprov”
      for DADOS in $(ls contas); do

      EMAIL=$(grep Conta contas/$DADOS | awk -F ” ” ‘{print $2}’)
      SENHA=$(grep Senha contas/$DADOS | awk -F ” ” ‘{print $2}’)

      $ZMPROV ma “$EMAIL” userPassword “$SENHA”
      done

      depois foi a vez das mensagens

      eu tive um problema no importe das mensagens, mas então eu digitei o texto no nano e deu tudo certo, o meu servidor ja esta em produção

  • Osiel Nunes

    Import resolvido, estava com nome do domínio diferente do nome de domínio em produção, apenas renomeei o domínio de contingência para o mesmo nome do de produçao! De qualquer forma, obrigado pela atenção e parabéns por compartilhar o conhecimento!

    • Osiel Nunes

      Olá Fabio, bom dia! Fabio,obrigado! No meu caso era apenas o nome do domínio errado, já importei as contas agora vou importar as mensagens, obrigado por enquanto, abraço!

  • Osiel Nunes

    Olá pessoal, bom dia! Poderiam me dar uma força, já rodei o script para criação de contas no novo server, no entanto todas não conseguem logar, dá erro de senha, só apos aplicar nova senha pelo admin é que é possível, já rodei o seguinte script e mesmo assim não funcionou:

    #!/bin/bash
    # Cria as contas no Zimbra
    ZMPROV=”/opt/zimbra/bin/zmprov”
    for DADOS in $(ls contas); do

    EMAIL=$(grep Conta contas/$DADOS | awk -F ” ” ‘{print $2}’)
    SENHA=$(grep Senha contas/$DADOS | awk -F ” ” ‘{print $2}’)

    $ZMPROV ma “$EMAIL” userPassword “$SENHA”
    done

    Poderiam me dar uma força, obrigado!

    • Junior

      Osiel, não se complique fazendo a migração com scripts, use zextras migration tool.

      • Osiel Nunes

        Olá Junior, bom dia! Junior, como já tenho as contas no novo servidor embora não estejam logando por causa das senhas, caso eu use o zextras migration tool, teria que começar o processo do zero correto? migrar contas, mensagens etc. Na migração das contas consigo traze-las com as senhas?

        • Junior

          Acho que teria de começar de novo o processo desde zero, mas eu já usei e migra todas as contas integras, com todas as demais configurações além das senhas.

  • Fabio

    Eu tive esse problema também, depois das contas criadas eu apague o conteúdo da pasta contas, rodei este script, ele esta nos comentários deste poste
    no servidor antigo
    1 – para pegar as contas com as senhas
    #!/bin/bash
    # Obtemos uma lista de todas as contas do servidor
    ZMPROV=”/opt/zimbra/bin/zmprov”
    for MAIL in $($ZMPROV -l gaa | sort); do

    SENHA=$($ZMPROV -l ga $MAIL userPassword | grep userPassword | awk -F ” ” ‘{print $2}’)

    echo “Conta: $MAIL” > contas/dados-$MAIL
    echo “Senha: $SENHA” >> contas/dados-$MAIL
    done

    2 – apagar o conteúdo da pasta contas do servidor novo e copiar o que foi criado no servidor antigo

    3 – no servidor novo

    #!/bin/bash
    # Cria as contas no Zimbra
    ZMPROV=”/opt/zimbra/bin/zmprov”
    for DADOS in $(ls contas); do
    EMAIL=$(grep Conta contas/$DADOS | awk -F ” ” ‘{print $2}’)
    SENHA=$(grep Senha contas/$DADOS | awk -F ” ” ‘{print $2}’)
    $ZMPROV ma “$EMAIL” userPassword “$SENHA”
    done

    se der erro digite o script, ao invés de copiar colar
    no meu caso deu certo

  • Osiel Nunes

    Olá pessoal boa tarde! Pessoal não sei o que está acontecendo, mas as senhas não estão vindo de jeito nenhum. Já corrigir o script e executei novamente no servidor novo, mas observação, como já havia obtido as contas do servidor de produção não executei o primento script novamente, executei o segundo script com a correção da string: userPassword, referenciando o mesmo diretorio que já continha as contas no /tmp/contas, pedir para um usuário fazer um teste tentando logar na conta e o mesmo não teve acesso, o que poderia ser, este é o script que estou executando: #!/bin/bash
    # Cria as contas no Zimbra
    ZMPROV=”/opt/zimbra/bin/zmprov”
    for DADOS in $(ls contas); do

    EMAIL=$(grep Conta contas/$DADOS | awk -F ” ” ‘{print $2}’)
    DNAME=$(grep Display contas/$DADOS | awk -F ” ” ‘{print $2″ “$3” “$4” “$5}’)
    PNAME=$(grep Nome contas/$DADOS | awk -F ” ” ‘{print $2}’)
    SNAME=$(grep Sobrenome contas/$DADOS | awk -F ” ” ‘{print $2}’)
    SENHA=$(grep Senha contas/$DADOS | awk -F ” ” ‘{print $2}’)

    $ZMPROV ca “$EMAIL” userPassword “$SENHA” displayName “$DNAME” givenName “$PNAME” sn “$SNAME”
    done

  • Fábio

    Osiel, este servidor ainda não esta em produção, faz o que eu disse

    • Osiel Nunes

      Olá Fabio, bom dia! Já fiz exatamente o que você indicou, mas as senhas não foram corrigidas, quando peço para qualquer usuário logar, da erro de senha.

      Este servidor vai servir de contingência e provavelmente no futuro se tornará produção tendo em vista que este está com a versão 8.0.6 enquanto o atual(produção) está com a versão 6.
      Enfim, estou fazendo aos poucos, pois estou abarrotado de tarefas, por isso peço desculpas por demorar tanto para responder.

  • Osiel Nunes

    Olá pessoal, bom dia! Gostaria se possível da ajuda do grupo, estou tendo alguns problemas na migração:

    1º – importei as contas, mas as senhas não vieram.
    2º – executei o script com a correção do da string: userPassword, conforme postado por acima mas ainda assim não funcionou.
    3º – configurei texto plano no servidor de migração para IMAP e POP, mas estou tendo o seguinte erro:
    Failure: error login on [xx.xx.xxx.xx] with user [[email protected]] auth [PLAIN]: 2 NO account does not have IMAP access enabled
    Obs. Notei que no servidor de origem(produção) no item IMAP, no painel de controle de gerenciamento, realmente a opção de texto puro não está abilitado, no entanto não usamos IMAP e sim POP, sendo que o mesmo está com a opção texto puro abilitado.
    Pergunta posso usar o IMAPSYNC para sincronizar mensagem ou servidor pop?

    Desde já agradeço a ajuda de todos, obrigado!

    • Osiel,

      Para migrar sem perder as mensagens no servidor antigo, TEM que habilitar o IMAP com texto puro pelo menos para fazer a migração e depois pode desabilitar.

      • Osiel Nunes

        Ok Vagner, obrigado, vou tentar parar o server de produção para realizar essa tarefa, mais uma vez agradeço!

  • Fábio Rodrigues

    Muito bom seu artigo,

    Estou passando por uma situação de migração, assumi um servidor que está com uma versão antiga e com dimensionamento errado, com isso tenho sempre problemas de espaço e outros problemas, estou fazendo outros servidores de forma correta (disco maiores, dimensionamento mais próximo do recomendado, LVM, etc), e estou com muitas duvidas em como resolver o problema das entradas A e MX para o novo servidor, veja se esses são os passos para realizar essa migração:

    1 – Criar outro registro A e MX para instalar o novo zimbra;
    2 – Instalar os novos servidores;
    3 – Importar via scripts os domínios, contas/senhas e listas de distribuição;
    4 – Sincronizar as caixas via imapsync;
    5 – Alterar nos servidores antigo e novo:
    IP fixo do servidor antigo para o IP que foi utilizado na instalação do servidor novo;
    IP fixo no servidor novo para o IP que era utlizado pelo servidor antigo;
    Arquivos /etc/hostname, /etc/hosts do antigo para o novo e do novo para o antigo em todos os servidores;
    O nome de domínio no servidor novo com /opt/zimbra/libexec/zmsetservername -n ;
    O nome de domínio no servidor antigo com /opt/zimbra/libexec/zmsetservername -n ;

    Dessa forma, continuo com o mesmo domínio, mesmo A e MX em um servidor completamente novo e atualizado com o mínimo possível de downtime.

    Meu plano de ação está correto?

    • Bom dia Fábio, simplifique as coisas e use a ferramenta gratuita Zextras Migration Tool. Com a versão de teste tem 30 dias para fazer a migração de caixas e configuração das mesmas sem mexer com scripts.