Emails spam sin dirección "to:". ¿Filtrar con Postfix?

Mi foro está siendo bombardeado recientemente con una serie de correos electrónicos de spam similares. Utilizan un remitente, dominio e IP diferentes cada vez. (Pero siempre son sobre alguna conferencia de la industria de la construcción en algún lugar).

Terminan en Rechazados con Email::Receiver::BadDestinationAddress, y el sistema intenta enviar un mensaje de rechazo a la dirección de remitente no válida. Uf, desorden en los registros.

De hecho, no tienen ninguna dirección to: o cc: en absoluto. He aprendido que los destinatarios se definen realmente en el sobre SMTP, no en el encabezado, y que los sistemas de listas de correo pueden omitir to:/cc: de los encabezados a propósito.

No me entusiasma sumergirme en la configuración de Postfix, pero aparentemente puede hacer comprobaciones de encabezados

¿Alguien ha intentado esto ya y tiene algún consejo?

encabezado de correo electrónico de spam de ejemplo, por si acaso
Received: from 103-191-76-30.cprapid.com (unknown [103.191.76.30])	by forum-mail-receiver.localdomain (Postfix) with ESMTPS id 0845A2FB2B6; Thu, 08 Jan 2026 02:30:19 +0000
Received: from [::1] (port=57140 helo=103-191-76-30.cprapid.com)	by 103-191-76-30.cprapid.com with esmtpa (Exim 4.99.1)	(envelope-from <alexg@connectconsortiumplaceru.com>) id 1vdfl5-00000000rLO-0bcP; Wed, 07 Jan 2026 21:28:18 -0500
Date: Wed, 07 Jan 2026 21:26:55 -0500
From: alexg@connectconsortiumplaceru.com
Message-ID: <093f4b04eb0e41f70390cf63dcce77d4@connectconsortiumplaceru.com>
Subject: 5th Annual Modular Construction & Prefabrication Symposium - Toronto,
 Canada | March 2026 (Limited Seats Left)
MIME-Version: 1.0
Content-Type: multipart/mixed;
 boundary="=_605ba79265fcf8605b02d6716c2455fc";
 charset=UTF-8
Content-Transfer-Encoding: 7bit
Authentication-Results: forum-mail-receiver.localdomain; dmarc=none (p=none
 dis=none) header.from=connectconsortiumplaceru.com
Authentication-Results: forum-mail-receiver.localdomain; dkim=pass (2048-bit
 key; unprotected) header.d=connectconsortiumplaceru.com
 header.i=@connectconsortiumplaceru.com header.a=rsa-sha256 header.s=default
 header.b=hljdS4ya; dkim-atps=neutral
Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=103.191.76.30;
 helo=103-191-76-30.cprapid.com;
 envelope-from=alexg@connectconsortiumplaceru.com; receiver=forum.tasat.org
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
 d=connectconsortiumplaceru.com; s=default; h=Content-Type:Message-ID:Subject:
 To:From:Date:MIME-Version:Sender:Reply-To:Cc:Content-Transfer-Encoding:
 Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
 Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Id:
 List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=QsuKb3maShWc9C0uTAfGJZlp0GLvUFzREukTJkY4TbE=; b=hljdS4yaocpaFXSAbqnR+pvdM5
 W02vREZeWNQEtDMCqxEmI17jqjL5k+VGWi6vcruI2QBIi+C3omMWl1MrzAZ18EotG4/SfmY0jqcyV
 G5lu46MfkyxsUUdqQoKIHChQ5T0aa7jfc7LzZzM8bIBUk6VnV4lNn5SItSDEMAzRqrq66rL7ugL3u
 16OkrMph0Kjw7YP2swVhZY9y0TqJBy0L05XHy5BfLjh5K7UGbNxnnN6daXlpCJ/zsQPFjjkiTNicc
 WLIuKHpH+sCQt2VqnbvGVcdYJmapKCzXn0sS08BspidViHbf/2hOAHkDlbVyWduINyn44Es5oj2Jh
 B9+D9w8g==;
User-Agent: Roundcube Webmail/1.6.12
X-Sender: alexg@connectconsortiumplaceru.com
X-AntiAbuse: This header was added to track abuse, please include it with any
 abuse report
X-AntiAbuse: Primary Hostname - 103-191-76-30.cprapid.com
X-AntiAbuse: Original Domain - forum.tasat.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - connectconsortiumplaceru.com
X-Get-Message-Sender-Via: 103-191-76-30.cprapid.com: authenticated_id:
 alexg@connectconsortiumplaceru.com
X-Authenticated-Sender: 103-191-76-30.cprapid.com:
 alexg@connectconsortiumplaceru.com
X-Source: 
X-Source-Args: 
X-Source-Dir:

Normalmente envían a una larga lista de correos electrónicos extraídos como copia oculta (bcc), he visto ese comportamiento en algunos sitios, pero aún no tengo ninguna solución práctica.

Sí, así es como se hace con BCC:, la dirección simplemente no aparece en un encabezado.

Discourse es un poco diferente en el sentido de que no utiliza el destinatario del sobre en absoluto, solo los encabezados. Podría decirse que esto está mal, pero tanta gente depende del comportamiento actual que es difícil cambiarlo.

El Rechazo Rápido (Fast Rejection) se eliminó porque estaba roto. Además, la lógica comprobaba el destinatario del sobre, lo que no coincide con lo que busca Discourse. Esta falta de coincidencia significa que el rechazo rápido podría rechazar correo que de otro modo sería entregable y permitir correo no entregable.

Conciliar esto sería, desafortunadamente, un esfuerzo complicado para una ganancia comparativamente pequeña.

Ya veo… gracias por los detalles.

Actualmente solo uso responder por correo electrónico, así que pensé que tendría sentido bloquear cualquier cosa sin las cabeceras TO:/CC:. Pero puedo imaginar cómo esto podría ser problemático para los sitios que usan publicar por correo electrónico.

Conciliar esto sería, desafortunadamente, un esfuerzo complicado para una ganancia comparativamente pequeña.

Ciertamente estoy sesgado (escribí el código de rechazo rápido que se eliminó), pero no estaría de acuerdo con el valor del concepto, especialmente si el backscatter comienza a poner los servidores de Discourse de la gente en listas negras de spam, o si servicios como Mailgun comienzan a quejarse al respecto (o peor aún, no se quejan y te cobran felizmente por enviar toneladas de correos electrónicos falsos cuando una gran ola de spammers pasa).

Si alguien más contribuyera con código para resolver las preocupaciones (analizar las cabeceras en lugar del sobre, etc.), ¿sería algo que Discourse estaría dispuesto a reincorporar, o es simplemente algo con lo que nadie tiene tiempo de meterse en ninguna capacidad en este momento?

(De cualquier manera está bien, ¡entiendo totalmente que todos están haciendo lo mejor que pueden con tiempo y recursos limitados!)

Hola, solo algunos consejos que he estado probando para este tipo de spam:

- Para los mensajes sin encabezados To:/Cc:, descartarlos a nivel de Postfix funciona bien si solo usas respuesta por correo electrónico.

- También puedes añadir una comprobación simple de SPF/DKIM para filtrar los dominios falsificados antes de que lleguen a Discourse.

- Otro truco que he visto es limitar la tasa de correo entrante por IP o por dominio de remitente; ayuda a ralentizar las oleadas de spam sin afectar a los usuarios normales.

- Si te sientes aventurero, combinar las comprobaciones de encabezados con una pequeña lista blanca (para remitentes de confianza o listas de correo) puede reducir los falsos positivos.

Nada sofisticado, solo algunas ideas que me han ayudado a reducir un poco el ruido :slightly_smiling_face: