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.


