Saltar al contenido principal

Buzones IMAP

Qué abarca IMAP​

Cualquier buzón que hable IMAP y SMTP puede conectarse con una contraseña. Eso incluye Yahoo, AOL, iCloud, Fastmail, GMX, WEB.DE, Yandex y un dominio propio en una empresa de alojamiento. Gmail y Zoho Mail siguen conectándose con su propio inicio de sesión (consulta Buzones), y Outlook o Microsoft 365 están en camino.

Campbooks lee el correo, hace en el servidor los cambios de los miembros (leído, destacado, archivar, papelera, spam y flujos) y envía por el servidor SMTP del propio buzón. Una copia de cada mensaje enviado va a la carpeta Enviados del buzón.

Activarlo​

IMAP viene activado por defecto. Solo necesita la clave secreta de la instancia, que sella la contraseña de cada buzón. Consulta La clave secreta de la instancia.

  • Con la clave definida, Ajustes, luego Buzones, luego Añadir un buzón ofrece IMAP para cualquier dirección que no sea de Gmail, Zoho ni Outlook.

  • Sin la clave, el servidor arranca igualmente. Registra un aviso y no ofrece IMAP.

  • Para desactivar IMAP, define esto en .env y ejecuta docker compose up -d:

    CAMPBOOKS_CONNECTORS__IMAP__ENABLED=false

    Definirlo como true de forma explícita mientras falta la clave detiene el servidor, con un error que nombra la clave.

No hay ningún cliente que registrar ni nada que configurar en el proveedor. Cada miembro crea una contraseña de aplicación en su proveedor; consulta Conecta tu buzón para los pasos de cada proveedor.

Cómo conecta uno un miembro​

  1. En Ajustes, luego Buzones, el miembro elige Añadir un buzón (o pulsa Shift C) y escribe la dirección.
  2. Campbooks averigua cómo se conecta ese buzón:
    • Las direcciones de Gmail y Zoho pasan al inicio de sesión del propio proveedor, sin contraseña.
    • Las direcciones de Outlook y Microsoft 365 reciben una nota que dice que llegarán pronto.
    • Cualquier otra dirección recibe el paso de la contraseña de aplicación. Los proveedores conocidos muestran sus propios pasos y un enlace a su página de ayuda.
  3. El miembro pega la contraseña de aplicación y elige Conectar. Antes de guardar nada, Campbooks inicia sesión en el servidor IMAP y se autentica en el servidor SMTP.
  4. Una sección Avanzado muestra el nombre de usuario y los dos servidores. Está cerrada y rellenada cuando se encontraron los servidores, y abierta cuando no.

Cómo se encuentran los servidores​

Campbooks mira en estos sitios, por orden:

  1. Una copia de la base de datos de proveedores de Thunderbird, incluida en Campbooks.
  2. El propio documento de autoconfiguración del dominio.
  3. Los registros SRV del dominio.
  4. Su host MX.

La dirección nunca se envía a terceros para buscarla.

Solo con cifrado​

Campbooks se conecta solo por TLS o STARTTLS, y comprueba el certificado frente al nombre del servidor. No hay opción de texto plano. Un servidor que no ofrezca ninguno de los dos se rechaza antes de enviar la contraseña.

La contraseña​

La contraseña de un buzón vale más que una autorización OAuth. No tiene ámbito, y Campbooks no puede revocarla en el proveedor. Campbooks la trata así:

  • Se guarda cifrada con la clave secreta de la instancia y ligada a su conexión.
  • Nunca se vuelve a mostrar y nunca se registra en los logs.
  • Se borra cuando se desconecta el buzón.

Pide a los miembros que usen contraseñas de aplicación. Pueden revocar una contraseña de aplicación en su proveedor sin cambiar su contraseña principal.

La verificación de la dirección​

Un buzón cuyo nombre de usuario difiere de su dirección no puede enviar hasta que se verifica la dirección. Cuando el nombre de usuario es la propia dirección, el inicio de sesión ya lo demuestra.

  1. Campbooks envía un mensaje en texto plano, de la dirección a la dirección, por el servidor SMTP del propio buzón. Su Message-ID lleva un código de un solo uso.
  2. En 15 minutos, una sincronización del buzón encuentra ese mensaje en su bandeja de entrada.
  3. La dirección se marca entonces como verificada, y el mensaje se elimina por su UID. Donde el servidor no puede hacerlo con seguridad, se mueve a la Papelera o se deja donde está.

El miembro no escribe nada. Ajustes, luego Buzones, muestra «Verificando tu dirección…» y luego Verificada. Si el mensaje no se encuentra a tiempo, el buzón lee el correo pero el envío sigue desactivado, y la fila ofrece Volver a intentarlo. Un buzón tiene como máximo 5 comprobaciones al día.

La comprobación tiene un límite. El miembro tiene la contraseña del buzón. Cualquiera que pueda ver el código (porque gestiona el servidor, o porque el servidor archiva el correo enviado donde puede leerlo) puede superar la comprobación. Impide que, en un servidor compartido que deja a cualquier inicio de sesión enviar como cualquier dirección, la dirección de otra persona pase a ser enviable a través de Campbooks. No frena al operador del servidor de correo.

Reglas de red​

Por defecto, a los servidores de correo solo se llega en direcciones públicas y solo por los puertos 993, 143, 465 y 587. Si tu servidor de correo está en tu propia red, o usa otros puertos, define:

CAMPBOOKS_CONNECTORS__IMAP__ALLOW_PRIVATE_HOSTS=true
CAMPBOOKS_CONNECTORS__IMAP__ALLOW_ANY_PORT=true

ALLOW_PRIVATE_HOSTS permite direcciones privadas, de loopback y CGNAT. Las direcciones link-local y de metadatos de la nube nunca se permiten. Deja ambas desactivadas en una instancia compartida con personas que no conoces.

Los intentos de conexión están limitados a 10 por miembro y 30 por espacio de trabajo a la hora. El inicio de sesión en un buzón está limitado a 5 inicios de sesión fallidos por hora en toda la instancia, para que la pantalla no pueda usarse para adivinar contraseñas.

Cómo sincroniza​

Campbooks consulta los buzones IMAP con el mismo calendario que los demás:

  • En el plazo de un minuto tras una sincronización que encontró cambios.
  • Retrocediendo hasta CAMPBOOKS_CONNECTORS__POLL__MAX_SECONDS mientras el buzón está tranquilo.

Lee todas las carpetas (hasta 200) y, cada 6 horas, repasa los indicadores de la ventana de cada buzón. Un buzón nuevo lee los últimos 90 días.

Un flujo sin carpeta propia recibe una carpeta Campbooks/<Stream>, hasta 10 por buzón. Campbooks nunca borra ni renombra una carpeta, y nunca vacía ninguna.

Push con IDLE (opcional)​

IDLE deja que el servidor avise a Campbooks del correo nuevo al instante, en lugar de esperar a la siguiente consulta. Viene desactivado por defecto. Para activarlo:

CAMPBOOKS_CONNECTORS__IMAP__IDLE_ENABLED=true

Mientras IDLE retiene un buzón, Campbooks lo sigue consultando como red de seguridad cada CAMPBOOKS_CONNECTORS__IMAP__IDLE_POLL_SECONDS (900 por defecto). Ese valor debe estar entre CAMPBOOKS_CONNECTORS__POLL__MIN_SECONDS y CAMPBOOKS_CONNECTORS__POLL__MAX_SECONDS; si no, el servidor se niega a arrancar con IDLE activado. Si bajaste POLL__MAX_SECONDS, baja también IDLE_POLL_SECONDS.

Ajuste fino​

Todos estos ajustes son opcionales. Añádelos a .env y ejecuta docker compose up -d.

VariableValor por defectoQué hace
CAMPBOOKS_CONNECTORS__IMAP__ENABLEDtrueOfrece buzones IMAP. Necesita la clave secreta de la instancia.
CAMPBOOKS_CONNECTORS__IMAP__ALLOW_PRIVATE_HOSTSfalsePermite servidores de correo en direcciones privadas, de loopback y CGNAT.
CAMPBOOKS_CONNECTORS__IMAP__ALLOW_ANY_PORTfalsePermite puertos distintos de 993, 143, 465 y 587.
CAMPBOOKS_CONNECTORS__IMAP__CONNECT_TIMEOUT_SECONDS10Tiempo para abrir una conexión con un servidor de correo.
CAMPBOOKS_CONNECTORS__IMAP__TIMEOUT_SECONDS30Tiempo total que puede tardar una comprobación de conexión; al leer un buzón, cuánto puede esperar un comando.
CAMPBOOKS_CONNECTORS__IMAP__BACKFILL_DAYS90Cuánto hacia atrás lee un buzón nuevo, en días.
CAMPBOOKS_CONNECTORS__IMAP__MAX_MESSAGE_BYTES52428800 (50 MiB)Los mensajes más grandes se omiten y se registran como demasiado grandes.
CAMPBOOKS_CONNECTORS__IMAP__RUN_BUDGET_BYTES67108864 (64 MiB)Una ejecución de sincronización no inicia ninguna descarga tras este número de bytes y continúa en la siguiente ejecución.
CAMPBOOKS_CONNECTORS__IMAP__SWEEP_MINUTES360Minutos entre repasos de los indicadores de un buzón.
CAMPBOOKS_CONNECTORS__IMAP__SESSIONS_PER_HOST4Sesiones IMAP abiertas a la vez con un servidor, entre todos los procesos.
CAMPBOOKS_CONNECTORS__IMAP__PROVIDER_SESSIONS_PER_HOST200Lo mismo, para el servidor de un gran proveedor (una lista corta mantenida en el código).
CAMPBOOKS_CONNECTORS__IMAP__WORKSPACE_SESSIONS_PER_HOST2Sesiones que un espacio de trabajo puede mantener en un servidor.
CAMPBOOKS_CONNECTORS__IMAP__MAX_FOLDERS200El máximo de carpetas leídas por buzón.
CAMPBOOKS_CONNECTORS__IMAP__MAX_CREATED_FOLDERS10El máximo de carpetas Campbooks/<Stream> creadas por buzón.
CAMPBOOKS_CONNECTORS__IMAP__SEND_PER_HOUR50Mensajes que envía a la hora el inicio de sesión de un buzón.
CAMPBOOKS_CONNECTORS__IMAP__SEND_RECIPIENTS_PER_MESSAGE50Destinatarios que puede tener un mensaje.
CAMPBOOKS_CONNECTORS__IMAP__SEND_RECIPIENTS_PER_DAY500Destinatarios a los que envía al día el inicio de sesión de un buzón.
CAMPBOOKS_CONNECTORS__IMAP__SEND_WORKSPACE_PER_HOUR200Mensajes que envía a la hora un espacio de trabajo.
CAMPBOOKS_CONNECTORS__IMAP__SEND_HOST_PER_HOUR1000Mensajes enviados a la hora a través de un servidor SMTP, entre todos los espacios de trabajo. Los grandes proveedores no tienen tope; en los demás, un espacio de trabajo usa como máximo la mitad.
CAMPBOOKS_CONNECTORS__IMAP__SEND_MAX_MESSAGE_BYTES26214400 (25 MiB)El mensaje más grande que se envía. Como máximo 35 MiB.
CAMPBOOKS_CONNECTORS__IMAP__SEND_TIMEOUT_SECONDS300Cuánto puede tardar un envío. Como máximo 600.
CAMPBOOKS_CONNECTORS__IMAP__IDLE_ENABLEDfalsePush con IDLE.
CAMPBOOKS_CONNECTORS__IMAP__IDLE_SESSIONS50Buzones que cada worker mantiene en IDLE.
CAMPBOOKS_CONNECTORS__IMAP__IDLE_SESSIONS_PER_WORKSPACE5De esos, el máximo para un espacio de trabajo.
CAMPBOOKS_CONNECTORS__IMAP__IDLE_DEBOUNCE_SECONDS30Como máximo una sincronización por buzón en este tiempo cuando IDLE avisa de cambios.
CAMPBOOKS_CONNECTORS__IMAP__IDLE_REFRESH_MINUTES25Cada cuánto se renueva IDLE. Como máximo 29.
CAMPBOOKS_CONNECTORS__IMAP__IDLE_QUIET_DAYS14Un buzón tranquilo durante este tiempo vuelve a la consulta periódica.
CAMPBOOKS_CONNECTORS__IMAP__IDLE_POLL_SECONDS900La consulta de seguridad de un buzón mantenido en IDLE.
CAMPBOOKS_CONNECTORS__IMAP__WORKSPACE_IDLE_SESSIONS_PER_HOST10Sesiones IDLE que un espacio de trabajo puede mantener en un servidor.

Solución de problemas​

Lo que ve el miembroCausa y solución
«El servidor de correo ha rechazado el inicio de sesión»Contraseña incorrecta, o el proveedor necesita una contraseña de aplicación y se usó la habitual. Crea una contraseña de aplicación y pégala. En Yandex, una contraseña de aplicación nueva puede tardar unas horas en funcionar.
«Campbooks no ha encontrado los servidores de este buzón»El dominio no publica ajustes. Escribe los servidores en Avanzado: las páginas de ayuda del servicio de alojamiento los indican.
«Campbooks no ha podido contactar con el servidor de correo»El nombre o el puerto son incorrectos, o un cortafuegos bloquea el servidor. Revisa los servidores en Avanzado.
«Campbooks no puede contactar con ese servidor: está en una red privada…»El servidor está en una dirección privada, o usa un puerto distinto de 993, 143, 465 o 587. En tu propia instancia, define ALLOW_PRIVATE_HOSTS o ALLOW_ANY_PORT (consulta Reglas de red).
«El certificado del servidor de correo no es válido para su nombre»El nombre del servidor no coincide con su certificado. Usa el nombre que figura en el certificado, a menudo el nombre del servidor de la empresa de alojamiento y no mail. más tu dominio.
«Ese servidor no ofrece una conexión cifrada»Usa el puerto 993 para IMAP y el 465 para SMTP, con TLS.
«Demasiados inicios de sesión fallidos en este buzón»Cinco inicios de sesión fallidos en una hora. Espera una hora.
«No hemos podido verificar esta dirección: el envío sigue desactivado»El mensaje de comprobación no llegó a la bandeja de entrada en 15 minutos. Puede haber ido a Spam. Elige Volver a intentarlo, que envía uno nuevo; si vuelve a fallar, revisa el filtro de spam del buzón.
GMX o WEB.DE rechaza el inicio de sesiónEl acceso IMAP está desactivado en los ajustes del buzón. Actívalo (POP3 e IMAP) y conecta de nuevo. Ambos proveedores lo vuelven a desactivar tras largos periodos sin uso.
IMAP no se ofrece en absolutoLa clave secreta de la instancia no está definida, o CAMPBOOKS_CONNECTORS__IMAP__ENABLED=false. Revisa el aviso en docker compose logs server.