Primero, la visión general desde el directorio de la instalación:
./draften status # versión, estado de los dos colores de la web y de los workers, HTTPS, volcados de la base de datos
Después, con más detalle:
docker compose ps # ¿están en marcha los servicios, está sana la base de datos?
docker compose logs --tail 50 worker # las últimas entradas del worker
docker compose run --rm worker node diag.mjs mailbox@company.com
El último hace lo mismo que Probar la conexión en la interfaz: toma el acceso guardado para el buzón, obtiene un token, muestra sus permisos (nunca el token en sí) y lee la bandeja de entrada.
Errores frecuentes
| Síntoma | Causa | Qué hacer |
|---|---|---|
set DB_PASSWORD in .env al iniciar | faltan las contraseñas de la base de datos | completar .env |
mailbox … has no access yet | el buzón no tiene registro ni cuenta conectada | la página del buzón › Acceso al correo |
Graph … 401 … invalid_client | client secret incorrecto o caducado | un secreto nuevo en el registro y después la prueba de la conexión |
Graph … 403 … AppOnly AccessPolicy | la política de acceso de la aplicación aún no se ha aplicado, o el buzón no está en el grupo | esperar (incluso horas) y repetir la prueba; añadir el buzón al grupo |
Graph … 403 … ErrorAccessDenied | falta el consentimiento del administrador | en Entra, Grant admin consent en el registro |
Category not added … MailboxSettings | falta el permiso MailboxSettings.ReadWrite; la etiqueta funciona, solo que sin color | añadir el permiso y el consentimiento |
No active assistant in the database | el asistente está desactivado o no se cargaron los datos iniciales | activar el asistente; revisar los registros del arranque |
| el asistente se omite («no prompts yet») | el asistente no tiene instrucciones escritas | terminar la configuración guiada o escribir las instrucciones a mano |
Draft without signature / links outside the allowed domains | el borrador no superó un control | mirar el mensaje: puede ser un intento de suplantación |
Limit reached | el límite diario o el límite por remitente | aumentarlo solo si la avalancha de correo es legítima |
Model refused to answer | el filtro de seguridad del modelo | procesar el mensaje a mano |
Model exhausted max_iterations | el modelo entró en un bucle con sus herramientas | se reintenta dos veces; si se repite, ajustar la instrucción Tarea |
ECONNREFUSED … 3306 | la base de datos no está en marcha o aún no ha arrancado | docker compose ps, docker compose logs db |
| la barra «La licencia caducó» o «La instalación no tiene licencia», los asistentes no escriben nada | falta la licencia o ha caducado | subir una licencia válida: vea La licencia |
| una actualización terminó con un error | la versión nueva no llegó a estar sana; la anterior sigue atendiendo | el error en Historial de solicitudes o en la salida de ./draften update; ./draften status |
Cuando los registros no lo muestran
- La interfaz: en la Configuración del asistente, Actividad (revisiones del correo, solicitudes, eventos), y la página Funcionamiento (workers, cola, errores de las últimas 24 horas).
- Tras tres intentos fallidos, un mensaje recibe el estado fallido; el último error está en su detalle.
Una pasada única a mano
docker compose run --rm worker node worker.mjs --dry-run
Recorre una vez cada asistente activo y fuerza el modo de prueba: no se escribe nada en el correo. Es útil para comprobar que todo funciona.
Cuando necesite nuestra ayuda
./draften diagnose
escribe un archivo diagnose-<time>.tar.gz con el estado de la instalación, las versiones, la configuración sin secretos y el final de los registros. Envíenoslo.
Antes de enviar el archivo, mire su contenido: los registros pueden contener direcciones y asuntos del correo procesado. Nada sale del servidor por sí solo.