Actualizado el 2 de julio de 2026

Si gestionas dominios en Plesk y/o servidores/vps con SpamAssisin como filtro en el servidor de email (VPS/servidor dedicado) y te está entrando spam “premium” con SPF/DKIM/DMARC perfectos, esta guía te da un enfoque de sysadmin: reglas efectivas,  puntuaciones coherentes y defensa por capas.

Reglas Spamassasin 2026

Incluye un pack grande de reglas listo para copiar en /etc/mail/spamassassin/local.cf y un checklist para no romper correo legítimo.

Qué está pasando en 2026: por qué “pasa” el phishing aunque DKIM sea válido

El patrón más común ahora es el Business Email Compromise (BEC) y el “falso justificante”: el atacante usa una cuenta real comprometida (o un dominio que autentica bien) y se apoya en ingeniería social:

urgencia, facturas, transferencias, cambio de IBAN, y adjuntos con malware o enlaces.

Idea clave: SpamAssassin no debe ser “una sola regla milagrosa”. Funciona mejor como suma de señales: asunto + cuerpo + adjuntos + URLs + patrones de envío. Tu objetivo es que el correo malo llegue a required_score sin cargarte el correo bueno.

Checklist express antes de tocar reglas

  • Primero marcar, luego borrar. Ajusta Plesk a “Marcar como spam” y añade prefijo al asunto durante 7-14 días de observación.
  • Activa logs. Revisa /var/log/maillog (o el log equivalente) para ver qué reglas disparan.
  • Bayes + aprendizaje. Si puedes, entrena Bayes con carpetas spam/ham; es donde SA “se vuelve listo”.
  • Defensa por capas. SA + RBL/DNSBL + antivirus (ClamAV/Dr.Web) + políticas de adjuntos.

Hardening básico en Plesk 18 (sin romper nada)

En Plesk, la configuración server-level se gestiona como admin, y SpamAssassin se apoya en ficheros del sistema. Para reglas personalizadas, el camino típico es /etc/mail/spamassassin/local.cf. Si quieres evitar sustos, puedes crear un fichero propio /etc/mail/spamassassin/laudemmedia_custom.cf y usar include.

Recomendación LaudeMMedia: crea un fichero dedicado y versiona (Git) tus reglas. Así puedes volver atrás en 30 segundos cuando un cliente diga “no me llegan correos”.

Ruta recomendada de ficheros

# 1) Fichero principal (si ya lo usas)
nano /etc/mail/spamassassin/local.cf

# 2) (Opcional) Fichero dedicado para tu pack
nano /etc/mail/spamassassin/laudemmedia_custom.cf

# 3) Inclúyelo al final de local.cf
include /etc/mail/spamassassin/laudemmedia_custom.cf

Lint y reinicio

# Validar sintaxis
spamassassin --lint

# Reiniciar (según tu stack)
systemctl restart spamassassin || true
systemctl restart qmail dovecot postfix || true

Umbral recomendado (required_score)

Para hosting con muchos dominios, suele funcionar un required_score entre 6.0 y 8.0. Si metes reglas fuertes (adjuntos ejecutables, dobles extensiones), puedes bajar a 6.5.

# Ajustes típicos (en local.cf)
required_score 6.5
rewrite_header Subject [SPAM]
report_safe 0
Ojo: report_safe 0 reescribe menos el correo y facilita ver el mensaje original, pero depende de tu flujo. Si tus usuarios se lían, deja el valor por defecto y solo etiqueta.

Actualizaciones: sa-update y reglas de terceros (KAM)

Muchos sysadmins no viven solo con reglas caseras: usan sa-update para updates oficiales y añaden rulesets de confianza como KAM (muy usado en producción).

# Actualiza canal oficial
sa-update

# KAM (canal firmado) — sigue las instrucciones oficiales del canal
wget https://mcgrail.com/downloads/kam.sa-channels.mcgrail.com.key
sa-update --import kam.sa-channels.mcgrail.com.key
sa-update --gpgkey 24C063D8 --channel kam.sa-channels.mcgrail.com

# (Opcional) compilar reglas para rendimiento si tienes sa-compile disponible
# sa-compile
Pro tip: mete estos comandos en un cron semanal (o diario si tienes mucho volumen) y monitoriza que no fallen. Si usas muchas reglas, compilar ayuda a rendimiento.

Plugins útiles: Phishing (OpenPhish/PhishTank) y HashBL/EBL

Desde SpamAssassin 3.4.2 existen plugins pensados para el “spam moderno”: Phishing (feeds tipo OpenPhish/PhishTank) y HashBL/EBL (listas hash para emails/URIs). En Plesk puede requerir paquetes/perl modules según distro. Si tu SA es 3.4.6, tienes base suficiente.

# Ejemplo conceptual: activar plugins en tu configuración (si están disponibles)
# (OJO: en algunas distros vienen desactivados por defecto)

loadplugin Mail::SpamAssassin::Plugin::Phishing
loadplugin Mail::SpamAssassin::Plugin::HashBL

# Phishing: feeds (revisa documentación y rutas según distro)
# phishing_feed_openphish /var/lib/spamassassin/openphish-feed.txt
# phishing_feed_phishtank /var/lib/spamassassin/phishtank-feed.txt

# HashBL/EBL: ejemplo (necesita list real)
# header HASHBL_EMAIL eval:check_hashbl_emails('ebl.example.invalid')
# tflags HASHBL_EMAIL net
Importante: si activas plugins, valida con: spamassassin -D --lint para ver módulos faltantes, y no lo hagas “a ciegas” en horario laboral.

Pack “mega” de reglas para /etc/mail/spamassassin/local.cf

Cómo usar: copia este bloque en /etc/mail/spamassassin/laudemmedia_custom.cf (o al final de local.cf), ejecuta spamassassin --lint y reinicia. Ajusta MY_DOMAINS_REGEX con tus dominios reales (ver sección automática). Advertencia de sysadmin: no subas todos los scores “a lo loco”. Empieza con 7-14 días en modo “marcar” y ajusta según falsos positivos.
# =====================================================================
# LAUDEMMEDIA® — PACK AVANZADO SPAMASSASSIN (PLESK 18 / SA 3.4.x) — 2026
# Objetivo: Phishing, BEC, Ransomware, Quishing (QR), Crypto scams, Malware
# =====================================================================

# -------------------------
# 0) AJUSTES BASE (opcional)
# -------------------------
# required_score 6.5
# rewrite_header Subject [SPAM]
# report_safe 0

# ---------------------------------------------------------
# 1) DEFINE TUS DOMINIOS (RELLENA ESTO CON TU LISTADO REAL)
# ---------------------------------------------------------
# Reemplaza el contenido de MY_DOMAINS_REGEX por tu regex:
#   dominio1\.com|dominio2\.es|sub\.dominio3\.com
#
# EJEMPLO MINIMO:
#   laudemmedia\.com|workconfort\.com|tudominio\.es
#
# (NOTA) En reglas header usamos @(...)

# -----------------------------------------
# 2) BEC / FACTURAS / PAGOS / CONTABILIDAD
# -----------------------------------------
header   __LMM_DEPT_NAMES     From =~ /(Contabilidad|Administraci[oó]n|Pagos|Facturaci[oó]n|Tesorer[ií]a|Cuentas por pagar|Finance|Accounting|Billing|Payments)/i
header   __LMM_SUBJ_FINANCE   Subject =~ /(factura|invoice|transferencia|transfer|pago|payment|remesa|iban|swift|justificante|comprobante|proof of payment|bank details|cambio de cuenta)/i
body     __LMM_BODY_URGENCY   /(urgente|inmediato|acci[oó]n requerida|action required|evitar suspensi[oó]n|last warning|final notice|necesitamos.*hoy|before end of day)/i

# “Contabilidad/Pagos” desde dominios externos (genérico)
# Ajusta MY_DOMAINS_REGEX:
header   __LMM_NOT_MY_DOMAIN  From !~ /@(?:MY_DOMAINS_REGEX)\b/i
meta     LMM_BEC_DEPT_EXT     (__LMM_DEPT_NAMES && __LMM_NOT_MY_DOMAIN)
describe LMM_BEC_DEPT_EXT     Nombre de departamento sensible desde dominio externo
score    LMM_BEC_DEPT_EXT     6.5

# BEC reforzado: departamento + asunto finanzas + urgencia
meta     LMM_BEC_TRIAD        (LMM_BEC_DEPT_EXT && __LMM_SUBJ_FINANCE && __LMM_BODY_URGENCY)
describe LMM_BEC_TRIAD        Patrón completo BEC (depto + finanzas + urgencia)
score    LMM_BEC_TRIAD        3.5

# --------------------------------------------------------
# 3) REPLY-TO A FREEMAIL (sin evals raros, compatible SA)
# --------------------------------------------------------
header   __LMM_FROM_NOT_FREE  From !~ /@(gmail\.com|outlook\.com|hotmail\.com|live\.com|yahoo\..*|icloud\.com|me\.com|aol\.com|protonmail\..*|gmx\..*|zoho\..*)/i
header   __LMM_REPLY_IS_FREE  Reply-To =~ /@(gmail\.com|outlook\.com|hotmail\.com|live\.com|yahoo\..*|icloud\.com|me\.com|aol\.com|protonmail\..*|gmx\..*|zoho\..*)/i
meta     LMM_REPLY_FRAUD      (__LMM_FROM_NOT_FREE && __LMM_REPLY_IS_FREE)
describe LMM_REPLY_FRAUD      Reply-To apunta a freemail aunque el From parece corporativo
score    LMM_REPLY_FRAUD      7.5

# Freemail + firma corporativa (caza “firmas pegadas”)
body     __LMM_SIG_CORP       /(@[a-z0-9.-]+\.[a-z]{2,}|www\.[a-z0-9.-]+\.[a-z]{2,}).*(S\.L\.|SL|S\.A\.|SA|Ltd|LLC|GmbH|España|Spain|Departamento|Area|Manager)/i
meta     LMM_FREEMAIL_CORP_SIG (__LMM_REPLY_IS_FREE && __LMM_SIG_CORP)
describe LMM_FREEMAIL_CORP_SIG Freemail pero firma corporativa (posible suplantación)
score    LMM_FREEMAIL_CORP_SIG 3.0

# ----------------------------------------------
# 4) DESTINATARIOS OCULTOS (campañas masivas BEC)
# ----------------------------------------------
header   LMM_UNDISCLOSED_TO   To =~ /undisclosed-recipients/i
describe LMM_UNDISCLOSED_TO   Envío con destinatarios ocultos (patrón de campaña)
score    LMM_UNDISCLOSED_TO   3.0

# ---------------------------------------------------
# 5) QUISHING (QR) — keywords + adjunto PDF/imagen
# ---------------------------------------------------
body     __LMM_QR_WORDS       /(escanea (el|este) c[oó]digo|c[oó]digo QR|scan (the )?qr|qr code|verifica.*qr|documento seguro.*qr|accede.*(qr|c[oó]digo))/i
full     __LMM_ATTACH_PDF     /Content-Type:\s*application\/pdf/i
full     __LMM_ATTACH_IMG     /Content-Type:\s*image\/(png|jpeg|jpg|gif)/i
meta     LMM_QUISHING_PDF     (__LMM_QR_WORDS && __LMM_ATTACH_PDF)
describe LMM_QUISHING_PDF     Quishing probable (QR + PDF adjunto)
score    LMM_QUISHING_PDF     6.0
meta     LMM_QUISHING_IMG     (__LMM_QR_WORDS && __LMM_ATTACH_IMG)
describe LMM_QUISHING_IMG     Quishing probable (QR + imagen adjunta)
score    LMM_QUISHING_IMG     5.0

# ---------------------------------------------
# 6) CRIPTO-ESTAFAS (seed phrase / wallets / 2FA)
# ---------------------------------------------
body     LMM_CRYPTO_SEED      /(seed phrase|frase semilla|frase de recuperaci[oó]n|recovery phrase|wallet recovery|restore wallet)/i
describe LMM_CRYPTO_SEED      Intento de robo de frase semilla / recuperación
score    LMM_CRYPTO_SEED      7.0

body     LMM_CRYPTO_BRANDS    /(MetaMask|Ledger|Trezor|Trust Wallet|Coinbase|Binance|Kraken).*(alert|security|seguridad|bloquead|frozen|verific|2FA|KYC)/i
describe LMM_CRYPTO_BRANDS    Alerta falsa de wallet/exchange (phishing)
score    LMM_CRYPTO_BRANDS    5.0

# Direcciones BTC/ETH en el cuerpo (señal adicional)
body     LMM_CRYPTO_ADDR      /(\b(bc1|[13])[a-zA-Z0-9]{25,60}\b|\b0x[a-fA-F0-9]{40}\b)/
describe LMM_CRYPTO_ADDR      Contiene dirección de wallet cripto (señal de scam)
score    LMM_CRYPTO_ADDR      2.5

# ----------------------------------------------------------
# 7) URLS SOSPECHOSAS: ACORTADORES, IPs, PUNYCODE, TLD raros
# ----------------------------------------------------------
body     LMM_URL_SHORTENERS   /https?:\/\/(bit\.ly|t\.co|tinyurl\.com|cutt\.ly|rebrand\.ly|shorturl\.at|is\.gd|rb\.gy|soo\.gd)\b/i
describe LMM_URL_SHORTENERS   Uso de acortadores de URL (táctica de evasión)
score    LMM_URL_SHORTENERS   2.0

body     LMM_URL_IP_HOST      /https?:\/\/(\d{1,3}\.){3}\d{1,3}([:\/]|$)/
describe LMM_URL_IP_HOST      URL con host IP (muy típico en phishing)
score    LMM_URL_IP_HOST      3.0

body     LMM_URL_PUNYCODE     /https?:\/\/[^ \t\r\n]*xn--/i
describe LMM_URL_PUNYCODE     URL con punycode (posible homógrafo)
score    LMM_URL_PUNYCODE     2.5

# TLDs muy usados en campañas (mantén score bajo para evitar falsos positivos)
body     LMM_URL_SUSP_TLD     /https?:\/\/[^ \t\r\n]+\.(top|xyz|click|monster|work|info|live|rest|icu|cyou|sbs|zip|mov)\b/i
describe LMM_URL_SUSP_TLD     URL con TLD común en campañas de phishing
score    LMM_URL_SUSP_TLD     1.5

# “Verifica / inicia sesión / contraseña” + URL
body     __LMM_CRED_WORDS     /(inicia sesi[oó]n|login|verifica tu cuenta|verify your account|actualiza tu contrase[nñ]a|password reset|confirm identity|KYC required)/i
meta     LMM_CREDPHISH_LINK   (__LMM_CRED_WORDS && (LMM_URL_SHORTENERS || LMM_URL_IP_HOST || LMM_URL_PUNYCODE || LMM_URL_SUSP_TLD))
describe LMM_CREDPHISH_LINK   Credenciales + enlace sospechoso (phishing)
score    LMM_CREDPHISH_LINK   4.0

# ---------------------------------------------------
# 8) ADJUNTOS MALWARE (ejecutables, scripts, dobles ext)
# ---------------------------------------------------
# Ejecutables / scripts (crítico)
header   LMM_ATTACH_EXEC      Content-Type =~ /name=.*\.(exe|com|scr|pif|bat|cmd|vbs|js|jse|wsf|wsh|ps1|psm1|msi|msp|hta|jar|apk)\b/i
describe LMM_ATTACH_EXEC      Adjunto ejecutable o script (alto riesgo)
score    LMM_ATTACH_EXEC      10.0

# Accesos directos / trucos Windows
header   LMM_ATTACH_LNK       Content-Type =~ /name=.*\.(lnk|url|scf)\b/i
describe LMM_ATTACH_LNK       Adjunto tipo acceso directo (táctica malware)
score    LMM_ATTACH_LNK       7.0

# Office con macros / formatos peligrosos
header   LMM_ATTACH_OFFICE_MAC Content-Type =~ /name=.*\.(docm|xlsm|pptm|dotm|xlam|iqy|slk)\b/i
describe LMM_ATTACH_OFFICE_MAC Office con macros / contenido activo
score    LMM_ATTACH_OFFICE_MAC 7.0

# Contenedores usados para ransomware (ISO/IMG/VHD/VHDX/CAB)
header   LMM_ATTACH_DISK      Content-Type =~ /name=.*\.(iso|img|vhd|vhdx|cab)\b/i
describe LMM_ATTACH_DISK      Contenedor/imagen de disco (vehículo ransomware)
score    LMM_ATTACH_DISK      9.0

# HTML/SVG adjuntos (phishing con “archivo web”)
header   LMM_ATTACH_WEB       Content-Type =~ /name=.*\.(html|htm|shtml|svg)\b/i
describe LMM_ATTACH_WEB       Adjunto web (HTML/SVG) usado en phishing
score    LMM_ATTACH_WEB       6.0

# Doble extensión clásica
header   LMM_ATTACH_DOUBLE    Content-Type =~ /name=.*\.(pdf|jpg|jpeg|png|gif|docx|xlsx|pptx|txt|zip)\.(exe|js|vbs|bat|cmd|scr|pif|msi|ps1|hta)\b/i
describe LMM_ATTACH_DOUBLE    Doble extensión (intento de ocultar ejecutable)
score    LMM_ATTACH_DOUBLE    10.0

# Archivos comprimidos “raros” (señal moderada)
header   LMM_ATTACH_ARCHIVE   Content-Type =~ /name=.*\.(7z|rar|ace|arj|uue)\b/i
describe LMM_ATTACH_ARCHIVE   Adjunto comprimido inusual (revisar)
score    LMM_ATTACH_ARCHIVE   3.5

# ZIP + “password” en cuerpo (táctica para saltar AV)
body     __LMM_PASS_WORDS     /(password|contrase[nñ]a|clave|pass:|pwd:)/i
meta     LMM_ZIP_PASSWORD     (__LMM_PASS_WORDS && (LMM_ATTACH_ARCHIVE || __LMM_ATTACH_PDF))
describe LMM_ZIP_PASSWORD     Indica contraseña/clave junto a adjunto (táctica evasión)
score    LMM_ZIP_PASSWORD     2.5

# ---------------------------------------------------
# 9) HTML OFUSCADO / ANIDACIÓN EXCESIVA (score bajo)
# ---------------------------------------------------
body     LMM_HTML_OBFUSC      /(v1){3,}|editbody1|font-size:\s*10pt;\s*font-family:\s*Verdana/i
describe LMM_HTML_OBFUSC      HTML con patrón de ofuscación/anidación sospechosa
score    LMM_HTML_OBFUSC      1.5

# ---------------------------------------------------
# 10) PATRONES DE ASUNTO (símbolos, mayúsculas, typos)
# ---------------------------------------------------
header   LMM_SUBJ_ALLCAPS     Subject =~ /^[^a-záéíóúñ]{8,}$/i
describe LMM_SUBJ_ALLCAPS     Asunto en mayúsculas / sin minúsculas (campaña)
score    LMM_SUBJ_ALLCAPS     2.0

header   LMM_SUBJ_SYMBOLS     Subject =~ /([!$?%]{3,}|[-_]{3,}|#{3,})/
describe LMM_SUBJ_SYMBOLS     Exceso de símbolos en asunto
score    LMM_SUBJ_SYMBOLS     2.0

# Typos típicos (ajusta a tu histórico real)
header   LMM_SUBJ_TYPO_JST    Subject =~ /(JSTIFICANTE|JUSITIFICANTE|JUSTIFCANTE|TRASNFERENCIA|TRANFERENCIA)/i
describe LMM_SUBJ_TYPO_JST    Typos típicos en señuelos financieros
score    LMM_SUBJ_TYPO_JST    3.5

# Email del destinatario en el asunto (campañas)
header   LMM_TO_IN_SUBJ       Subject =~ /[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}/i
describe LMM_TO_IN_SUBJ       El email del destinatario aparece en el asunto
score    LMM_TO_IN_SUBJ       2.5

# ---------------------------------------------------
# 11) “SOLO HTML” (refuerzo suave, ya existe MIME_HTML_ONLY)
# ---------------------------------------------------
header   LMM_HTML_ONLY        Content-Type =~ /^text\/html/i
describe LMM_HTML_ONLY        Mensaje declarado solo como HTML (refuerzo)
score    LMM_HTML_ONLY        1.5

# ---------------------------------------------------
# 12) “SEXTORSION / EXTORSIÓN” (patrones frecuentes)
# ---------------------------------------------------
body     LMM_SEXTORTION       /(tengo acceso a tu webcam|grab[eé] tu video|I recorded you|we have your video|pay in bitcoin|monero|publicaremos tu video)/i
describe LMM_SEXTORTION       Extorsión/sextorsión
score    LMM_SEXTORTION       6.0

# ---------------------------------------------------
# 13) LISTAS BLANCAS / NEGRA (ejemplos)
# ---------------------------------------------------
# whitelist_from *@cliente-legal.com
# blacklist_from *@dominio-basura.tld

# =====================================================================
# FIN DEL PACK — Ajusta scores, añade tus dominios, y monitoriza logs.
# =====================================================================

Cómo sacar el listado de dominios de Plesk 18 y convertirlo a regex

Esto te permite rellenar MY_DOMAINS_REGEX sin escribir a mano 50 dominios.

# Lista de dominios desde la BD de Plesk (escapea puntos y une con |)
plesk db -Ne "SELECT name FROM domains" | sed 's/\./\\./g' | tr '\n' '|' | sed 's/|$//'
Consejo: guarda el resultado en un fichero y úsalo para regenerar tu regex cuando añadas dominios nuevos. Si gestionas muchos dominios, automatiza una vez por semana y valida con spamassassin --lint.

Ajuste fino y falsos positivos (la parte “de verdad”)

  • Reglas críticas: deja 10.0 solo para ejecutables/doble extensión (casi nunca son legítimos en empresa).
  • Señales “suaves”: TLDs, HTML raro, mayúsculas… mantenlas en 1.0–2.0. Son apoyo, no sentencia.
  • Whitelists: si un proveedor legítimo cae, blanquea su dominio o su sender específico (no blanquees “a lo loco”).
  • Logs y realidad: mira X-Spam-Status y ajusta hasta que el spam malo pase de 6.5 y el bueno se quede por debajo.
Anti-pifia: si un correo legítimo “importante” cae por LMM_BEC_DEPT_EXT, suele ser porque el proveedor usa un dominio externo pero firma “Contabilidad”. En ese caso: baja score o añade whitelist puntual para ese remitente.

FAQ sysadmin (rápida)

¿Puedo meter todas estas reglas en SpamAssassin de Plesk 18? Sí: son reglas de tipo header/body/full/meta, compatibles con SA 3.4.x, siempre que ajustes MY_DOMAINS_REGEX y valides con --lint. ¿Y si el spam pasa con SPF/DKIM ok? Normal: eso indica “el dominio existe y firmó”, no que el mensaje sea bueno. Aquí atacas el contenido, el comportamiento y el señuelo (BEC/adjuntos/URLs). ¿Qué hago si quiero “nivel pro”? Activa: sa-update + un ruleset fiable (ej. KAM) + plugins (Phishing/HashBL si tu distro lo permite) + antivirus y políticas de adjuntos.

Referencias y lecturas recomendadas

Sigue aprendiendo

Si te ha resultado útil este artículo, quizá te interesen también:

Últimos artículos

Subscríbete a nuestra newsletter

No Spam! Solo contenido de valor directamente a tu inbox

LaudeMMedia
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.