
Tengo un servidor de correo con una instalación de spamassassin que funciona (postfix, dovecot, amavis, clamav, spamassassin en Debian).
Todo está funcionando muy bien. Spamassassin está filtrando spam y obtengo los encabezados:
X-Virus-Scanned: Debian amavisd-new at xxx.yyy.de
X-Spam-Flag: YES
X-Spam-Score: 8.025
X-Spam-Level: ********
X-Spam-Status: Yes, score=8.025 tagged_above=-9999 required=3
tests=[BAYES_50=0.8, DKIM_INVALID=0.1, DKIM_SIGNED=0.1,
HTML_IMAGE_ONLY_24=1.618, HTML_MESSAGE=0.001,
RAZOR2_CF_RANGE_51_100=1.886, RAZOR2_CHECK=0.922,
RCVD_IN_BL_SPAMCOP_NET=1.347, SPF_HELO_NONE=0.001, SPF_PASS=-0.001,
URIBL_ABUSE_SURBL=1.25, URIBL_BLOCKED=0.001]
autolearn=no autolearn_force=no
Estoy entrenando a Spamassassin (actualmente manualmente) con nuevo spam y jamón cuando llega:
Tue Dec 15 22:22:14 2020
Spam training for [email protected]
Learned tokens from 12 message(s) (159 message(s) examined)
Ham training for [email protected]
Learned tokens from 4 message(s) (49 message(s) examined)
Deleting spam for [email protected] older than 30 days
Syncing the SpamAssassin journal
bayes: synced databases from journal in 0 seconds: 2711 unique entries (2711 total entries)
Statistics for this run:
0.000 0 3 0 non-token data: bayes db version
0.000 0 5288 0 non-token data: nspam
0.000 0 855 0 non-token data: nham
0.000 0 124148 0 non-token data: ntokens
0.000 0 1602145027 0 non-token data: oldest atime
0.000 0 1608066788 0 non-token data: newest atime
0.000 0 1608067345 0 non-token data: last journal sync atime
0.000 0 1607672985 0 non-token data: last expiry atime
0.000 0 5529600 0 non-token data: last expire atime delta
0.000 0 50552 0 non-token data: last expire reduction count
Run finished Tue Dec 15 22:22:27 2020
Todo parece funcionar. Sin embargo, últimamente descubrí que algo de spam que siempre tiene el mismo aspecto todavía llega a las bandejas de entrada. Es el mismo tipo de spam y, después de algunas semanas de entrenamiento, todavía llega. La puntuación bayesiana no cambia.
X-Virus-Scanned: Debian amavisd-new at xxx.yyy.de
X-Spam-Flag: NO
X-Spam-Score: 1.852
X-Spam-Level: *
X-Spam-Status: No, score=1.852 tagged_above=-9999 required=3
tests=[BAYES_00=-1.9, DIGEST_MULTIPLE=0.293, DKIMWL_WL_MED=-0.001,
DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249,
HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, PYZOR_CHECK=1.392,
RAZOR2_CF_RANGE_51_100=1.886, RAZOR2_CHECK=0.922, SPF_HELO_NONE=0.001,
SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01]
autolearn=no autolearn_force=no
Parece que no puedo encontrar ningún problema y todo lo que he comprobado hasta ahora parece estar funcionando. Obviamente se pasa el mínimo predeterminado de 200 Spams/Hams. Entonces eso no debería ser un problema. Estoy entrenando Spamassassin con este comando:
/usr/bin/sa-learn --no-sync --spam /var/vmail/$domain/$user/Maildir/.Junk/{cur,new} >> /var/log/sa-learn.log 2>&1
/usr/bin/sa-learn --no-sync --ham /var/vmail/$domain/$user/Maildir/{cur} >> /var/log/sa-learn.log 2>&1
/usr/bin/sa-learn --sync >> /var/log/sa-learn.log 2>&1
¿Cual podría ser el problema? Ya no estoy seguro de dónde buscar.
Cualquier ayuda es muy apreciada.
Respuesta1
Los resultados despamasassinLos entrenamientos Bayes se almacenan en una base de datos compuesta por algunos archivos comúnmentealmacenado en el directorio de inicio del usuario bajo el que se está ejecutando. Si llama con un usuario diferente, no está accediendo ni actualizando el mismo conjunto de datos.
(Versión extendida del comentario anterior)
Para la separación de privilegios,spamasassinPor lo general, se ejecuta con un usuario independiente, como debian-spamd
o amavis
, por lo que durante el aprendizaje automático, se actualizará la base de datos de ese usuario. Si desea realizar actualizaciones manuales en la base de datos, es posible que deba especificar el usuario correcto; de lo contrario, simplemente estaría guardando sus datos de entrenamiento en una base de datos diferente y no relacionada.
¿Como decir?Si tiene (aparte de las copias de seguridad) dos instancias de los archivos de datos de entrenamiento, ha estado llamandospamasassinbajo dos usuarios diferentes (probablemente uno de su servidor de correo, uno de su shell):
# find / -name bayes_toks
/var/lib/amavis/.spamassassin/bayes_toks
/root/.spamassassin/bayes_toks
Ambos archivos pueden tener una marca de tiempo de modificación reciente porque tan pronto como la base de datos esté lo suficientemente inicializada,spamassassin puedeseleccionar correo suficientemente bien identificado paraautotrenque consiste en aprender tokens del correo recibido sin acción manual (este comportamiento se puede configurar y normalmente lo querrás activar).
¿Como arreglar?Envíe los mismos correos a la base de datos correcta, llamando sa-learn
con el usuario/homedir que está utilizando mientras se llama desde el servidor de correo (verificaresto, es posible que el nombre de la carpeta no coincida con el nombre de usuario):
sudo -H -u amavis sa-learn --no-sync --spam /var/vmail/$domain/$user/Maildir/.Junk/{cur,new} >> /var/log/sa-learn.log 2>&1
sudo -H -u amavis sa-learn --no-sync --ham /var/vmail/$domain/$user/Maildir/{cur} >> /var/log/sa-learn.log 2>&1
sudo -H -u amavis sa-learn --sync >> /var/log/sa-learn.log 2>&1
no estoy recomendandofusionandolos conjuntos de datos divididos involuntariamente porque el formato de archivo interno puede ser un poco confuso (aunquepoderser desechado usando --backup
ydestructivamentesobrescrito usando --restore
), mientras que volver a entrenar con los mismos datos de spam es mucho más simple y sa-learn
está diseñado para lidiar con el envío del mismo correo una y otra vez sin efectos adversos.