mover a desarrollo tú zimbra

18 de septiembre de 2008

Voy a explicar como hacer una copia de todo nuestro Zimbra (buzones, configuración, contactos...) a otra maquina, que yo le llamo maquina de desarrollo de Zimbra, y desde allí poder trastear y hacer todas las pruebas que uno quiera. De esta forma estaremos seguros que las pruebas que hagamos serán sobre un Zimbra que se parece lo máximo posible al que tenemos en producción ya que conservamos todos los buzones, alias, contactos, zimlets, etc.

Por tanto, lo primero que haremos es montar una maquina Linux con la misma vesión y los mismos paquetes que la maquina que tenemos en producción.
Lo único que cambiará en esta maquina de desarrollo será la dirección IP (lógicamente no puede ser igual que la de producción).
Otra cosa muy importante es que el nombre de host debe ser igual que el de la maquina de producción. Esto es debido a que cuando arranca, por ejemplo el LDAP de Zimbra, intenta arrancar en un nombre de host concreto. Si lo cambiamos en la maquina de desarrollo entonces petará durante el arranque de Zimbra.

Una vez tengamos la maquina funcionando, hay que hacer una instalación de Zimbra, con la misma versión que tengamos en producción. Lo que quiero conseguir con esto, es ver si es posible instalar correctamente y que no falte ningun software o librería como pueda ser el fetchamil, libstdc++, etc.

Una vez nuestra instalación de Zimbra en desarrollo ya está funcionando podemos detenerla y renombrar la carpeta /opt/zimbra por /opt/zimbra_bak.

Para hacer la copia de producción detenemos los servicios de Zimbra con "zmcontrol stop" y hacemos un tar teniendo en cuenta de meter en este tar los archivos ocultos (esto es muy importante).

tar -zcvf /tmp/backup_zimbra.tar.gz /opt/zimbra/.

Una vez terminado el backup, que puede tardar bastante dependiendo de la cantidad de mensajes que tengamos, lo copiamos en nuestra maquina de desarrollo dentro de /opt/zimbra. Tendremos que crear la carpeta zimbra si no existe.

Ahora viene lo más importante. Cuando estemos trabajando en nuestra maquina de desarrollo y hacemos un enviar correo, este consultará el DNS y segun sus registros MX lo tendrá que enviar a la maquina de producción, cosa que no queremos. Queremos que cuando yo esté en desarrollo y envie un mail a una cuanta mía, este vaya a parar a la cuenta de correo que tenemos en desarrollo.
Para eso tendremos que crear un servidor de DNS de pruebas con nuestro dominio para que los registros MX apunten a la nueva maquina de desarrollo.
Yo normalmente utilizo RaidenDNSD para hacer las pruebas (aquí teneis un pantallazo). Una vez configurado nuestro servidor de DNS tendremos que decir a nuestro Linux que lo utilize como primera preferencia. En Fedora normalmente modificamos /etc/sysconfig/network.

Hacemos una prueba desde desarrollo para verificar que cuando enviemos correo a nuestro dominio estos se envian por desarrollo:
[root@zimbra ~]# nslookup
> set type=mx
> miempresa.com
Server:         10.3.10.5
Address:        10.3.10.5#53

miempresa.com      mail exchanger = 10 mx.miempresa.com.

Podemos verificar que efectivamente el DNS que utilizamos (10.3.10.5) es mi DNS para hacer pruebas. Ahora ya podemos descomprimir el tar que previamente hemos copiado y ver que debajo de /opt/zimbra tengo toda la estructura de carpetas que necesita Zimbra. Si hacemos un "zmcontrol start" tendría que arrancar sin mayores problemas.

Ya tenemos la maquina de desarrollo lista para entrar por el webmail o por el administrador y hacer todas las pruebas que queramos.

Por último tengo que decir que este mismo proceso puede ser igual de valido para migrar el servidor de Zimbra a una maquina más potente y siempre con la misma versión de Linux y Zimbra. No se puede migrar el Zimbra a otra maquina con otra versión diferente de Linux porque posiblemente esta no arrancaría y daría problemas en algunas librerias.