Spamassassin trabalhando, mas não aprendendo? A precisão do filtro Bayes não está melhorando

Spamassassin trabalhando, mas não aprendendo? A precisão do filtro Bayes não está melhorando

Eu tenho um servidor de e-mail com uma instalação spamassassin funcional (postfix, dovecot, amavis, clamav, spamassassin no debian).

Tudo está funcionando muito bem. Spamassassin está filtrando Spams e recebo os cabeçalhos:

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

Estou treinando o Spamassassin (atualmente manualmente) com novos spams e presuntos quando eles chegam:

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

Tudo parece funcionar. No entanto, descobri recentemente que alguns spams que sempre parecem iguais ainda chegam às caixas de entrada. É o mesmo tipo de spam e, depois de algumas semanas de treinamento, ele ainda aparece. A pontuação bayesiana não muda.

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

Não consigo encontrar nenhum problema e tudo que verifiquei até agora parece estar funcionando. O padrão mínimo de 200 Spams/Hams foi obviamente aprovado. Então isso não deveria ser um problema. Estou treinando Spamassassin com 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

Qual poderia ser o problema? Não tenho mais certeza de onde procurar.

Qualquer ajuda é muito apreciada.

Responder1

Os resultados despamassassinO treinamento de Bayes é armazenado em um banco de dados composto por alguns arquivos comumentearmazenado no diretório inicial do usuário sob o qual está sendo executado. Se você ligar com um usuário diferente, não estará acessando/atualizando o mesmo conjunto de dados.

(versão estendida do comentário anterior)

Para separação de privilégios,spamassassingeralmente é executado sob um usuário separado, como debian-spamdou amavis, portanto, durante o autoaprendizado, o banco de dados desse usuário será atualizado. Se desejar fazer atualizações manuais no banco de dados, talvez seja necessário especificar o usuário correto; caso contrário, você estará apenas salvando seus dados de treinamento em um banco de dados diferente e não relacionado.

Como dizer?Se você tiver (backups à parte) duas instâncias dos arquivos de dados de treinamento, você está chamandospamassassinsob dois usuários diferentes (provavelmente um do seu servidor de email, um do seu shell):

# find / -name bayes_toks
/var/lib/amavis/.spamassassin/bayes_toks
/root/.spamassassin/bayes_toks

Ambos os arquivos podem ter um carimbo de data e hora de modificação recente porque assim que o banco de dados estiver suficientemente propagado,spamassassin podeselecionar correspondência suficientemente bem identificada paraautotreinamentoque consiste em aprender tokens de e-mails recebidos sem ação manual (esse comportamento pode ser configurado e você geralmente deseja ativá-lo).

Como consertar?Alimente os mesmos e-mails para o banco de dados correto - chamando sa-learncom o usuário/homedir que está usando enquanto é chamado do servidor de e-mail (verificarisso, o nome da pasta pode não corresponder ao nome de usuário!):

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

Eu não estou recomendandofundindoos conjuntos de dados divididos involuntariamente porque o formato do arquivo interno pode ser um pouco confuso (emborapodeser despejado usando --backupedestrutivamentesubstituído usando --restore), enquanto o retreinamento nos mesmos dados de spam é muito mais simples e sa-learnfoi projetado para lidar com o envio do mesmo e-mail repetidamente sem efeitos adversos.

informação relacionada