Correo electrónico

Usar imapsync por SSH para copiar correo entre proveedores

Revisado el 6 min de lectura migracion de correo imapsync

imapsync copia mensajes entre dos buzones IMAP, junto con la estructura de carpetas y los indicadores compatibles. Es una copia en una dirección, no un espejo exacto: no migra contactos, calendarios, reglas ni metadatos que alguno de los servidores no exponga por IMAP.

Un uso frecuente es el cambio de proveedor de correo, por ejemplo al migrar a nuestros servicios de hosting. La sincronización debe repetirse y verificarse para reducir el riesgo de omitir mensajes durante el cambio.

Antes de empezar, crea el buzón de destino, inventaría las carpetas y comprueba sus cuotas. Ejecuta una primera sincronización sin opciones de borrado, revisa el mapeo de carpetas, los recuentos y los errores, y corrige cualquier diferencia antes de cambiar el flujo de correo.

Si prefieres que preparemos la migración, consulta con soporte el alcance incluido para tu servicio. Para realizarla por tu cuenta, comprueba que tienes acceso SSH e imapsync disponible; la alternativa gráfica se explica en Migrar correo desde el panel.

Siguiendo con el ejemplo inicial, si queremos sincronizar una cuenta de correo origen con una cuenta de correo destino, necesitaremos primero los datos de acceso a dichas cuentas, si la cuenta destino es una nueva, deberás crearla primero desde cPanel.

Usa contraseñas de aplicación o credenciales temporales cuando el proveedor las permita. Google Workspace puede requerir OAuth2 o una contraseña de aplicación autorizada, y Microsoft 365 requiere OAuth en las configuraciones modernas; consulta el procedimiento específico del origen. No escribas contraseñas en los argumentos de imapsync: quedarían visibles en el historial de la shell y podrían aparecer en el listado de procesos. Para proveedores que todavía admitan esta autenticación, guarda cada contraseña en un fichero separado fuera de la raíz web y protégelo antes de ejecutar la sincronización:

umask 077
read -rsp 'Contraseña temporal de origen: ' IMAPSYNC_PASS1; printf '\n'
read -rsp 'Contraseña temporal de destino: ' IMAPSYNC_PASS2; printf '\n'
printf '%s\n' "$IMAPSYNC_PASS1" > "$HOME/.imapsync-pass1"
printf '%s\n' "$IMAPSYNC_PASS2" > "$HOME/.imapsync-pass2"
unset IMAPSYNC_PASS1 IMAPSYNC_PASS2
chmod 600 "$HOME/.imapsync-pass1" "$HOME/.imapsync-pass2"

imapsync \
--host1 SERVIDOR_IMAP_ORIGEN --user1 CUENTA_ORIGEN --passfile1 "$HOME/.imapsync-pass1" --ssl1 --sslargs1 SSL_verify_mode=1 \
--host2 SERVIDOR_IMAP_DESTINO --user2 CUENTA_DESTINO --passfile2 "$HOME/.imapsync-pass2" --ssl2 --sslargs2 SSL_verify_mode=1

Antes de la copia real, ejecuta el mismo comando añadiendo --dry. Revisa en la salida cómo se corresponden los nombres de carpeta y corrige las reglas de inclusión, exclusión o renombrado que necesites. Después retira --dry para iniciar la sincronización efectiva.

La duración depende del volumen, la conexión y los límites de los proveedores. Revisa el resumen final y los errores; que se cierre la terminal o deje de aparecer progreso no acredita una copia terminada.

--ssl1 y --ssl2 cifran ambas conexiones. Añade también SSL_verify_mode=1 en --sslargs1 y --sslargs2 para exigir la validación del certificado, y no continúes si falla. Al terminar y verificar la migración, elimina los ficheros con el siguiente comando:

rm "$HOME/.imapsync-pass1" "$HOME/.imapsync-pass2"

Después revoca o rota las credenciales utilizadas.

La documentación de imapsync trata usos como Gmail, Exchange y Microsoft 365 y dispone de numerosas opciones. Algunas son destructivas: --delete1 elimina mensajes del origen y --delete2 puede eliminar del destino mensajes que no estén en el origen. No las uses en una migración básica; prueba primero la copia sin opciones de borrado y verifica ambos buzones.

En una migración, ejecuta una segunda sincronización inmediatamente antes del cambio de MX y otra al finalizar la propagación. Mantén accesible el origen durante ese periodo, compara carpetas y recuentos en ambos extremos y abre una muestra de mensajes y adjuntos. No elimines los buzones antiguos hasta confirmar que ya no reciben correo y que la recuperación desde destino funciona.

Interpreta el resultado

Comprueba el código de salida, los errores y los mensajes identificados que faltan en destino. Una diferencia de tamaño total no demuestra por sí sola pérdida: los servidores pueden contabilizar de forma distinta y Gmail presenta un mismo mensaje bajo varias etiquetas.

Empieza con un buzón y conserva sus parámetros y registro en una ubicación privada. Si la conexión se interrumpe, revisa la causa y repite con los mismos criterios de carpetas; no añadas opciones de borrado para intentar igualar las cifras.

El bloque de preparación de contraseñas utiliza Bash (read -rsp): ejecútalo en esa shell, no en una consola que interprete esas opciones de otra forma. No actives trazas como set -x ni la opción --showpasswords al manejar credenciales.

También te puede ayudar

¿Algo no cuadra o ha cambiado? Cuéntanoslo y lo revisamos.