Destaque SecundárioDicasGerenciamentoLinuxServidores

Como realizar a migração do Zimbra

No post de hoje, vamos ensinar um passo-a-passo de como realizar uma migração do Zimbra para um novo servidor.

O Zimbra é um sistema que permite ao usuário gerenciar, além dos seus e-mails, calendário, tarefas e arquivos. Caso precise de ajuda para esta excelente ferramenta entre em contato conosco, acesse www.soloweb.com.br

Passo 1

No primeiro passo você deverá montar o novo servidor, configure-o com o novo domínio ou hostname. Pode ser configurado também com o mesmo domínio.

Precisando de uma hospedagem de site ou de um servidor dedicado personalizado, seja para ambiente de teste, desenvolvimento ou de produção? E com um suporte de especialistas, que ti, ajudam a resolver os problemas o mais rápido possível? A SoloWeb tem o prazer em ti, ajudar com isso. Entre em contato conosco e faça uma cotação agora mesmo, acesse: www.soloweb.com.br.

Com o ambiente preparado vamos para os próximos passos que são o de armazenar as informações.

Passo 2

No antigo servidor comece criando as pastas que vão armazenar as informações:

# mkdir -p /migracao/zimbra
# chmod -R 777 /migracao/zimbra
# chown  -R zimbra:zimbra  /migracao/zimbra

Passo 3

Exportando todos os domínios

# su - zimbra
# mkdir -p /migracao/zimbra/dominios
# cd /migracao/zimbra/dominios
# zmprov gad | tee -a dominios.txt

Passo 4

Exportando todas as contas

# mkdir -p  /migracao/zimbra/contas
# cd /migracao/zimbra/contas
# zmprov gaaa | tee -a admins.txt
# zmprov -l gaa | tee -a users.txt

Passo 5

Exportando detalhes das contas.

# mkdir -p /migracao/zimbra/detalhes_de_contas
# cd /migracao/zimbra/detalhes_de_contas
# for user in `cat ../contas/users.txt`; do zmprov ga $user  | grep -i Name: | tee -a $user.txt ; done

Passo 6

Exportando todas as senhas dos usuários

# mkdir -p /migracao/zimbra/passwords
# cd /migracao/zimbra/passwords
# for user in `cat ../contas/users.txt`; do zmprov -l ga $user userPassword | grep userPassword: | awk '{ print $2}' | tee -a $user.shadow; done

Passo 7

Exportando todas as listas de distribuição

# mkdir -p /migracao/zimbra/listas_de_distribuicao
# cd /migracao/zimbra/listas_de_distribuicao
# zmprov gadl | tee -a listas_de_distribuicao.txt
# for list in `cat listas_de_distribuicao.txt`; do zmprov gdlm $lista > $lista.txt ;echo "$lista"; done

Passo 8

Exportando todos os Aliases

# mkdir -p /migracao/zimbra/aliases
# cd /migracao/zimbra/aliases
# for user in `cat ../contas/users.txt`; do zmprov ga  $user | grep zimbraMailAlias | awk '{print $2}' | tee -a $user.txt ;echo $i ;done

Este processo levará algum tempo, dependendo do número de contas. Como a maioria das contas não possui aliases, acabaremos com muitos arquivos de texto vazios desnecessários, que excluiremos usando:

# find /migracao/zimbra/aliases -type f -empty | xargs -n1 rm -v

Passo 9

Exportando dados da caixa de e-mail. Esse processo levará um bom tempo, é importante que o rode em screen(Comando para rodar processos demorados em background).

# screen -S export-data
# su - zimbra
# cd /migracao/zimbra
# mkdir mailbox_data
# cd mailbox_data
# for user in `cat ../contas/users.txt`; do echo "Exportando mailbox do $user" ; zmmailbox -z -m $user getRestURL '/?fmt=tgz' > ./$user.tgz ; done

Você começará a ver as caixas de correio sendo exportadas, mas isso levará um tempo. No caso de alguma caixa de correio relatar erros durante a exportação, anote as contas problemáticas e tente reexportá-las posteriormente, criando um arquivo de texto: “/migracao/zimbra/contas/contas-com-erros.txt”.

# for user in `cat ../contas/contas-com-erros.txt`; do echo "Exporting mailbox $user" ; zmmailbox -z -m $user getRestURL '/?fmt=tgz' > ./$user.tgz ; done

Passo 10

Exportando os filtros de e-mails dos usuários:

# mkdir /migracao/zimbra/filtros
# cd /migracao/zimbra/filtros
# vim exportar-filtros.sh
# chmod 777 exportar-filtros.sh

Agora insira o seguinte conteúdo no arquivo shell criado:

#!/bin/bash
mkdir tmp
set -x
clear
for user in `cat ../contas/users.txt`;
do
    filter=`zmprov ga $user zimbraMailSieveScript > ./tmp/$user`
    sed -i -e "1d" ./tmp/$user
    sed 's/zimbraMailSieveScript: //g' ./tmp/$user > ./$user;
    rm ./tmp/$user
    echo "Exportando filtros para o $user"
done
\rm -rf tmp

A primeira etapa do processo de restauração começa com a restauração de todos os domínios. Se você já criou o domínio principal no novo servidor, pode excluí-lo de /migracao/zimbra/dominios/dominios.txt

A próxima parte assume que os dados que acabamos de exportar na seção acima estão disponíveis ou copiados (na mesma estrutura de diretório) no novo servidor.

Se você tiver que copiar os dados, certifique-se de emitir um chown -R zimbra:zimbra em /migracao/zimbra para garantir que o usuário zimbra tenha acesso total a todos os arquivos e diretórios.

Aviso: Qualquer interrupção durante a execução desses scripts pode resultar em corrupção do banco de dados, portanto, esses comandos devem ser executados a partir de um console ou por meio de uma sessão de tela.

Passo 11

Restaurando domínios:

# cd /migracao/zimbra/dominios
# for domain in `cat dominios.txt `; do zmprov cd $domain zimbraAuthMech zimbra ;echo $domain ;done

Passo 12

Restaurando contas e senhas

# mkdir -p /migracao/zimbra/scripts
# cd /migracao/zimbra/scripts
# vim restore_accounts.sh

Agora copie o seguinte conteúdo

#!/bin/bash
PASSWDS="../passwords"
ACCOUNT_DETAILS="../detalhes-de-contas.txt"
USERS="../contas/users.txt"
for i in `cat $USERS`
   do
givenName=$(grep givenName: $ACCOUNT_DETAILS/$i.txt | cut -d ":" -f2)
displayName=$(grep displayName: $ACCOUNT_DETAILS/$i.txt | cut -d ":" -f2)
shadowpass=$(cat $PASSWDS/$i.shadow)
zmprov ca $i "TeMpPa55^()" cn "$givenName" displayName "$displayName" givenName "$givenName"
zmprov ma $i userPassword "$shadowpass"
   done
# chmod 777 restore_accounts.sh
# ./restore_accounts.sh

Pode ocorrer erros de contas já criadas, no caso da conta admin e contas de spans criadas por padrão no zimbra, remova essas contas do arquivo de contas da sua migração.

Passo 13

Restaurando a lista de distribuição:

#for lists in `cat  lista_de_distribuicao/lista_de_distribuicao.txt`; do zmprov cdl $lists ; echo "$lists -- done " ; done

Crie agora o seguinte arquivo “restore-list-dist.sh” e execute-o.

#!/bin/bash
for list in `cat lista_de_distribuicao.txt`
do
    for mbmr in `grep -v '#' ./$list.txt | grep '@'`
    do
        zmprov adlm $list $mbmr
        echo " $mbmr has been added to $list"
    done
done
# chmod 777 restore-list-dist.sh
# ./restore-list-dist.sh

Passo 14

Restaurando todos os aliases

# cd /migration/zimbra/aliases
# vim restore_aliases.sh
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
#!/bin/bash
echo "processando contas de usuários"
for user in `cat ../contas/users.txt`
do
    echo $user
    if [ -f "./$user.txt" ]; then
        for alias in `grep '@' ./$user.txt`
        do
            zmprov aaa $user $alias
            echo "$user ALIAS $alias - Restored"
        done
     fi
done
echo "processando contas admin"
for user in `cat ../contas/admins.txt`
do
    echo $user
    if [ -f "./$user.txt" ]; then
        for alias in `grep '@' ./$user.txt`
        do
            zmprov aaa $user $alias
            echo "$user ALIAS $alias - Restored"
        done
    fi
done
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Agora execute o arquivo.

# chmod 777 restore_aliases.sh
# ./restore_aliases.sh

Passo 15

Restaurando as caixas de e-mails

# cd /migracao/zimbra/mailbox_data
# for mailbox in `cat ../contas/users.txt`; do zmmailbox -z -m $mailbox postRestURL "/?fmt=tgz&resolve=skip" ./$mailbox.tgz ; echo "$mailbox - done "; done

Passo 16

Restaurando os filtros de e-mails

# cd /migracao/zimbra/filtros
# vim importar-filtros.sh
# chmod 777 importar-filtros.sh

Agora copie o código:

for file in /migracao/zimbra/filtros/*
    do
        StrFilter=`cat "$file"`
        Acc=`echo $file | cut -d "/" -f5`
        su - zimbra -c "zmprov ma $Acc zimbraMailSieveScript '$StrFilter'"
        echo "Processando filtros $Acc"
    done
echo "Todos os filtros foram importados com sucesso"

Depois destes procedimentos você, deverá restartar o zimbra e tudo já estará ativo em seu novo servidor.

# zmcontrol restart 
Esperamos ter ajudado com mais esta dica, e siga nos, nas redes sociais para mais tutoriais, e se precisar de nossa ajuda estamos a disposição: www.soloweb.com.br.

E lembrando que a SOLOWEB além de oferecer Hospedagem de Sites, Servidores Dedicados, Servidores VPS com o menor custo do Brasil, também desenvolve soluções de software e realiza gerenciamento e monitoramento de servidores para sua empresa, faça uma cotação sem custo, acesse: www.soloweb.com.br