Solución: «all hosts for domain have been failing for a long time» en Exim (cPanel)

Cómo limpiar la caché de Exim y volver a enviar correo a un dominio

Posted by David Guillermo on Tuesday, January 14, 2020

Problema

Al enviar correo a un dominio concreto, Exim devuelve este error y no reintenta durante un tiempo:

all hosts for 'midominio' have been failing for a long time (and retry time not reached)

Esto suele ocurrir tras bloqueos previos (firewall, blacklist, errores DNS o filtros antispam) que dejaron un historial de fallos prolongados.

Causa

Exim mantiene una base de datos de reintentos en su spool para evitar conexiones inútiles. Si persiste el registro de fallos, el servidor omite temporalmente nuevos intentos hacia ese dominio.

Solución rápida (limpiar la caché de Exim)

Advertencia: esto restablece las bases de datos de Exim en el servidor (no los mensajes en cola). Úsalo con precaución en entornos multi‑tenant.

service exim stop
rm -fv /var/spool/exim/db/*
service exim start

Alternativa con systemd:

systemctl stop exim
rm -fv /var/spool/exim/db/*
systemctl start exim

Opción conservadora (limpiar solo reintentos)

Si tu instalación dispone de la utilidad, puedes sanear únicamente los registros de reintentos:

# Elimina entradas vencidas de la DB de reintentos
exim_tidydb -t 0 /var/spool/exim/db/retry
# (Opcional) Sanea esperas de transporte SMTP remoto
exim_tidydb -t 0 /var/spool/exim/db/wait-remote_smtp

Comprobar que volvió a enviar

  1. Revisa el estado y la cola:
    systemctl is-active exim || service exim status
    exim -bpc            # número de mensajes en cola
    exim -bp | head -50  # detalles de la cola
    
  2. Observa el log principal mientras haces una prueba de envío:
    tail -f /var/log/exim_mainlog
    

Si el destinatario vuelve a recibir correo, el problema era la caché de reintentos.

Prevención y diagnóstico rápido

  • DNS/MX del destino: comprueba que el dominio resuelve y tiene registros MX válidos.
  • Listas negras / reputación: si saliste de una blacklist, espera propagación y limpia reintentos.
  • Firewall y puertos: verifica salida TCP 25/465/587 según tu flujo SMTP.
  • Políticas del destino: algunos servidores exigen TLS o SPF/DMARC correctos; revisa los bounces.

Resumen

El error «all hosts for domain have been failing for a long time» indica que Exim está evitando nuevos intentos por un historial de fallos. Limpiar la caché (global o solo la de reintentos) restablece el envío y, tras validar DNS y conectividad, el correo debería entregarse con normalidad.