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