Editando Cambio desde Microsoft Exchange

Saltar a: navegación, buscar
Broom-icon.png ¡Este artículo necesita atención!

Este artículo no cumple los estándares esperados en la Wiki de openSUSE.
Estás invitado a ayudar a mejorar el artículo. Para más información visita la página del Equipo del wiki.

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 tambień.

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 caracter 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

A list of all folders on the Microsoft Exchange server flies by, something like this:

* 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 caracter en el "", aqui /, muestra que el caracter 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 dragones o cosas más mundanas que podrían estropear la copia. Puedes escribir:

cat folders

para ver los contenidos del archivo. 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 de directorio. Si simplemente mueves tus carpetas, probablemente puedas conseguirlo usando un editor de texto. Debes finalizar con un archivo donde cara 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_lipiados.

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

Use maildirmake to create a subfolder for mail from the Microsoft Exchange account, like this:

maildirmake -f Exchange Maildir

Create or edit a file called .mailfilter in your home folder, make it look like this:

MAIL=$HOME/Maildir/.Exchange/

Maildrop will now send all mail into this folder, so it might be a good idea ask your administrator to hold all new mail or do this at a time of day when you don't get a lot of mail.

Now, do a dry run to check for problems

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

If all goes well, you can start copying by changing the above line to

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

WARNING: DO NOT FORGET THE -k OPTION! This keeps the messages on the Microsoft Exchange server.

When the copying has completed, clean up by changing .mailfilter back to

MAIL=$HOME/Maildir/