Migração completa de Zimbra para Zimbra

De Wiki Hackstore

Migração das senhas

Exportando senhas no servidor antigo

1- Gere uma lista de todas as contas e exporte para o arquivo /tmp/lista-completa

/opt/zimbra/bin/zmprov -l gaa > /tmp/lista-completa

2- Execute o seguinte comando para gerar um arquivo com os hashes das senhas no servidor ANTIGO:

for i in $(cat /tmp/lista-completa);do zmprov -l ga $i userPassword|grep userPassword:|sed s,'userPassword',"$i",g >> /tmp/senhas-export;done

Importando senhas no servidor novo

1- Copie o arquivo /tmp/senhas-export do servidor antigo para o novo;

2- importe as senhas antigas no servidor NOVO:

while IFS=: read user pass;do
     zmprov ma $user userPassword ${pass}
     zmprov ma $user zimbraPasswordMustChange FALSE
done < /tmp/senhas-export



Migração das mensagens de email

Utilize imapsync. Há uma farta documentação dessa ferramenta aqui na wiki. Se vira ;)


Migração da agenda

Exportando agendas no servidor antigo

No servidor antigo logue como root e faça o seguinte:

# su – zimbra
$ cd /tmp
$ mkdir agendas ; cd agendas
$ vi obtem-agendas.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 "/calendar?fmt=ics" > /tmp/agendas/$MAIL.ics
done

Assim vamos criar a lista de usuários e vamos “pegar” os dados dos usuários apenas do /calendar deles e criar um arquivo para cada um com o nome contadousuario@dominio.ics.

Importando agendas

Copie o diretório agendas para o /tmp do novo servidor e logue como root nele:

# su – zimbra
$ cd /tmp
$ cd agendas

Agora remova as agendas vazias, ou seja as que tem menos de 94 bytes(apenas o cabeçalho):

$ find . -type f -size -95c -exec rm -f {} \;

Assim pegamos todos os arquivos (-f) com tamanho menor que 95 caracteres (-size -95c) e executamos um remover sem perguntas neles (-exec rm -f {} \;).

Agora importamos apenas as agendas com conteúdo:

$ for CONTA in $(ls |awk -F ".ics" '{print $1}') ; do zmmailbox -z -m $CONTA pru /Calendar /tmp/agendas/$CONTA.ics ;done

Assim o que foi importado com gru (getRestURL) vai ser exportado com pru (postRestURL).

Assim temos todos as agendas devidamente importadas nos contas corretas.


Migração dos contatos

Exportando contatos no servidor antigo

No servidor antigo logue como root e faça o seguinte:

# su – zimbra
$ cd /tmp
$ mkdir contatos ; cd contatos
$ vi obtem-contatos.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 "/contacts?fmt=csv" > /tmp/contatos/$MAIL.csv
done

Assim vamos criar a lista de usuários e vamos “pegar” os dados dos usuários apenas do /contacts deles e criar um arquivo para cada um com o nome contadousuario@dominio.csv.

Importando contatos

Copie o diretório contatos para o /tmp do novo servidor e logue como root nele:

# su – zimbra
$ cd /tmp
$ cd contatos

Agora importamos apenas os contatos com conteúdo:

$ for CONTA in $(ls |awk -F ".csv" '{print $1}') ; do zmmailbox -z -m $CONTA pru /Contacts /tmp/contatos/$CONTA.csv ;done

Assim o que foi importado com gru (getRestURL) vai ser exportado com pru (postRestURL).

Assim temos todos as agendas devidamente importadas nos contas corretas.

Referências:

http://www.andersonjacson.com.br/portal/modules/smartsection/item.php?itemid=65
http://www.cooperati.com.br/wordpress/2012/11/08/migrando-assinaturas-entre-servidores-zimbra/
http://www.cooperati.com.br/wordpress/2012/11/22/migrando-agendas-entre-servidores-zimbra/
http://www.cooperati.com.br/wordpress/2012/11/01/migrando-entre-servidores-zimbra/
https://wiki.zimbra.com/wiki/Calendar_and_Contacts_Migration
https://forums.zimbra.org/viewtopic.php?t=22828