Correo imap y migración de buzón

Hola gente, hoy voy a contaros algo muy simple, pero que puede que a alguien le ayude.

Hace algun tiempo, y empujado por mi mania de centralizarlo todo, decidi migrar mi correo, de pop3 a imap, para no descargar los mensajes desde el curro, portatil, sobremesa, etc. De este modo, los correos se almacenan y se clasifican en el servidor, y lo tengo accesible y ordenado desde cualquier sitio.

He de aclarar que yo tengo el postfix con usuarios de sistema, ya que solo utilizo mi cuenta, no se si para usuarios virtuales, dominios virtuales y demás esto funcionará igual.

Como ya tenia postfix+amavis-new+clamav+spamassassin+courier-pop instalado y configurado para guardar los mensajes en formato Maildir, simplemente instale el courier-imap, y ya tenia disponibles los correos via imap.

apt-get install courier-imap

No tuve que tocar nada de la configuracón para poder acceder a las cuentas imap.

Pero ahora venia el problema, tenia 17000 mails en la carpeta entrante, y tocaba clasificarlos. Evidentemente debía ser un proceso automatizado, sino podía morir en el intento.

Rápidamente me vino a la mente procmail. Procmail es un agente de entrega de correo, es decir, se encarga de distribuir el correo entre las cuentas de los usuarios, y permite además definir reglas, para archivar en distintas carpetas los correos, segun cualquiera de las cabeceras de los mails. Así podemos clasificar en una carpeta todos los correos de una lista de correo, los mails destinados a una dirección en otra, los que son spam a otra, etc.

Mi sistema de correo, tiene una cuenta local, y recoje el correo de otras 2 externas, para pasarlo por el antivirus y el spamassassin, en otro correo os contare como montar este tinglado.

Para definir reglas del procmail, creamos un archivo (si no lo tenemos ya) .procmailrc en nuestro home, que sigue el siguiente formato:

LOGFILE=Ruta_de_un_archivo_de_log
VERBOSE=no
MAILDIR=Ruta_de_nuestro_Maildir

:0
* ^List-Id:.*<bulmailing .bulma.net>
.bulma/

:0
./

Este es un ejemplo muy reducido con un par de reglas unicamente, podemos poner las que queramos. Paso a explicar:

La variable LOGFILE define un archivo donde se guarda un log de las acciones realizadas para procmail, muy util para depurar el comportamiento de nuestras reglas.

La variable VERBOSE indica una salida extensa en el archivo de log, os recomiendo ponerlo a yes durante el proceso de prueba para comprobar que las reglas se comportan como deben.

La variable MAILDIR define donde esta nuestro directorio Maildir, generalmente en nuestro home.

Una vez definidas estas variables, pasamos a formar las reglas que clasificaran el correo, con el formato:
:0
cabecera_a_filtrar
carpeta donde almacenar (importante, terminada en /)

Es importante saber que las reglas se procesan secuencialmente, por tanto es MUY importante el orden en el que las ponemos, ya que si un correo coincide con una de las reglas, no se procesan las demás. No olvidemos poner una ultima regla, que clasifique todo lo que no cumpla ninguna de las anteriores, y que nos guarde el correo en algún sitio, por ejemplo en entrante.

Una vez definidas todas las reglas, haremos una copia de seguridad e nuestro directorio Maildir, por si falla algo, y crearemos un pequeño script para que pase todos nuestros correos por el procmail. En mi caos hice dos copias del Maildir, una como backup, y la otra para cojer de ahí los correos a procesar, y dejé el nuevo Maildir vacio para ir almacenando los procesados:

cp -Rp Maildir Maildir.bak
mv Maildir Maildir.orig
mkdir Maildir

Luego hice el cutrescript(TM) para pasar los correos por procmail, no se si es la forma mas correcta, pero funcionaba:

$maildir_origen=/home/chuano/Maildir.orig
for i in $maildir_origen/*;do
        echo "Procesando $i"
        cat $i | procmail
        mv $i /home/chuano/backupmail/
done

El script recorre todos los archivos del direcotrio maildir de origen (Maildir.orig) y se los pasa a procmail. Una vez procesados por procmail, los mueve a un directorio de backup (opcional).

Puse que los moviese a un directorio por si se interrumpia el proceso, al volver a ejecutarlo, los que ya habian sido procesados no se volveran a procesar.

Y bueno, tras afinar un poco las reglas de procmail, y unas cuantas horas (mi servidor es lentito y habia muchos mails) quedó todo mas o menos ordenado, y solo tuve que cambiar algunos mails manualmente :).

ADVERTENCIA: Este “manual” no tiene niguna garantia, es un caso particular que a mí me ha funcionado, pero no tiene porque funcionar para todos. Recuerda hacer una copia de tus mails antes de hacer nada. No me responsabilizo de las perdidas que puedas tener en el proceso, haz copias.

Un saludo.

Publicado el Monday 05 de September de 2005 por chuano
Guardado en Documentos
Compártelo Trackback

5 comentarios a “Correo imap y migración de buzón” »»

  1. Comment de Mimpo publicado el 05/09/05 a las 18:13
    Gravatar Mimpo

    Otro recordatorio que tengo que instalar la debian en el server xD Mmmm… a ver si esta semana… Buen post, lástima que no pueda probarlo…

  2. Comment de chuano publicado el 05/09/05 a las 23:45
    Gravatar chuano

    Jaja que perro, aun no has instalado… Animo, que son 3 minutos y el instalador es basicamente el mismo q ubuntu :)

    Buen articulo nose, espero que le sea util a alguien, a mi me ahorro mucha faena, imaginate clasificar 17000 correos almacenaos en el server…

    Un saludo.

  3. Comment de entiak publicado el 07/09/05 a las 8:18
    Gravatar entiak

    Y digo yo… si tienes ubuntu para que instalar debian? si son lo mismo (más o menos) ;)

  4. Comment de chuano publicado el 07/09/05 a las 8:55
    Gravatar chuano

    En el server tiene fedora :) (al menos eso recuerdo).

    Una de las ventajas que le veo a debian sobre ubuntu en un servidor, es el ciclo de vida. En un servidor es un coñazo reinstalar/actualizar cada 6 meses. Me parece mas comodo tener una version estable durante un ciclo mayor, actualizando solamente problemas de seguridad.

    Un saludo :)

  5. Comment de juan publicado el 29/04/08 a las 10:03
    Gravatar juan

    Interesante artículo, probablemente lo utilice. Muchas gracias.

    PD: ojo con ese coger y recoge que has puesto con J :S

Deja un Comentario

[x] Cerrar
E-mail
Subir