Zimbra


layout: post title: Zimbra description: Recovery Zimbra desde el storage

image: assets/images/zimbra.png

Recuperar buzones en un servidor Zimbra con el LDAP completamente dañado

El presente describe paso a paso como recuperar los buzones de un servidor Zimbra en el cual no podemos levantar el LDAP, debemos recordar que zimbra instala varios servicios entre ellos una base de datos, mysql, en la cual se guarda la información transacional de todo el sistema, en dicho servicio se crea una base de datos llamada zimbra, a su vez esta base de datos tiene una tabla llamada mailbox, que usaremos para localizar entre otras cosas el ID de cada buzón, el ID de cada grupo de buzones y el nombre de la cuenta.

Entrar y buscar la información de las cuentas

Identificarse como usuario zimbra
:~$ su - zimbra

Entrar a Mysql/MariaDB
:~$ mysql

Conectarse a la base de datos zimbra
MariaDB [zimbra]> use zimbra

Mostrar las tablas de la base de datos
MariaDB [zimbra]> show tables;

Tables_in_zimbra
current_sessions
deleted_account
mailbox
mailbox_metadata
out_of_office
pending_acl_push
service_status
table_maintenance
volume_blobs
zmg_devices

15 rows in set (0.00 sec)

Mostrar las columnas/campos de la tabla mailbox MariaDB [zimbra]> show columns from mailbox;

Field Type Null Key Default Extra
id int(10) unsigned NO PRI NULL  
group_id int(10) unsigned NO   NULL  
account_id varchar(127) NO UNI NULL  
index_volume_id tinyint(3) unsigned NO MUL NULL  
item_id_checkpoint int(10) unsigned NO   0  
contact_count int(10) unsigned YES   0  
size_checkpoint bigint(20) unsigned NO   0  
change_checkpoint int(10) unsigned NO   0  
tracking_sync int(10) unsigned NO   0  
tracking_imap tinyint(1) NO   0  
last_backup_at int(10) unsigned YES MUL NULL  
comment varchar(255) YES   NULL  
last_soap_access int(10) unsigned NO   0  
new_messages int(10) unsigned NO   0  
idx_deferred_count int(11) NO   0  
highest_indexed varchar(21) YES   NULL  
version varchar(16) YES   NULL  
last_purge_at int(10) unsigned NO   0  
itemcache_checkpoint int(10) unsigned NO   0  

19 rows in set (0.13 sec)

Mostrar todos los registros de las columnas id y comment (comment es donde se guarda el nomnre de la cuenta) MariaDB [zimbra]> select id, comment from mailbox;

Exportar a un archivo .txt los registros de las columnas antes listadas MariaDB [zimbra]> select id, comment into outfile ‘/opt/zimbra/store/mailbox.txt’ from mailbox;

Nota: Este listado nos servira para armar los comandos que usaremos para recuperar las cuentas.

Proceso de recuperación

En Zimbra los buzones se almacenan en directorios enumerados segun su group_id en la ruta /opt/zimbra/store/0/ ejem. para el group_id 1 existen los buzones 1, 10, 100, 101, 102, 103, 104, 105, 106, 107, 108 y 109 (hata ahora asi ha sido en las instalaciones que me han tocado rescatar), segun esto en el listado mailbox.txt tendremos esa misma numeración que encontraremos en el mencionado directorio. lo podemos comparar haciendo un listado del contenido del directorio /opt/zimbra/store/0/ con el comando ls -l o dir.

Al hacer la exportación de los buzones perderemos el historico de la fecha de los mensajes, esto lo solucionaremos con el primer comando que lanzaremos en el proceso de recuperación.

Con este conocimiento, procedemos a hacer el recovery.

Ajustar las fechas de los mensajes dentro del buzón
for a in ls -1 /opt/zimbra/store/store_recovery_old_server/0/165/msg/; do /usr/local/bin/zimdates /opt/zimbra/store/store_recovery_old_server/0/165/msg/$a; done

Zimdates es un script que se debe colocar en la ruta /usr/local/bin/ y debe tener permiso de ejecución para poder usarlo El numero 105 pertnece al buzon con el mismo ID

Crear carpeta en buzon de recuperación
zmmailbox -z -m [email protected] cf /nombre_carpeta

Previamente se debe crear una cuenta en el nuevo zimbra sobre el cual lanzar los buzones recuperados

Recuperar correos a una carpeta
for a in ‘ls -1 /opt/zimbra/store/store_recovery_old_server/0/1/msg/’; do echo “Importando directorio $a”; zmmailbox -z -m [email protected] addMessage /01 /opt/zimbra/store/store_recovery_old_server/0/1/msg/$a; done

la carpeta store_recovery_old es un respaldo que recuperamos del servidor que sufrio el daño en el LDAP y que descomprimimos sobre la carpeta store del nuevo zimbra, esto por que es la unica ruta donde hay permisos de escritura y lectura para el usuario zimbra, otra opcion es crear un directorio fuera de esta ruta y darle la propiedad del ismo a el usuario zimbra.

Phone

(716) 555-5555

Address


Caracas, DC 1001
Venezuela