La historia de Dovecot: el palomar que se convirtió en el IMAP

Mascote do LinuxPro guardando um envelope no escaninho, com o servidor entregando as mensagens

En julio de 2002 un finlandés que ya había escrito el irssi publicó un IMAP hecho para no ser Courier ni UW. Llamó al bicho Dovecot — palomar. Cinco años después, el 13 de abril de 2007, salió la 1.0.0. Timo Sirainen anotó: “casi cinco años, pero está listo”. Veinticuatro años después Dovecot 2.4.5 (el 28 de agosto de 2026) sigue siendo el IMAP que usa la mayor parte de internet: la Open Email Survey de 2020 midió 2,9 millones de servidores y 76,9% de cuota. Postfix entrega; Dovecot guarda y devuelve.

Tampere, irssi y un IMAP que no se cayera

Timo Sirainen venía del IRC. El irssi, cliente de terminal que usó toda una generación de administradores de Linux, es suyo. A principios de los años 2000 trabajaba en una empresa pequeña en Finlandia que necesitaba IMAP para el correo interno. Courier era el estándar “ligero”. UW IMAP, el de la Universidad de Washington, era el estándar académico. Ambos tenían fama de ser un coladero y de tener una configuración que dolía. Timo quería lo contrario: seguridad por diseño, rápido, fácil de montar.

El nombre es el edificio: dovecot es el palomar, las cajas en la pared por donde entra el palomo. Pigeonhole, el proyecto de Sieve que vino después, es el casillero — el apartado de correos. La metáfora encaja: IMAP no transporta la carta (eso es SMTP). IMAP es el armario. El logo teal — dos palomas/chevrones en vuelo — es esa pared.

Los primeros años fueron afición y contrato. Rackspace le llevó un año entrar. Portugal Telecom, medio año. Las empresas pagaban por funcionalidad; el código se abría. En 2011 formalizó Dovecot Oy, modelo open core: la CE gratis, lo que telco e ISP grandes necesitan (cluster, soporte, después el Pro) de pago. El salario de los devs del abierto salía de ahí. Lo dijo en su día y la empresa lo repitió en 2025, cuando alguien preguntó si Dovecot “se volvería propietario”.

2002–2007: cinco años hasta la 1.0

La primera pública es julio de 2002. La 1.0.0 solo en 13 de abril de 2007, tras reescribir casi todo. Timo avisó en la lista: no esperaba 1.0.1 tan pronto, a menos que alguien estuviera sentado sobre un bug grave esperando a la 1.0. Quien quisiera una nueva feature, que se fuera a la 1.1. mbox y Maildir desde el principio — compatible con Courier y UW, para que el cliente que ya leía la caja en disco no se rompiera. dbox nació aún en la serie 1.x (alfa de la 1.0, rediseño en la 1.1) y solo maduró de verdad en la 2.0.

El diseño de proceso ya era el del Dovecot que conocemos: un master, hijos con privilegio mínimo, dovenull e dovecot como usuarios de sistema. Login separado del IMAP. Índice propio para flag y caché, para no releer el Maildir entero en cada IDLE. Quien venía de Courier notaba la diferencia en el SELECT de caja grande.

2.0, agosto de 2010: LMTP, mdbox, doveadm

La 2.0.0 salió en 16 de agosto de 2010. Timo estaba “cautelosamente optimista” en que la 2.0.1 no haría falta venir en días. Cambió el suelo:

  • Dos usuarios de sistema por defecto: dovecot e dovenull.
  • LMTP de verdad — la forma correcta de que el Postfix (y el Exim) entregaran en la caja sin LDA en cada mensaje.
  • mdbox (multi-dbox): varios correos por archivo, índices en los que confía Dovecot. Perder el índice es perder flags — el aviso sigue en la documentación.
  • doveadm en lugar de media docena de binarios. Cuota, kick, replicación, volcado de índice.
  • Pigeonhole pasó a instalarse sin parche en el núcleo.

Stephan Bosch cerró Pigeonhole 0.2.0 semanas después, para la 2.0.2: Sieve (RFC 5228) y ManageSieve (RFC 5804) en un solo paquete. El nombre, de nuevo, es el nicho del palomar. Vacation, fileinto, duplicate, después IMAPSIEVE. Quien filtra en el servidor en 2026 sigue hablando Sieve; el intérprete es ese.

2.2 y 2.3: dsync, MSA, Lua

La 2.2.0 (12 de abril de 2013) reescribió el dsync y puso flags por usuario en el buzón compartido. Extensiones IMAP que el cliente moderno espera. La 2.3.0 (22 de diciembre de 2017) entró con agente de envío de mensajes — Dovecot también habla 587 — y autenticación en Lua. Notificación push, eventos, el recorte de “no es solo imapd”.

En medio de esto, marzo de 2015: Dovecot Oy se fusionó con Open-Xchange AG. Timo, Mikko Linnamäki y Markku Kenttä se convirtieron en socios de OX. Timo en la lista: nada de matar el nombre, nada de forzar App Suite por debajo del IMAP. “Por fin puedo volver a diseñar cosas nuevas.” OX ganaba el backend que el 57% de los IMAP activos ya ejecutaban (cifra de la época). El CE siguió saliendo. El Pro, para telco.

Lo que el palomar hace mejor que Courier

No es GUI. Es el armario:

  • Formatos: mbox, Maildir, sdbox (un correo por archivo), mdbox (varios). imapc/pop3c si el buzón reside en otro servidor.
  • Índice: flag, cache, thread. Maildir sincroniza; dbox asume que el índice es la verdad.
  • Auth: passwd, PAM, LDAP, SQL, Lua, GSSAPI, autenticador SASL que Postfix 2.3+ y Exim 4.64+ consultan directamente — un único lugar de contraseña para SMTP-auth e IMAP.
  • ACL, shared, quota, zlib, FTS (hoy el driver flatcurve). Hibernación de IDLE en un proceso imap-hibernate.
  • Pigeonhole: Sieve en la entrega (LDA/LMTP) y ManageSieve en la 4190.

En 2017 Mozilla, mediante MOSS, pagó a Cure53 para auditar el código. El informe es el tipo de cosa que un admin pega en una diapositiva: a pesar de intentarlo, los testers encontraron tres problemas menores. “Exceptionally good outcome.” La seguridad no era marketing — era el criterio de 2002.

2.4: la configuración que rompe a propósito

La 2.4.0 salió el 24 de enero de 2025, tras una larga espera. Aki Tuomi, de Open-Xchange Oy, avisó en la lista: el paquete 2.4 no lee la config 2.3. La reescribe. dovecot_config_version debe ser la primera línea que no sea un comentario; dovecot_storage_version también entra. Sin esto el proceso rehúsa arrancar — a propósito, para no cambiar el valor por defecto en silencio. La sección plugin {} murió. Cada passdb/userdb получил nombre. Berkeley DB desapareció. El dict de memcached desapareció (Redis en su lugar). Variable nueva, filtro con nombre, SSL obligatorio incluso en login_trusted_networks cuando ssl=required.

La clave de paquete también cambió: 2.4 firma con EF0882079FD4ED32BF8B23B2A1B09EF84EDC5219. El 2.3 se quedó en la clave antigua. En 12 de mayo de 2025 el ciclo de vida: todo antes de 2.3, EOL total; 2.3 solo corrección crítica de seguridad; nuevas funcionalidades y correcciones de errores en 2.4. La distribución que empaqueta 2.3 que se apañe con el proveedor.

El Pro pasó a la arquitectura Palomar (3.x desde septiembre de 2024). El CE no pasó a ser propietario: OX lo repitió en diciembre de 2025. Las funcionalidades de clúster grande viven en el Pro; el palomar abierto sigue siendo el mejor IMAP para una sola máquina y para ISP medianos.

2026: 2.4.5, Sieve, ML-KEM

2.4.5 y Pigeonhole 2.4.5 salieron juntos el 28 de agosto de 2026. Lanzamiento de seguridad, no de juguete:

  • use-after-free en Sieve editheader — el tipo de bug que se convierte en RCE en la entrega.
  • SMTP smuggling en el recorte de envío.
  • CVE-2026-40204: crear mailbox rompía la ACL.
  • OTP (SASL y esquema de contraseña) eliminado.
  • Heredoc en la configuración (<<MARKER).
  • doveadm auth cache status.
  • FTS flatcurve con búsqueda por frases.
  • ML-KEM-512/768/1024 mediante OpenSSL 3 — KEM poscuántico en el TLS del IMAP.
  • AEAD en la criptografía de clave de Dovecot.

El Ubuntu 24.04 todavía empaqueta la versión 2.3.x de la distro. Quien quiera 2.4 va a repo.dovecot.org o compila. Docker oficial: dovecot/dovecot. La combinación clásica de este blog sigue siendo la misma que en 2010: Postfix en 25/587, Dovecot en 143/993, LMTP en el socket, SASL compartido. Zimbra, por debajo, también habla con un Dovecot — el recorte antiguo está en Instalación de Zimbra 8.7.1 en Ubuntu.

Línea de tiempo

  • 2002 — en Tampere, Finlandia, Timo Sirainen empieza Dovecot, cansado de servidores IMAP que se caían y filtraban datos.
  • 2007 — tras cinco años de desarrollo, sale la 1.0.
  • Agosto de 2010 — la 2.0 trae LMTP, el formato mdbox y el doveadm.
  • 2.2 y 2.3 — llegan el dsync para replicación, el papel de MSA y la extensibilidad en Lua.
  • Septiembre de 2024 — la versión Pro migra a la arquitectura Palomar, en la serie 3.x.
  • 12 de mayo de 2025 — nuevo ciclo de vida: todo lo anterior a la 2.3 llega a su fin; la 2.3 pasa a recibir solo correcciones críticas.
  • 2.4 — la configuración cambia de propósito y rompe la compatibilidad; ssl=required se convierte en predeterminada y se cambia la clave de firma del paquete.
  • Diciembre de 2025 — Open-Xchange reafirma que la edición comunitaria sigue siendo abierta.
  • 28 de agosto de 2026 — 2.4.5 y Pigeonhole 2.4.5: correcciones de seguridad graves y criptografía postcuántica ML-KEM en TLS.

Cierre

Un palomar finlandés, un cliente IRC, cinco años hasta la 1.0 y la terquedad de no confiar en IMAP que ya había filtrado datos. Courier y UW salieron de escena. Cyrus quedó en el nicho académico. Dovecot se quedó con tres cuartos de los IMAP del planeta y con Postfix al otro lado de la cola. 2.4.5, MIT/LGPLv2, Pigeonhole en Sieve, CE abierto, Pro en Palomar. Timo diseñó el armario. Aki y OX todavía lo entregan.

El MTA hermano: La historia de Postfix. El Unix debajo: UNIX — El Origen de los Sistemas e Linux cumple 35 años.

De las cajas en la pared de Tampere a la 2.4.5: el palomar todavía devuelve la carta. Teal, índice en disco, IDLE hibernado. El palomo entra. El IMAP responde.