Migración de correo electrónico mediante mnIMAPSync
¿Una herramienta más para sincronizar correo IMAP?
Hace un par de años, cuando liberamos por primera vez mnIMAPSync, ya había varias herramientas disponibles para sincronizar el correo electrónico. El problema con la mayoría de ellas es que cuando se hacen copias de seguridad o migraciones incrementales del correo, algunos mensajes, en general aquellos que no está conforme a las especificaciones del RFC (3501), se duplican en el servidor donde hacemos la copia. Esto se debe principalmente a headers incorrectos o a que el mensaje carece de message-id.
Al no disponer de ninguna herramienta, tuvimos que programar una que hiciese correctamente el trabajo. La principal diferencia entre mnIMAPSync y otras soluciones es que mnIMAPSync comprueba varios headers para cada mensaje y crea un índice de rápido acceso de manera que cuando el servidor de destino se rastree, los mensajes existentes no se vuelvan a copiar y queden duplicados.
Requisitos
Java
Esta herramienta está programada en Java, por lo que será necesario tener un JRE instalado. Si en tu sistema no tienes ninguno instalado, visita www.java.com/download y descarga la última versión.
Sigue las instrucciones de la página para descargar e instalar el entorno de Ejecución Java.
mnIMAPSync
Lo siguiente es descargar mnIMAPSync. Puedes descargar la última versión, o el código fuente desde Github y compilar tu propio Jar. Para descargar una versión precompilada visita https://github.com/manusa/mnIMAPSync#releases y descarga la última.
Una vez descargada la distribución en Zip, tienes que extraer el contenido del paquete a un directorio empleando tu herramienta preferida.
Ejecutando el programa
Este es un programa de línea de comandos, por lo que será necesario una terminal o una ventana de cmd.
En windows puedes emplear cmd.exe
(Inicio->Ejecutar->cmd.exe)
Para usar el programa, simplemente hay que especificar los argumentos requeridos. Puedes encontrar la lista de comandos disponibles en la página del proyecto.
En este tutorial vamos a migrar una cuenta de correo de GMail a una cuenta de correo en un servidor personal. Si el proceso se ejecuta de forma periódica, cada migración se ejecutará de forma incremental y el proceso únicamente copiará los mensajes y carpetas que no existan en el servidor de destino.
1java -jar mnIMAPSync.jar \
2 --host1 imap.gmail.com --port1 993 \
3 --user1 myuser@gmail.com --password1 mypassword --ssl1 \
4 --host2 my.server.com --port2 143 \
5 --user2 backupuser@my.server.com --password2 backuppassword \
6 --threads 3 --delete
El comando anterior sincronizará una cuenta de origen en gmail a una cuenta de destino en el servidormy.server.com a modo de copia de seguridad.
host1, port1, user1, password1 y ssl1 son los parámetros que especifican la conexión al servidor de origen y las opciones de autenticación. En este caso nos conectamos al servidor IMAP de Gmail empleando SSL.
host2, port2, user2 y password2 son los parámetros que especifican la conexión al servidor de destino y las opciones de autenticación. En este caso nos estamos conectando a my.server.com usando una conexión regular no segura (no encriptada mediante SSL).
El parámetro threads indica el número de hilos o procesos en paralelo que empleará la aplicación. En este caso serán 3 hilos, así que el programa hará 3 conexiones independientes al servidor de origen y de destino y ejecutará las tareas en paralelo.
El parámetro delete es un parámetro opcional que indica si queremos borrar las carpetas y mensajes del servidor de destino que que ya no existen el servidor de origen.