martes, 7 de mayo de 2013

Migrar cuentas entre servidores de correo usando pop2imap

A continuación les dejo una forma sencilla de migrar cuentas de correo entre 2 servidores de correo utilizando para ello un script en perl creado por LinuxFrance pop2imap el cual posee entre sus ventajas: transferencias incrementales (solo descarga los mensajes que no estén en el servidor de destino) y que el mismo puede ser ejecutado desde un equipo distinto a los servidores de origen y destino. La gente de LinuxFrance también tiene otro script llamado imapsync que funciona de manera similar pero para IMAP.

Yo estoy usando debian 7 así que las dependencia a instalar para mi distro son estas:
aptitude install libmail-pop3client-perl libmail-imapclient-perl libdigest-hmac-perl libemail-simple-perl libdate-manip-perl
Una vez que tenemos instaladas las dependencia podemos extraer y ejecutar el script, para ello basta con ejecutar:
tar -xzvf pop2imap-1.18.tgz
Con lo cual se descomprime el archivo en la carpeta pop2imap-1.18 
cd pop2imap-1.18
Ahora si estamos listos para migrar las cuentas. 

Por ejemplo, si queremos sincronizar "cuenta1" en el servidor "origen.com" con "cuenta1" en el servidor "destino.com" se ejecutaria lo siguiente

./pop2imap --host1 origen.com --user1 cuenta1 --password1 clave --host2 destino.com --user2 cuenta1 --password2 clave
Un dato interesante es que las cuentas de origen y destino no tiene porque ser iguales, es decir, se podría sincronizar una cuenta "correo1@algo.com" con otra totalmente diferente "test@prueba.com". Tambien es posible hacer otras cosas como borrar el correo de la cuenta origen al realizar la copia, vena pop2imap --help par mas detalles.

Como una utilidad adicional les dejo este sencillo script en AWK que hice para leer los datos de un archivo csv y migrar las cuentas entre 2 servidores, espero les sea de utilidad. La estructura del archivo es: cuenta@origen;clave;cuenta@destino;clave



#!/bin/sh

ARCH="correos.csv"

awk '
BEGIN {
    FS=";"
    HOST1="mail.origen.com"
    HOST2="mail.destino.com"
}
{
    cmd="pop2imap-1.18/pop2imap --host1 "HOST1" --user1 "$1" --password1 "$2" --host2 "HOST2" --user2 "$3" --password2 "$4
    #print cmd
    if (system(cmd) != 0)
        print "usuario=",$1,"[ERROR!]" > "migrar_error.log"
       
}' $ARCH
 Espero que sea de utilidad.
Publicar un comentario