Como respaldar las cuentas de un servidor de correos Zimbra? – Script Automatico

Zimbra Admin Console

Los respaldos siempre son importantes, sobre todo de los correos, que actualmente son tan vitales e importantes al contener la información de nuestro negocio, etc.

Hoy un cliente ha tenido la necesidad de respaldar sus correos electrónicos corporativos y todo lo relacionado a cada cuenta (contactos, tareas, etc.) de su servidor zimbra, aunque zimbra permite que cada usuario exporte su data desde su cuenta, esta herramienta es poco efectiva.

La solución la tenemos con el comando zmmailbox, que podemos aprovechar desde la consola.

Para evitar al cliente tener que respaldar manualmente cada cuenta, ya que asumo lo requerirá hacer con “n” frecuencia de meses… decidí ahorrarle todo el trabajo y programar un script que le permita automatizar esta tarea.

Script para respaldar buzones/cuentas de zimbra:

Al correr el siguiente script, permite respaldar las cuentas y guardarlas en la ruta /home/backupzimbra/

#!/bin/bash
if [ $USER = 'zimbra' ]; then
        for i in `zmprov -l gaa`
        do
          echo ;
          echo Preparando la cuenta $i para ser copiada ...;
          mb_size=`zmmailbox -z -m $i gms`;
          echo Tamano de la cuenta: $mb_size ...;
          echo Iniciamos a copiar la cuenta $i ...;
          zmmailbox -z -m $i getRestURL "//?fmt=tgz" > /home/backupzimbra/$i.tgz
          echo Cuenta $i copiada exitosamente!;
        done

        echo Fin del script.;
else
        echo Ejecute este script como usuario zimbra. Ejecute: su zimbra;
fi

El script nos ira imprimiendo en consola los resultados, algo como lo siguiente:

Preparando la cuenta admin@dominio.com para ser copiada …
Tamano de la cuenta: 73,85 MB …
Iniciamos a copiar la cuenta admin@midominio.com …
Cuenta admin@midominio.com copiada exitosamente!

El script funciona bastante bien… pero segun el tamaño de los buzones, y de cuantos buzones tengan, tomará horas…

Script para conocer el tamaño de las cuentas de Zimbra solamente

El siguiente script genera una lista de las cuentas y su tamaño en tiempo real.

#!/bin/bash

if [ $USER = 'zimbra' ]; then
        for account in `zmprov -l gaa`
        do
                mb_size=`zmmailbox -z -m $account gms`;
                echo El tamano de la cuenta $account es = $mb_size.;
        done

        echo Para conocer el espacio del disco, ejecute:  "df -Ph | column -t";

else
        echo Ejecute este script como usuario zimbra. Ejecute: su zimbra
fi

Este script imprimirá algo como:

El tamano de la cuenta admin@dominio.com es = 73,85 MB.

Cómo restaurar los backup?

Los respaldos pueden recuperarse con el siguiente comando:

zmmailbox -z -m USUARIO@DOMINIO.com postRestURL “//?fmt=tgz&resolve=reset” nombre_del_fichero_de_respaldo.tgz

Como “instalar” los scripts?

Sigue los siguientes pasos:

  1. Ubicate en la ruta donde desees copiar los scripts. Ejemplo: cd /home/
  2. Crear la carpeta backupzimbra/ con el comando:  mkdir backupzimbra
  3. Puedes usar el comando vi   para crear el archivo de texto, o usa el editor de codigo que te guste. Ejemplo:  vi zimbra_backup.sh
  4. Copia y pega el codigo del script, y guarda el archivo.
  5. Agregamos permisos de ejecucion con el siguiente comando:  chmod a+x zimbra_backup.sh
  6. Agregar permisos al directorio backupzimbra con el siguiente comando  chown -R zimbra:zimbra /home/backupzimbra
  7. Corremos el script con el siguiente comando (no olvidar hacerlo como usuario zimbra): ./zimbra_backup.sh

Una opcion mas elegante, ejecutar el script como un comando :), lo haces asi:

  1. Copiamos el script a una ruta “especial”:  sudo cp zimbra_backup.sh /usr/sbin/zimbra_backup
  2. Ejecutamos directamente el siguiente comando: zimbra_backup
  3. A esperar termine de correr el script… y recuperar los respaldos en la carpeta /home/backupzimbra/

DESCARGA LOS SCRIPTS DESDE LOS LOS SIGUIENTES ENLACES:

18 thoughts on “Como respaldar las cuentas de un servidor de correos Zimbra? – Script Automatico

  1. buenas al momento de dar el permiso me arroja el siguiente error chown: invalid option — ‘z’
    Try `chown –help’ for more information.

  2. Saludos Luigi, mi estimado desde hace unos años trabajamos con zimbra como servidor de correo y hasta ahora es muy bueno, pero en la parte de respaldo no he podido al 100% garantizar su restauración. Te cuento que mediante un script puedo generar respaldos de cuentas y restaurarlas siempre y cuando tenga la carpeta zimbra en su ubicación /opt/zimbra, pero si por algún motivo el servidor presenta falla los respaldos no me han servido para restaurar el contenido de las cuentas, tan solo restaura los nombres de correos y otras configuraciones.
    Al final gracias a un amigo se tuvo que utilizar zextra backup que a pesar de ser limitado por tiempo, se pudo recuperar las cuentas de correo y su contenido.
    Mi pregunta es si conoces o tienes un script paracido a zextra que permita generar un backup de todas las cuentas de correo y su contenido para luego restaurar en un servidor zimbra configurado tal cual como en su momento de producción.?
    Gracias amigo por la información que puedas aportarme.

  3. Ok, Luigi tu script permite respaldar todas las cuentas de correo con el contenido de toda la configuración y poder restaurarlas en el servidor configurado como antes sin ningún problema o perdida de información..? Muchas gracias amigo por tu aporte.

    1. Mi script simplemente simplifica el proceso de respaldar un buzon de zimbra y lo hace con la misma herramienta de backup que incorpora zimbra desde la consola.

      Desde tu servidor zimbra, sugiero revisar el comando zmmailbox que es con el cual se ejecutan los respaldos.

      Saludos,

  4. Gracias Luigi me sirvió de mucho, me podrías pero ayudar con el script que permita respaldar automaticamente las cuentas y buzones cada 15 por ejemplo y en un disco externo usb, agradezco mucho de antemano tu aporte.

    1. Para respaldar cada determinado tiempo puedes correr el script con una tarea programada (CRON). Y para cambiar la ruta donde deseas guardar los respaldos, cambia la ruta /home/backupzimbra/ por la que desees, y listo 😉

        1. Hola, tendrias que hacer un mix de ambos script… al respaldar los buzones muestra como hace una boucle de las cuentas existenteas, de esa misma manera podrias mezclar el codigo para que te respalde todas las cuentas con un solo script.

  5. Buena tarde, una duda, al querer ejecutar el primer script como usuario zimbra, me tira un error que dice: Líne 4: ubuntu syntax error ( expecting «do») ¿cuál podrá ser el error? gracias por la respuesta de antemano.

    Saludos

    1. Sugiero actualices el interprete. La verdad esta publicacion es muy antigua, es probable que el codigo deba ser actualizado, no lo he probado desde que publique el post.

Comments are closed.