Inicio > Internet, Linux, OpenSource, Tips > Borrando e-mails en masa en Zimbra

Borrando e-mails en masa en Zimbra

Zimbra es una de las soluciones de correo electrónico que más rápidamente está ganando popularidad tanto por su facilidad de uso, como por sus medidas de seguridad. Aunque es una solución Open Source, la forma como almacena los correos no es ni el clásico Maildir o mbox de la mayoría de otros servidores de correo. La razón para almacenar los correos electrónicos en su propia base de datos es que de esta manera optimizan las búsquedas y pueden integrarlos fácilmente con los otros servicios que incluye el programa. Discutir si esta es la mejor forma de hacerlo o no será motivo para otro post en este blog, pero para ir entrando en materia permitanme contarles el caso de un cliente que tenía aproximadamente 13,000 correos antiguos que ocupaban un espacio de aproximadamente 3.5GB y deseaba que borrara todos los e-mails anteriores a una fecha determinada, este es un problema relativamente fácil de resolver en otros MTA especialmente si usan Maildir, pero este no era el caso ¿qué hacer?

Descrito el problema, les contaré que la solución la encontré en los forums de Zimbra en la forma de un script que hace uso del comando zmmailbox. Como dicen su autor, el script no es perfecto y tiene la limitación de que sólo borra un máximo de 2,500 e-mails cada vez que ejecuta un ciclo a pesar de que claramente el script dice que debe hacerlo en grupos de 100,000; pero aparte de ese pequeño inconveniente funciona a las mil maravillas, al menos en mi caso.

Aquí el script levemente modificado para mostrar los mensajes en español: 

#!/bin/bash
# version .1
#

ZIMBRA_BIN=/opt/zimbra/bin
echo "Introduzca la cuenta de correo:"
read THEACCOUNT

echo "Introduzca la fecha hasta la cual a Ud. le gustaria borrar los correos, en el formato MM/DD/AA. Ejemplo 04/10/09:"
read THEDATE

echo "Desde que directorio desea borrar los mensajes?:"
read THEFOLDER

echo "Ud. va a borrar todos los correos del directorio $THEFOLDER hasta la fecha $THEDATE para la cuenta $THEACCOUNT."
echo "Desea continuar? (s/N): "
read ADD

themagic ()
{
touch /tmp/deleteOldMessagesList.txt
for i in `$ZIMBRA_BIN/zmmailbox -z -m $THEACCOUNT search -l 100000 "in:/$THEFOLDER (before:$THEDATE)" | grep conv | sed -e "s/^\s\s*//" | sed -e "s/\s\s*/ /g" | cut -d" " -f2`
do
if [[ $i =~ [-]{1} ]]
then
MESSAGEID=${i#-}
echo "deleteMessage $MESSAGEID" >> /tmp/deleteOldMessagesList.txt
else
echo "deleteConversation $i" >> /tmp/deleteOldMessagesList.txt
fi
done

$ZIMBRA_BIN/zmmailbox -z -m $THEACCOUNT < /tmp/deleteOldMessagesList.txt >> /tmp/process-`date +%Y-%m-%d`.log
rm -f /tmp/deleteOldMessagesList.txt
echo "Terminado. Desea ejecutar otra vez el comando para el mismo usuario?"
read ADD
}

while expr "$ADD" : ‘ *[Ss].*’
do themagic
done

El formato de la fecha debe ser el establecido por Zimbra en la instalación, como en mi caso es el formato es el americano "Mes/Dia/Año" no he alterado esa parte del script, si Ud. eligio el formato europeo en la instalación debe hacer los cambios respectivos en el script. Para que el script pueda correr debe tener privilegios de administración, es decir debe ejecutarlo como el usuario zimbra o root, todo depende del seteo que se realizó al momento de instalar Zimbra.

Si tienen problemas con copiar/pegar el código del script lo pueden descargar desde aquí. Espero que este script les resulte tan útil como me ha resultado a mi.

Categorías:Internet, Linux, OpenSource, Tips
  1. noviembre 18, 2010 de 4:11 am

    Si guarda mensajes en su propia bbdd me da mal rollo. Me recuerda a Lotus Domino. Tiene ventajas, pero la gestión aumenta.
    Por otro lado, la gestión a nivel administración por lo que cuentas, adolece de lo mismo que otras soluciones Open Source: Usabilidad. El borrado masivo de mensajes es algo básico en otros sistemas. Aún les falta mucho, entonces..Aún recuerdo trabajar con el QMail y sufrir lo indecible para hacer una tarea básica de redireccionamiento de correo sin almacenamiento local. ¡Estos frikis! 😉

    • noviembre 18, 2010 de 7:40 am

      Tienes toda la razón, uno de los puntos flacos del Open Source es la usabilidad, no cualquiera puede usarlo, pero por otro lado tiene sus beneficios como escalabilidad, seguridad, auditabilidad, etc. Aunque no se si sere yo, pero en general Zimbra me parece bastante simple de administrar desde su control panel. Pero en gusto y colores no han escrito lo autores.
      La próxima vez que tengas problemas con algún software Open Source, hay dos caminos. El primero usar Google o la documentación del proyecto, generalmente todo está alli. El segundo, hey! contratame como consultor 🙂

  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: