todas las guías

// cómo solucionarlo

Cabeceras Date y Message-ID ausentes o incorrectas

Todo email debería llevar una Date correcta y un Message-ID único. Sin ellos, los filtros de spam suman puntos y Gmail puede rechazar el email.

Qué significa

Cada email tiene unas líneas ocultas al principio llamadas cabeceras. Se esperan dos de ellas en todos los mensajes:

  • Date: cuándo se escribió el email, con la zona horaria. Ejemplo: Date: Tue, 14 Oct 2025 09:30:00 +0200
  • Message-ID: un identificador único, como un número de serie. Ejemplo: Message-ID: <7f3a91c2@mail.yourdomain.com>

Los programas de correo normales las añaden automáticamente. Suelen faltar o estar mal cuando los emails los envía un script, un plugin de una web, una impresora o una aplicación antigua que construye el email a mano.

Por qué importa

  • SpamAssassin suma puntos por una fecha ausente (MISSING_DATE), un Message-ID ausente (MISSING_MID) o una fecha muy en el pasado o en el futuro (DATE_IN_PAST_..., DATE_IN_FUTURE_...).
  • Gmail puede rechazar los emails que no tienen un Message-ID válido, y espera que los mensajes sigan el estándar de formato de email (RFC 5322).
  • Los programas de correo usan estas cabeceras para ordenar los mensajes y agrupar las conversaciones.

Cómo comprobarlo

Envía un email desde la herramienta o el script que tiene el problema a tu dirección de prueba de la página de inicio (/). En el informe, la sección SpamAssassin enumera las reglas que han coincidido. También puedes abrir el código fuente original del email en cualquier buzón («Mostrar original» en Gmail) y mirar las primeras líneas.

Cómo solucionarlo

1. Deja que una librería de correo construya el email

La mejor solución es dejar de escribir las cabeceras a mano. Librerías como PHPMailer o Symfony Mailer (PHP), Nodemailer (Node.js) o el módulo email (Python) añaden las dos cabeceras correctamente. En Python, por ejemplo:

from email.utils import formatdate, make_msgid
msg["Date"] = formatdate(localtime=True)
msg["Message-ID"] = make_msgid(domain="yourdomain.com")

2. Si escribes tú las cabeceras

  • Date debe usar el formato exacto Day, DD Mon YYYY HH:MM:SS +ZZZZ en inglés, con el desfase real de la zona horaria.
  • Message-ID debe ser único para cada email, ir entre < y >, y contener una @ seguida de tu dominio o del nombre de tu servidor. No reutilices nunca el mismo ID.
  • Usa solo una Date y un Message-ID por email.

3. Corrige el reloj

Una fecha incorrecta suele venir de un servidor con el reloj desajustado o con una zona horaria equivocada. En Linux, activa la sincronización horaria (por ejemplo con timedatectl set-ntp true) y comprueba la zona horaria.

4. Deja que tu servidor de correo añada lo que falta

Algunos servidores pueden añadir una Date o un Message-ID que falten en los mensajes que envían. Postfix, por ejemplo, lo hace para los emails enviados desde el propio servidor, pero no siempre para los que llegan desde otras máquinas. Es una red de seguridad, no un sustituto de corregir la aplicación.

Comprueba que está solucionado

Envía un nuevo email desde la misma herramienta a la dirección de la página de inicio. La sección SpamAssassin ya no debería mostrar MISSING_DATE, MISSING_MID ni reglas de fecha, y la fecha mostrada debería coincidir con la hora real de envío.

Comprueba que está solucionado

Un cambio de DNS puede tardar de unos minutos a unas horas. Después, envía un nuevo email de prueba o vuelve a escanear tu dominio.

Guías relacionadas