Cambio desde Microsoft Exchange

Saltar a: navegación, buscar

Muchas veces, sólo necesitas configurar dos cuentas IMAP en tu cliente de correo, y después copiar todo de la cuenta de Microsoft Exchange a la cuenta en GNU/Linux. No obstante, las subcarpetas y un gran número de mensajes de la cuenta de Microsoft Exchange pueden hacer fallar algunos de los clientes de correo más populares. ATENCIÓN: NO USAR MOVER, USAR COPIAR!

Queremos copiar todo el correo -leído o no - desde una cuenta de MS Exchange a un directorio Maildir en un sistema GNU/Linux. Sólo necesitas entrar en una shell en la máquina GNU/Linux para conseguirlo. Por favor, lee el ejemplo entero antes de proceder, bajo tu propio riesgo. No borraremos ningún correo, pero deberías hacerlo con calma.

Primero, asegúrate de que no llegue correo nuevo a la cuenta MS Exchange añadiendo un redireccionamiento en MS Active Directory a la nueva cuenta en GNU/Linux. Recuerda arreglar las listas de correo también.

Microsoft Exchange soporta la recolección usando Internet Message Acces Protocol (IMAP). Un directorio especial, llamado INBOX, existe en tu cuenta de Microsoft Exchange server. Las subcarpetas en INBOX usan el carácter especial de la barra (slash) - / - como delimitador en modo texto, pero lo comprobaremos para asegurarnos.

telnet yourexchangeserver.com imap
A LOGIN username password
A LIST "" *
A LOGOUT

Un listado de todas las carpetas Microsoft Exchange server cogidas al vuelo, pueden ser algo como esto:

* LIST (\HasChildren) "/" INBOX
* LIST (\HasChildren) "/" INBOX/mailing-lists
* LIST (\Marked \HasNoChildren) "/" INBOX/mailing-lists/openSuSE

INBOX tiene hijos, esto quiere decir que una subcarpeta como mailing-lists. mailing-lists tiene hijos también, el subdirectorio openSuSE. No hay subdirectorios en openSuSE, por lo que dice \HasNoChildren. El carácter en el "", aquí /, muestra que el carácter delimitador es la barra.

Selecciona todo y copia/pega en un archivo de texto llamado carpetas y guárdalo.

IMPORTANTE: COMPRUEBA LOS CONTENIDOS DEL ARCHIVO!!!Podría haber errores o cosas más mundanas que podrían estropear la copia.Para ver los contenidos del archivos puedes escribir:

cat folders

Si sólo quieres mantener el nombre de los directorios. Los directorios con espacios en sus nombres aparecerán entrecomillados, mientras que los que no tengan espacios no. Como esto:

"Junk E-mail"
INBOX/mailing-lists

Si estás migrando una gran cantidad de directorios, para varios usuarios, puede que necesitas una expresión regular para eliminar todo salvo los nombres del directorio. Si simplemente mueves tus carpetas, probablemente puedas conseguirlo usando un editor de texto. Debes finalizar con un archivo donde cada carpeta está en su propia línea, y mantener las comillas si hubiera espacios en los nombres. Para seguir el ejemplo, llama al archivo directorios_limpiados.

Necesitarás 'tener instalados 'fetchmail y maildrop. Procmail puede usarse como sustituto para maildrop. Esto no se tratará aquí.

Crea o edita un archivo llamado .fetchmailrc en tu directorio personal, haz que el contenido sea "similar" a :

# See man fetchmail for options
poll    yourexchangeserver.com
               proto imap
               user your_username_on_the_Microsoft_Exchange_server_goes_here
               pass your_password_goes_here
               mda     /usr/bin/maildrop

Utilice maildirmake para crear una subcarpeta para la cuenta de correo de Microsoft Exchange, como esto:

maildirmake -f Exchange Maildir

Crea o edita un archivo llamado .mailfilter en tu directorio home, que se parezca como lo que esta a continuación :

MAIL=$HOME/Maildir/.Exchange/

Maildrop ahora enviará todo el correo a esta carpeta, por lo que podría ser una buena idea preguntar a su administrador para mantener todo el correo nuevo o hacerlo en un momento del día en que usted no recibe mucho correo (para minimizar las perdidas durante el proceso y coincida con momentos de menor actividad).

Ahora, haga un recorrido de prueba para comprobar si hay problemas :

for x in `cat folders_cleaned`; do; fetchmail -c -v -r $x; done

Si todo va bien, se puede iniciar la copia cambiando la línea de arriba por :

for x in `cat folders_cleaned`; do; fetchmail -a -k -r $x; done

ADVERTENCIA: NO OLVIDE LA OPCIÓN -k  ! Esto evita que los mensajes en el servidor de Microsoft Exchange

Cuando la copia ha terminado, limpiar cambiando .mailfilter, para volver a:

MAIL=$HOME/Maildir/