Bug template rspamd_settings.conf — Whitelist per-user ineficaz
El problema
Las whitelists de SpamAssassin que los usuarios configuran desde el panel de DirectAdmin (E-Mail → SpamAssassin Setup → Whitelist) no funcionan con rspamd. Los remitentes whitelisteados siguen llegando a la carpeta spam.
Afecta a todas las versiones de DirectAdmin con spamd=rspamd (verificado hasta DA 1.696).
Causa raíz (doble)
El template /usr/local/directadmin/data/templates/rspamd_settings.conf genera bloques _whitelist en /etc/rspamd/users.d/*.conf con dos defectos:
1. Priority incorrecta
El bloque _whitelist tiene priority = 4 hardcoded, pero el bloque _prefs usa priority = medium (= 5 en rspamd). rspamd selecciona el bloque de mayor prioridad → _prefs SIEMPRE gana, la whitelist NUNCA se aplica.
2. Falta apply.actions
Incluso si la prioridad fuera correcta, el bloque whitelist solo tiene want_spam = yes sin un bloque apply { actions { ... } }. rspamd sigue añadiendo cabecera X-Spam-Status: Yes y el filtro de dominio de Exim sigue enviando a la carpeta spam.
Contraste con blacklist
Los bloques _blacklist del mismo template sí funcionan porque:
- Usan
priority = high(= 10) - Incluyen
apply { actions { ... } }
Cómo verificar
# Ver qué settings block aplica rspamd para un usuario
grep "settings.lua" /var/log/rspamd/rspamd.log | grep USUARIO
# Siempre mostrará "settings_id: USUARIO_prefs" — nunca "USUARIO_whitelist"
Solución: template custom
Paso 1: Crear copia custom del template
mkdir -p /usr/local/directadmin/data/templates/custom/
cp /usr/local/directadmin/data/templates/rspamd_settings.conf \
/usr/local/directadmin/data/templates/custom/rspamd_settings.conf
Paso 2: Editar la copia custom
En /usr/local/directadmin/data/templates/custom/rspamd_settings.conf, buscar los bloques que contienen whitelist y cambiar:
Antes (roto):
|*if whitelist_count>"0"|
|WHITELIST_ID| {
priority = 4;
|CUSTOM12|
|RCPT|
|whitelist_from_list|
want_spam = yes;
|CUSTOM13|
}
Después (corregido):
|*if whitelist_count>"0"|
|WHITELIST_ID| {
priority = 6;
|CUSTOM12|
|RCPT|
|whitelist_from_list|
want_spam = yes;
apply {
actions {
"add header" = 9999;
"rewrite subject" = null;
}
}
|CUSTOM13|
}
Hay dos bloques whitelist en el template (uno con |whitelist_from_list| y otro con listas adicionales). Aplicar el cambio a ambos.
Paso 3: Regenerar users.d para usuarios existentes
El template custom se aplica cuando:
- Un usuario cambia sus preferencias de spam en el panel
- Se ejecuta un rebuild que afecta a users.d
Para forzar la regeneración de un usuario específico, el usuario debe ir a E-Mail → SpamAssassin Setup y guardar (aunque no cambie nada).
Para usuarios que ya tenían whitelist activa, hay que parchear manualmente su fichero users.d/*.conf:
# Ejemplo para usuario "alufasa" en kvm456
# En /etc/rspamd/users.d/alufasa.conf, buscar el bloque _whitelist y cambiar:
# priority = 4 → priority = 6
# Añadir apply.actions tras want_spam = yes
Cadena de prioridades correcta
blacklist (high=10) > whitelist (6) > prefs (medium=5) > default
Persistencia
El template custom en data/templates/custom/ sobrevive updates de DirectAdmin. Es el mecanismo oficial de override.
Referencia: post en el foro DA
Este bug fue reportado en el foro oficial de DirectAdmin:
Bug: rspamd_settings.conf template — per-user whitelist never applied (priority 4 < prefs medium)
El bug original de blacklist (mismo template) fue reportado en 2019 y corregido. La whitelist nunca recibió el mismo fix.
Alternativa: whitelist dinámica via email
Independientemente de este bug, existe un sistema de whitelist dinámica gestionado via email que SÍ funciona correctamente — usa multimap con score -100 en vez del mecanismo de settings per-user. Ver la página "Whitelist dinámica de rspamd via email en DirectAdmin" en esta misma wiki.
Servidores con template custom desplegado
| Servidor | Fecha | Usuarios parcheados manualmente |
|---|---|---|
| kvm456 | 2026-03-19 | alufasa, amenocalbus, audionica, elayudante, gestemalisal, lopeza, regfiltersl |
| srv120 | 2026-03-19 | tmar |
| srv121 | 2026-03-19 | neolystic |
| dar | 2026-03-19 | (ninguno con whitelist activa) |
Nota sobre want_spam = yes
want_spam = yes en rspamd settings NO es una whitelist por sí solo. Solo indica que el bloque de settings se aplica también a mensajes clasificados como spam. Sin apply.actions, rspamd sigue marcando el correo como spam. Es una trampa sutil de la documentación de rspamd.