===== Solución a problemas en Zimbra =====
==== No envía correos ====
Si el servidor no envía correo y al mirar el fichero ** /opt/zimbra/log/zmmailboxd.out** aparece un mensaje de error 2018-07-04 12:58:16.566:WARN:oejs.HttpChannel:qtp509886383-24433: Could not send response error 500: java.io.IOException: Connection reset by peer
=== Solución ===
Se supone que deberíamos aumentar la memoria heap pasamos de mailboxd_java_heap_size = 1920 a 4096
zmlocalconfig -e mailboxd_java_heap_size=4096
==== Error unexpected blob ====
Cada elemento de zimbra se compone de dos partes: la "información", que es el contenido real, y el "metadato" formado por un conjunto de informaciones adicionales inherentes al propio elemento. Un BLOB es un archivo que contiene la "información" de un elemento, almacenado en el volumen de mensajes.
Si al hacer un chequeo de los blob /opt/zimbra/bin/zmblobchk start nos aparecen mensajes del tipo Mailbox 150, volume 1, /opt/zimbra/store/0/150/msg/0/361-1901.msg: unexpected blob. File size is 13425.
Muchos de los problemas se solucionaran ejecutando como root el siguiente comando para fijar problemas con los permisos de los ficheros.
/opt/zimbra/libexec/zmfixperms --verbose --extended
Si aún después de ejecutar zmfixperms, persisten los errores con los blob,podemos ejecutar :
zmblobchk --missing-blob-delete-item --export-dir /temp/blob start para exportar y eliminar los blob perdidos.
En el caso de que aún tengamos errores del tipo unexpected blob, podemos ejecutar el siguiente script para mover los mensaje con problemas a una carpeta para poder revisarlos. (https://forums.zimbra.org/viewtopic.php?t=13512)
#!/bin/bash
#Fichero con un listado de los buzones con problemas
blobfile="/opt/tmp/unexp-blobs.lst"
#path donde recreamos la estructura de los ficheros que vamos a mover
savedir="/opt/tmp/unexpected-blobs"
#path donde tenemos los buzones
storepath="/opt/zimbra/store/0/"
#Si no existe creamos el directorio donde vamos a recrear la estructura
if [ ! -d "$savedir" ]; then
mkdir -p $savedir
fi
#Si ya existe un fichero de listado blobfile lo eliminamos
if [ -f $blobfile ]; then
rm -f $blobfile
fi
zmblobchk --unexpected-blob-list $blobfile start;
for i in $(cat $blobfile); do
tmpvar1="";mbxdir="";filename="";
tmpvar1="$(dirname $i)"
mbxdir=${tmpvar1#$storepath}
#filename=$(basename $i)
echo $savedir/$mbxdir/$filename
#Creamos la estructura si no existe
if [ ! -d "$savedir/$mbxdir" ]; then
mkdir -p $savedir/$mbxdir
fi
#Movemos los mensajes con problemas
mv -v $i $savedir/$mbxdir/;
done
Seguidamente revisamos la integridad de la base de datos
/opt/zimbra/libexec/zmdbintegrityreport -v
==== Servidor lento ====
* * https://blog.itlinux.cl/blog/2015/06/24/zimbra-how-to-debug-a-rogue-server/
==== Error mta no arranca ===
Por si es un problema de permisos ejecutar como root
/opt/zimbra/libexec/zmfixperms
Si queremos que además revise los directorios /opt/zimbra/store y /opt/zimbra/index le tenemos que añadir la opción **-extended**
/opt/zimbra/libexec/zmfixperms -extended
ojo que dependiento de nuestra configuración puede llegar a tardar bastante
También podemos hacer: chown -R zimbra:zimbra /opt/zimbra
Si el error se mantiene revisar si hay algún proceso que está usando el puerto 25
netstat -tulpn
Una vez que sabemos el PID del proceso lo matamos con kill -p y ejecutamos zmcontrol start
==== Problemas con la Base de Datos ====
Si al ejecutar /opt/zimbra/libexec/zmdbintegrityreport -v vemos que tenemos problemas con los indices de algunos buzones la solución sería ejecutar zmdbintegrityreport con la opción de reparación /opt/zimbra/libexec/zmdbintegrityreport -r.
Si no se soluciona tendremos que realizar la solución a mano. Para ello tomamos nota de los buzones con problemas que nos indica el comando zmdbintegrityreport y realizamos los siguientes pasos desde la consola:
- Una vez validados pasamos al usuario zimbrasu - zimbra
- Nos conectamos con la BDD mysql -u zimbra
- Accedemos al buzón con problemas . En mi caso use mboxgroup47;
- Comprobamos la tabla mail_itemcheck table mail_item;
- Comprobamos los indexes show indexes;
- Si es sólo un indice el que da error . Lo mejor es borrar el indice y volver a crearlo -> [[https://wiki.zimbra.com/wiki/How_to_recreate_corrupted_index_(mysql)]]
- Si son varios como era mi caso ejecuto optimize table mail_item;
- El comando anterior borra los indices corruptos y el siguiente paso sería volver a reindexar el buzon para que los vuelva a crear zmprov rim usuario@dominiocorreo start
* [[https://wiki.zimbra.com/wiki/How_to_recreate_corrupted_index_(mysql)]]
* https://wiki.zimbra.com/wiki/Zmdbintegrityreport
* https://aubreykloppers.wordpress.com/2019/02/18/zimbra-recover-broken-mariadb/
* https://wiki.zimbra.com/wiki/Harley77-Mysqld
* https://wiki.zimbra.com/wiki/Mysql_Crash_Recovery
* [[https://wiki.zimbra.com/wiki/Mysql_Crash_Recovery_(alternate_method)]]
* https://wiki.zimbra.com/wiki/Issues_with_database_integrity_check
* https://blog.christosoft.de/2017/03/zimbra-corrupt-index-open_conversation-mysql/
===== Referencias ====
* https://wiki.zextras.com/wiki/ZxPowerstore:_Checking_the_message_BLOBs_health/es
* https://wiki.zimbra.com/wiki/Ajcody-Notes-No-Such-Blob
* http://martinlugo.networksolutions-peru.com/arreglando-un-bd-en-zimbra-table-mboxgroup33-appointment-doesnt-exist/