CODEX

Backup y restauración de buzones en Zimbra Open Source Edition

La version Open Source de Zimbra es una excelente plataforma de correo y colaboración. Aunque no incluya las utilidades para realizar backups y restauración, al igual que la versión Network Edition, es posible respaldar y restaurar las cuentas de correo utilizando zmmailbox.

Los respaldos realizados con zmmailbox incluyen:

Todas las carpetas de correo (Inbox, Sent, Draft, etc)

  • Las entradas de la libreta de direcciones
  • Las entradas del calendario
  • Las Tareas
  • Los archivos de Mi Maletín

Con esto podemos respaldar y restaurar lo mas importante y valioso para nosotros: la información, ya sea correo, contactos, eventos de calendario, etc.

Backup

Para realizar el respaldo de una cuenta de correo se debe ejecutar lo siguiente como usuario zimbra:

zmmailbox -z -m cuenta@servidor.com getRestURL -o cuenta.tgz "//?fmt=tgz"

cuenta@servidor.com: es la cuenta a respaldar
cuenta.tgz: es el nombre del archivo donde se guardará la información de la cuenta
«//?fmt=tgz»: es el formato en que queremos salvar el respaldo. Puede ser tgz o zip

Restauración

Para restaurar se debe utilizar el mismo comando pero haciendo una pequeña variación las opciones y los argumentos:

zmmailbox -z -m cuenta@servidor.com postRestURL  “//?fmt=tgz&resolve=reset” cuenta.tgz

Las opciones de resolve pueden ser:

modify: modifica el elemento viejo
replace: borra el elemento viejo y lo vuelve a crear
reset: borra todos los elementos de la carpeta antes de importar
skip: no importa los elementos duplicados

En mi caso particular, y para un cliente, he creado y probado un script (muy básico…) para hacer las copias de todos los buzones y borrar los anteriores a 15 días. Y como tal, se debe considerar una versión pre-alfa.

#/bin/bash
##
# JSJ 2012

BACKUP_DIR=/opt/backup
DATE=`date +%d%b%Y`
# LOG=$BACKUP_DIR/$DATE/$DATE.log
# touch $BACKUP_DIR/$DATE/$DATE.log
mkdir $BACKUP_DIR/$DATE
touch $BACKUP_DIR/$DATE/$DATE.log
LOG=$BACKUP_DIR/$DATE/$DATE.log
OLD=$(date +%d%b%Y –date=’15 days ago’)
# Generamos una lista de usuarios y la guardamos en usuarios.txt
/opt/zimbra/bin/zmprov -l gaa >> $BACKUP_DIR/$DATE/usuarios.txt
for user in `cat $BACKUP_DIR/$DATE/usuarios.txt`; do
echo ” Generando backup de ” $user “” >> $LOG
# Exportamos los buzones de cada usuario en un fichero con el formato usuario.tgz.
sudo -u zimbra /opt/zimbra/bin/zmmailbox -z -m $user getRestURL “//?fmt=tgz” > $BACKUP_DIR/$DATE/$user.tgz
done
if [ -d $BACKUP_DIR/$OLD ] # Si el directorio existe..
then
echo “Borramos la carpeta de hace 15 días.” >> $LOG
rm -rf /opt/backup/$OLD
else
echo “La carpeta de hace 15 días no existe. No hacemos nada.” >> $LOG
fi