Migrar Thunderbird de "mbox" a "IMAP" (V): Alimentando el IMAP4 y reconfiguración de cuentas

Para entender el contexto de este artículo es conveniente leer la serie entera:

Para deshacernos de nuestra cuenta POP3 en el Thunderbird tenemos que encontrar otra forma de alimentar el IMAP4 local. La solución tradicional sería Fetchmail, pero es un programa complejo e inseguro. Yo voy a utilizar Getmail que, además, está programado en Python.

Lo primero que hago es configurar mi cuenta POP3 en Thunderbird para que no recoja el correo. Lo hará Getmail.

Luego instalo Getmail, configuro el CRON de mi sistema para que lo ejecute una vez por minuto y le pongo la siguiente configuración:

[options]
message_log = ~/.getmail/getmail.log
#message_log_verbose = true
#verbose = 1
delivered_to = False
received = False

delete = True

[retriever]
type = SimplePOP3SSLRetriever
server = pop3.jcea.es
username = jcea@jcea.es
password = XXXXXXXXXXXX
timeout = 60
delete_dup_msgids = True
ssl_fingerprints =
('6f66e9fe2e1857829386824c250ba751fbef7590ddfe3670bcf89b0a9f97b85b',)

[destination]
type = MDA_external
path = /usr/local/libexec/dovecot/deliver
arguments = ('-e', '-d', 'jcea', '-m', 'INBOX')

Obsérvese que estamos conectando al servidor POP3 por TLS y que verificamos el certificado X.509 del servidor para evitar ataques Man in the Middle.

Esta configuración recoge mi correo cada minuto y lo deja en mi carpeta INBOX del IMAP4 local (en mi portátil). Si no da tiempo a descargar todo el correo en un minuto no pasa nada porque el servidor POP3 solo admite una conexión simultanea (es lo que indica el protocolo POP3) y nos rechazará con un error -ERR [IN-USE] mailbox busy! Is another session active?. Es decir el servidor POP3 ya se encarga de gestionar la exclusión mutua.

Esta configuración funciona bien pero la descarga de correo con Getmail es bastante lenta, en torno a 1.5-2 mensajes por segundo. Aparentemente no utiliza ningún tipo de pipelining a pesar de que mi servidor POP3 lo anuncia explícitamente:

jcea@ubuntu:~/hg/blog/posts$ telnet pop3.jcea.es 110
Trying XX.XX.XX.XX...
Connected to pop3.jcea.es.
Escape character is '^]'.
+OK pop3.jcea.es POPeye $Id: POP3Core.py,v 1.12 2003/12/31 19:08:20 jcea Exp $
capa
+OK Capability list follows
STLS
TOP
USER
RESP-CODES
UIDL
LOGIN-DELAY 600
PIPELINING
.

Es un tema a mejorar en el futuro. Por cierto, que el proyecto POPeye es otro código histórico que tengo por ahí que debería publicar un día de estos. Tanto por hacer, tan poco tiempo...

Ya nos está entrando correo en el INBOX del IMAP4 local, en vez de en la cuenta POP3 normal de Thunderbird. Ahora debemos aplicar las reglas de correo en el Thunderbird. Para ello lo más simple es buscar el fichero de reglas de correo msgFilterRules.dat que está en la raíz de la cuenta POP3 y copiarlo en el raíz del subdirectorio imapCache de Thunderbird [1]. Todo esto con el Thunderbird cerrado, obviamente.

[1]

Mi directorio imapCache mide 2 gigabytes. Es una caché 100% reemplazable y regenerarla en caso de corrupción es más rápido que recuperar la copia de seguridad. Pero el fichero msgFilterRules.dat se guarda aquí también y eso sí que nos interesa salvaguardarlo. En mi configuración de backup rsync tengo lo siguiente:

--exclude "imapCache/**.sbd/" \
--include "imapCache/**/" \
--include "msgFilterRules.dat" \
--exclude "imapCache/**" \

Estas reglas hacen que se copie solo el fichero msgFilterRules.dat, que es lo que deseamos.

Si en su día reconfiguramos el fichero msgFilterRules.dat para que moviese el correo al IMAP4 no tenemos que hacer nada especial. Abrimos el Thunderbird, comprobamos que la cuenta IMAP4 tiene ahora un millar de reglas de correo y vemos que Thunderbird mueve el correo que Getmail ha dejado en el INBOX del IMAP4 a las carpetas de correo IMAP4 correspondientes. Perfecto.

Nos está entrando el correo por la cuenta IMAP4 pero la cuenta POP3 es la que hemos utilizado toda la vida y es la que tiene todas las configuraciones personalizadas de fuentes y colores, Enigmail, servidor SMTP saliente, firmas de mensajes, identidades múltiples y mil cosas más. Podríamos crear identidades nuevas e ir copiando las configuraciones actuales, pero tengo muchas identidades muy personalizadas y es fácil dejarse algo o meter la pata con algo crítico. Para configuraciones simples es mejor crear una cuenta desde cero, pero en mi caso cierro el Thunderbird y edito a mano (previa copia) el fichero prefs.js.

En prefs.js aparecen las configuraciones de cada una de las identidades y a qué cuentas de correo están asociadas. Hay que fijarse en lineas del estilo de mail.account.account17.identities. También debemos cambiar la configuración de carpetas de correo de las cuentas, como hicimos en su día con las reglas de filtrado de correo. Es decir, cambiar las referencias a carpetas POP3 por referencias a carpetas IMAP4. Luego movemos las identidades de una cuenta a otra. Como la vieja cuenta POP3 debe tener al menos una identidad, lo que hago básicamente es manipular prefs.js para intercambiar las identidades asociadas a las cuentas POP3 e IMAP4.

También altero mail.accountmanager.defaultaccount para que la cuenta por defecto sea la de IMAP4. Eso hace que aparezca primero en el listado del árbol de carpetas de correo, como debe ser.

Lanzamos Thunderbird y comprobamos que:

  1. La primera cuenta que aparece en el árbol de carpetas es la IMAP4. Esto es así porque se trata de nuestra nueva cuenta por defecto.
  2. Que dicha cuenta tiene diversas identidades que antes estaban asignadas a la cuenta POP3.
  3. Verificamos que cosas como dónde se dejan los Draft o dónde se copia el correo enviado esté correcto. Hemos alterado esas configuraciones para que en vez de grabar en la cuenta POP3 se grabe en la cuenta IMAP4.
  4. Dado que Thunderbird sigue ejecutando las reglas de correo electrónico se nos actualiza como es debido el número de mensajes en total y de mensajes no leídos de cada una de las carpetas de correo en el GUI de Thunderbird. Asimismo cosas como las Saved Searches funcionan correctamente.

Una vez que pasen unos días y estemos razonablemente seguros de que todo está bien, podremos eliminar la cuenta POP3 del Thunderbird.

Actualización 20141006: Puedes leer la continuación de la historia en Migrar Thunderbird de "mbox" a "IMAP" (VI): Experiencia tras dos semanas.