Migrar Thunderbird de "mbox" a "IMAP" (VI): Experiencia tras dos semanas
Para entender el contexto de este artículo es conveniente leer la serie entera:
- Migrar Thunderbird de "mbox" a "IMAP" (I): Consideraciones.
- Migrar Thunderbird de "mbox" a "IMAP" (II): Prueba de concepto.
- Migrar Thunderbird de "mbox" a "IMAP" (III): ¡Migración!.
- "fsync" y LD_PRELOAD.
- IMAP4 y la extensión MULTIAPPEND.
- Migrar Thunderbird de "mbox" a "IMAP" (IV): Alimentando el IMAP4 y limpieza general.
- Migrar Thunderbird de "mbox" a "IMAP" (V): Alimentando el IMAP4 y reconfiguración de cuentas.
Resumiendo el tema mucho, llevo dos semanas con la siguiente configuración:
- Servidor IMAP4 Dovecot instalado en local, en mi propio portátil.
- Alimento dicho servidor IMAP4 local usando Getmail. Mi servidor de correo sigue sirviendo POP3. Getmail descarga el correo por POP3 y lo deja en la carpeta de correo INBOX del IMAP4 de mi portátil. Getmail se ejecuta en un CRON cada minuto. La exclusión de instancias la realiza el propio servidor POP3.
- Thunderbird está configurado para emplear dicho servidor IMAP4 local. El servicio POP3 no está accesible directamente, para evitar errores. Thunderbird revisa correo en el INBOX, aplica sus (!1800¡) reglas de filtrado y mueve los mensajes que han entrado a sus carpetas de correo correspondientes, los etiqueta apropiadamente, decide prioridades, etc.
Mis conclusiones tras este tiempo son las siguientes:
-
Getmail es lento, al menos chupando desde POP3. Cada mensaje se descarga, se mete en el IMAP4 local y se manda la orden de borrado al servidor. Todo ello de forma síncrona y sin hacer uso de pipelining. En resumen, la latencia nos mata.
Ahora mismo, con buena conexión, Getmail inyecta en mi sistema 1.5-2 mensajes por segundo. Recordemos que recibo del orden de 4.000 mensajes al día.
Haciendo una prueba de concepto aprovechando la capacidad de pipelining de mi servidor POP3, puedo meter en mi IMAP4 local 3.57 mensajes por segundo. Sin despeinarme y con un código Python trivial. Eso es el doble que Getmail.
La cifra en sí sigue siendo baja porque estoy usando el LDA estándar de Dovecot, que lanza un proceso independiente por mensaje y que no devuelve el control hasta que el mensaje está seguro en el disco duro (es decir, es síncrono). Esto lo explico en un artículo anterior.
Podría lanzar varias instancias en paralelo y aumentar el rendimiento casi de forma lineal, pero entonces corro el riesgo de desordenar el correo (yo ordeno el correo por orden de entrada, no por fecha; experiencia :). Esto no sería un problema si el correo fuese a carpetas separadas, claro.
Por ejemplo con cuatro instancias LDA en paralelo grabo 7.14 mensajes por segundo. Para este volumen de flujo usar LMTP sería también ventajoso, entre otras cosas porque no lanza un proceso separado por email.
En pocas palabras tengo un cuello de botella pero no es difícil solucionarlo. Un par de horas de trabajo. No lo he hecho de momento porque mi plan a corto plazo es reemplazar el POP3 de mi servidor de correo por IMAP4, en beneficio de mi teléfono móvil.
-
El filtrado de correo a carpetas separadas lo sigue realizando el Thunderbird. Y, sinceramente, se achucha. Mucho. Entre que enciendo el ordenador y Getmail empieza a meter correo en mi IMAP4 local y arranco Thunderbird, me pueden haber entrado 200 mensajes. Thunderbird empieza a aplicar las reglas de correo y:
-
Thunderbird chupa 100% de CPU y el ventilador del portátil empieza a armar escándalo.
-
Thunderbird es inusable mientras siga entrando correo, que en mi caso puede ser una hora.
-
En muchas ocasiones Thunderbird sigue respondiendo muy mal incluso tras haber procesado todo el correo. No ocurre siempre, pero es muy frecuente. Cerrando Thunderbird y volviendo a lanzarlo, ya va suave, con un consumo de CPU despreciable. Osea, Thunderbird tiene problemas filtrando muchos mensajes de golpe cuando tenemos muchas reglas de correo. Sin más.
Alguien con un volumen de correo más normal y un puñado de reglas de correo posiblemente no sufra como yo he sufrido.
Este problema se soluciona haciendo el filtrado directamente en el servidor IMAP4 local, usando Sieve.
Un detalle interesante es que las reglas de correo se aplican bien. Me explico: como comento en un artículo anterior, si el Thunderbird recibe correo por POP3, aplica las reglas de filtrado e inyecta el correo en el IMAP4, a veces deja de aplicar las reglas y es necesario o reaplicarlas de nuevo a mano o, incluso, salir de Thunderbird y relanzarlo. Ahora mismo, filtrando el correo dentro del propio IMAP4, los filtros funcionan como deben. Interesante.
-
En resumen, la experiencia hasta el momento es positiva. Puedo reemplazar Getmail con una solución propia a coste bajo o esperar a migrar mi servidor de correo a IMAP4 nativo y cambiar de tecnología de sincronización. Y el funcionamiento regulero de Thunderbird con muchos filtros y muchos emails se arregla pasando a Sieve.
La cosa va bien. Avancemos un paso más.
Actualización 20141009: Puedes leer la continuación de la historia en Migrar Thunderbird de "mbox" a "IMAP" (VII): Filtrado en el servidor IMAP4 con Sieve y conversión de reglas Thunderbird.