Control de SPAM en CyberPanel Postfix/SpamAssassin

Configuración Anti-Spam en CyberPanel / Ubuntu (Postfix + SpamAssassin)

Este artículo resume los cambios y reglas aplicadas en un servidor Ubuntu con CyberPanel para reducir el spam, limitar tamaños de mensajes y forzar el rechazo de correos peligrosos. Puedes copiar y pegar directamente en un post de WordPress (editor en modo HTML).


1. Postfix — Límite de tamaño de mensajes

Se estableció un límite de 10 MB por mensaje, para evitar adjuntos gigantescos que consuman recursos.

# En /etc/postfix/main.cf
message_size_limit = 10485760

Comandos para aplicar y verificar:

sudo systemctl restart postfix
postconf | grep message_size_limit

2. SpamAssassin — Configuración base y reglas principales

Archivo principal: /etc/spamassassin/local.cf.

# Configuración base
required_score 4.0
rewrite_header Subject [SPAM]
report_safe 0
use_bayes 1
bayes_auto_learn 1

Regla para marcar mensajes grandes (advertencia > 7 MB)

# Marca mensajes sospechosos si pesan más de 7 MB
header     LARGE_WARNING    eval:check_message_size('>','7340032')
describe   LARGE_WARNING    Mensaje grande (más de 7 MB)
score      LARGE_WARNING    2.5

Regla para forzar rechazo (shortcircuit + elevación de score)

# Rechazar correos con score extremadamente alto
shortcircuit BAYES_99 on
header      REJECT_SPAM  eval:check_spam_score()
describe    REJECT_SPAM  Rechazar mensajes con score alto
score       REJECT_SPAM  100

3. Reglas adicionales sugeridas (ejemplos)

Subjects en MAYÚSCULAS

header   SUBJECT_ALLCAPS  Subject =~ /^[A-Z\s\d\W]{8,}$/
describe SUBJECT_ALLCAPS  Subject en mayúsculas (probable spam)
score    SUBJECT_ALLCAPS  3.5

Mensajes con más de 3 enlaces

# Requiere eval:check_uri_count
meta MANY_LINKS eval:check_uri_count('body', '>', 3)
describe MANY_LINKS Más de 3 enlaces en el cuerpo
score MANY_LINKS 3.0

Adjuntos ejecutables (.exe/.scr/.bat)

header   BAD_ATTACHMENT   Content-Type =~ /name=.*\.(exe|scr|bat|com|pif|cmd|cpl)/i
describe BAD_ATTACHMENT   Adjuntos ejecutables bloqueados
score    BAD_ATTACHMENT   5.0

Caracteres raros (Unicode phishing)

body     WEIRD_CHARS      /[\x{202E}\x{200B}\x{200F}\x{FEFF}]/u
describe WEIRD_CHARS      Caracteres ocultos usados en phishing
score    WEIRD_CHARS      4.5

4. Integración Postfix ↔ SpamAssassin (master.cf)

Se usa content_filter para pasar todo por SpamAssassin. Ejemplo en /etc/postfix/master.cf:

smtp      inet  n  -  n  -  -  smtpd -o content_filter=spamassassin
spamassassin unix - n n - - pipe flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

La opción flags=R y las reglas de SpamAssassin permiten que, si la evaluación falla, Postfix rechace el mensaje en SMTP con un 554 5.7.1 Message rejected as spam.


5. RBLs (listas negras) en Postfix

Agregar RBLs para rechazar conexiones desde IPs conocidas por enviar spam:

smtpd_recipient_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination,
    check_recipient_access hash:/etc/postfix/script_filter,
    reject_rbl_client zen.spamhaus.org,
    reject_rbl_client bl.spamcop.net,
    reject_rbl_client b.barracudacentral.org,
    permit

Reiniciar postfix:

sudo systemctl restart postfix

6. Flujo final y verificación

  • Postfix rechaza directamente mensajes > 10 MB.
  • RBLs rechazan al origen si la IP está listada.
  • SpamAssassin marca mensajes grandes (>7 MB) y aplica reglas extra (subjects en mayúsculas, muchos enlaces, adjuntos ejecutables, etc.).
  • Si REJECT_SPAM se activa, SpamAssassin eleva el score y Postfix rechaza en SMTP.

Revisar logs para confirmar rechazos/entregas:

sudo tail -f /var/log/mail.log
# buscar líneas como:
# spamc[PID]: identified spam (score=XX.0 required=4.0)
# postfix/smtpd[...] 554 5.7.1 Message rejected as spam

7. Buenas prácticas y respaldo

  • Antes de editar archivos, haz backup: sudo cp /etc/spamassassin/local.cf /root/local.cf.bak y sudo cp /etc/postfix/main.cf /root/main.cf.bak.
  • Probar cambios en un entorno de staging si es posible.
  • Monitorear /var/log/mail.log durante 24–72 horas después de aplicar reglas agresivas para detectar falsos positivos.
  • Si aparecen falsos positivos, bajar scores o excluir remitentes/dominios confiables con check_sender_access o whitelist en SpamAssassin.

8. Script de respaldo (opcional)

Ejemplo mínimo para hacer copia de seguridad de los archivos de configuración antes de aplicar cambios:

#!/bin/bash
# backup-configs.sh
sudo mkdir -p /root/config_backups/$(date +%F_%T)
sudo cp /etc/postfix/main.cf /root/config_backups/$(date +%F_%T)/
sudo cp /etc/postfix/master.cf /root/config_backups/$(date +%F_%T)/
sudo cp /etc/spamassassin/local.cf /root/config_backups/$(date +%F_%T)/
echo "Backups created in /root/config_backups/"

Nota: antes de activar reglas de rechazo muy agresivas (p. ej. REJECT_SPAM con score=100), monitorea cuidadosamente para evitar bloquear correos legítimos. Si quieres, puedo convertir este resumen en un archivo HTML descargable o preparar un script que aplique todas las modificaciones (con confirmaciones) para tu servidor.

¿Quieres que lo deje también como un snippet listo para pegar (sin los comentarios) o que genere el script de automatización para aplicar estos cambios?

Katen Doe

Katen Doe

Hello, I’m a content writer who is fascinated by content fashion, celebrity and lifestyle. She helps clients bring the right content to the right people.

Press ESC to close