Zimbra 8.8.5 ce restore da files

April 02, 2018 0 Comments CLI Utility, Zimbra

Ciao a tutti!

Mi è capitato poco tempo fa, di dover ripristinare una macchina zimbra server 8.8.5 pieno di caselle di posta e mail, su una nuova macchina virtuale. Per qualche motivo che non ho avuto tempo di identificare, il processo soap che gestisce quasi tutte le operazioni di zimbra server dava sempre errore 503 rendendo inutilizzabile il server.

A questo punto sono stato costretto a ripristinare il tutto in una nuova macchina con lo zimbra server 8.8.5 appena installato da zero.

Le cartelle principali di zimbra server, quelle che contengono i dati sono:

/opt/zimbra/store/ #contiene tutte le email delle caselle
/opt/zimbra/db/ #è il database mariadb 
/opt/zimbra/index/ #contiene l'index lucene delle mail
/opt/zimbra/conf/ #contiene tutte le configurazioni di zimbra e le informazioni di ldap

Operazioni di ripristino

Definiamo quindi ZimbraOld la macchina zimbra "rotta" e ZimbraNew la macchina nuova con zimbra server appena installato.

Potete installare velocemente due zimbra server di test utilizzando vagrant+ansible, link del progetto per l'installazione di zimbra server 8.8.5 : https://github.com/nutellinoit/zimbra-ansible-playground

Per evitare qualsiasi problema di installazione, prima di installare la macchina ZimbraNew bisogna stoppare tutti i servizi nella macchina ZimbraOld e cambiarne l'ip address.

Il comando per lo stop di tutti i servizi è

su - zimbra  
zmcontrol stop  

Verifichiamo anche che non ci siano processi orfani rimasti attivi con

ps -aux | grep zimbra  

A questo punto possiamo installare lo ZimbraNew in una nuova macchina che ha il vecchio ip di ZimbraOld.

Una volta completata l'instalalzione di ZimbraNew e verificato che tutto funzioni correttamente, possiamo procedere al trasferimento dei dati.

Stoppiamo quindi nella macchina ZimbraNew tutti i servizi di zimbra.

su - zimbra  
zmcontrol stop  

Dalla macchina ZimbraOld creiamo una connessione ssh con chiave dall'utente root all'utente root di ZimbraNew

# se non abbiamo ancora creato la nostra chiave
ssh-keygen -t rsa

# copiamo la chiave con
ssh-copy-id -i ~/.ssh/id_rsa root@ZimbraNew  

Fatto ciò, possiamo usare i comandi di rsync senza preoccuparci di inserire ogni volta la password.

Procediamo quindi da ZimbraOld a lanciare i seguenti comandi

# Copiamo file e database
rsync -a --delete /opt/zimbra/store/ root@ZimbraNew:/opt/zimbra/store  
rsync -a --delete /opt/zimbra/db/ root@ZimbraNew:/opt/zimbra/db  
rsync -a --delete /opt/zimbra/index/ root@ ZimbraNew:/opt/zimbra/index

# Copiamo le configurazioni
rsync -av --delete --exclude=data.mdb /opt/zimbra/data/ root@ZimbraNew:/opt/zimbra/data

E' molto importante escludere da questa copia il file data.mdb essendo uno sparsebundle. Se provate a copiarlo, (come ho fatto io la prima volta) vi riempirà il disco destinazione.

A questo punto dobbiamo copiare questo famoso data.mdb

I comandi da fare sono i seguenti:

da ZimbraOld (come utente root):

mdb_copy /opt/zimbra/data/ldap/mdb/db /opt/zimbra/backup/ldap/mdb/db  
cd /opt/zimbra/backup/  
tar -zcvf archivioldap.tar.gz ldap/  
scp archivioldap.tar.gz root@ZimbraNew:/opt/zimbra/backup/  

ora passiamo su ZimbraNew (come utente root):

cd /opt/zimbra/backup/  
chmod 777  archivioldap.tar.gz  
tar -zxvf archivioldap.tar.gz  
su - zimbra  
cd ldap/mdb/db/  
mv data.mdb ../../../../data/ldap/mdb/db/  

Fatto tutto ciò dovrebbe essere sufficiente lanciare da ZimbraNew (come utente zimbra)

zmcontrol start  

Et voilà! Il nuovo server conterrà tutti i dati di quello vecchio!.

Eventuali problemi di certificati self signed

Se riscontrate problemi di certificati (se avete i certificati self signed) seguite questi passaggi:

/opt/zimbra/bin/zmcertmgr createca -new
/opt/zimbra/bin/zmcertmgr deployca

#impostiamo a 10 anni circa la scadenze
/opt/zimbra/bin/zmcertmgr createcrt -new -days 3650

/opt/zimbra/bin/zmcertmgr deploycrt self 

/opt/zimbra/bin/zmcertmgr viewdeployedcrt

su - zimbra  
zmcontrol restart  
Samuele Chiocca
Padova, italy Website