Spamassassin sinalizou algo como spam que não é spam. Como eu digo isso?

14

Essa é uma pergunta geral sobre o treinamento de massagens de spa. Eu tenho um servidor de e-mail recém-configurado que filtra os e-mails recebidos por spamassassin. Recentemente, recebi uma reserva de voo sinalizada como spam (pontuação 5) e gostaria de informar ao spamassassin que não é spam. (Talvez fazer isso também reenvie o e-mail sem os cabeçalhos spamassassin modificados?)

Tentei pesquisar e só estou encontrando informações sobre como fazer com que o spamassassin sinalize mensagens como spam (e não sobre corrigir falsos positivos) ou para pessoas que escrevem e-mails - como não ser sinalizado como spam.

Portanto, no que diz respeito a fornecer feedback ao spamass sobre chamadas erradas:

  1. Existe uma maneira de fazer isso de dentro de um cliente de email (por exemplo: Thunderbird)

  2. Existe uma maneira de fazer isso através da linha de comando no servidor de email?

Eu gostaria de tornar o processo o mais fluido possível, mas o que quer que faça o trabalho.

Detalhes do SpamAssassin sobre o e-mail:

 0.0 FSL_HELO_NON_FQDN_1    No description available.
 0.6 HK_RANDOM_ENVFROM      Envelope sender username looks random
-0.0 RCVD_IN_DNSWL_NONE     RBL: Sender listed at http://www.dnswl.org/, no trust [82.150.225.129 listed in list.dnswl.org]
-0.0 RCVD_IN_MSPIKE_H3      RBL: Good reputation (+3) [82.150.225.129 listed in wl.mailspike.net]
 0.0 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different
 1.0 SPF_SOFTFAIL           SPF: sender does not match SPF record (softfail)
 1.6 SUBJ_ALL_CAPS          Subject is all capitals
 1.1 MIME_HTML_ONLY         BODY: Message only has text/html MIME parts
 0.7 HTML_IMAGE_ONLY_20     BODY: HTML: images with 1600-2000 bytes of words
 0.0 HTML_MESSAGE           BODY: HTML included in message
-0.0 RCVD_IN_MSPIKE_WL      Mailspike good senders
 0.0 UNPARSEABLE_RELAY      Informational: message has unparseable relay lines
 0.0 T_REMOTE_IMAGE         Message contains an external image

Claramente, os principais culpados são a linha de assunto all-caps SUBJ_ALL_CAPS e o MIME_HTML_ONLY (eu acho, nenhuma alternativa em texto).

O email era para uma confirmação de reserva de voo e o assunto era o seguinte:

 Subject: JENNINGS/NICHOLAS KOSSOW MR 24 JAN MOF DPS

Cabeçalhos:

X-Envelope-From: <[email protected]>
X-Envelope-To: <[email protected]>
Received: from mail1.amadeus.net (unknown)
    by 147-49-15-51.rev.cloud.scaleway.com(Postfix 3.1.0/8.13.0) with SMTP id unknown
    Fri, 20 Jan 2017 07:55:10 +0000
    (envelope-from <[email protected]>
Received: from obeap115 (nat-dns-mnp.amadeus.net [82.150.225.129])
    by mail1.amadeus.net (Postfix) with ESMTP id 3F7A9200042
    for <[email protected]>; Fri, 20 Jan 2017 07:55:10 +0000 (GMT)
From: [email protected]
TO: [email protected]
Message-ID: <CTS/GA/C50D54421A07/[email protected]>
FND-Request-ID: <CTS/GA/C50D54421A07/[email protected]>
Job-ID: 1
Subject: JENNINGS/NICHOLAS KOSSOW MR 24 JAN MOF DPS
Date: Fri, 20 Jan 2017 07:55:09 +0000
Content-Type: multipart/mixed; 
    boundary="----=_Part_191904_1900935199.1484898909762"
MIME-Version: 1.0
Nick Jennings
fonte
O primeiro passo é perguntar por que foi sinalizado como spam. Sem isso, podemos fazer sugestões gerais, mostrar como ajustar o mecanismo bayesiano do presunto, mas não podemos ajudar a resolver especificamente as regras que falharam. Adicione à sua pergunta as primeiras linhas do corpo do email e todos os cabeçalhos .
MadHatter
@ MadHatter obrigado pelas sugestões, atualizou a pergunta de acordo.
Nick Jennings
Você não diz que pontuação bayesiana obteve. Você está usando o mecanismo bayesiano?
MadHatter
A pontuação foi 5,0 .. está inserida no assunto: ***** SPAM 5.0 *****
Nick Jennings
1
Essa é a pontuação total da SA, não a pontuação bayesiana que contribui. Mas não se preocupe, pelo resto do que você escreveu, parece que seu mecanismo bayesiano não está disparando porque você nunca o treinou e pretende resolver isso!
MadHatter

Respostas:

22

Há conselhos específicos e gerais que podem ser úteis nesse caso.

Específico

O problema subjacente aqui é que a Garuda Airlines, abençoe suas pequenas meias de algodão, está enviando e-mails de confirmação com muitas das características de spam. A linha de assunto é MUITO GRATUITA, eles enviam e-mails apenas em HTML que contêm muitas imagens e muito pouco texto, o remetente do envelope ([email protected] ) é claramente um documento construído pela máquina e o provedor de e-mail para o sistema de confirmação (terceirizado) (amadeus.com) possui um registro SPF inútil (apesar de todos os nossos conselhos em contrário , algumas pessoas pensam erroneamente que há valor em um registro que lista alguns de seus sistemas e fins de envio ~all).

Não há muito o que você possa fazer sobre a maior parte disso. Se você quiser ter certeza disso, uma linha na sua mensagem indicará ~/.spamassassin/user_prefsque whitelist_from *@amadeus.comvocê receberá essas mensagens. Ir além e adulterar o peso das regras que foram acionadas é provavelmente uma má idéia. O conjunto de regras SpamAssassin (SA) é criado filtrando um grande peso de spam e calculando quais características se aplicam à maior parte dele; é provável que você abra sua caixa de entrada para muito mais do que apenas e-mails de confirmação do Garuda desativando essas regras.

Geral

Esse é exatamente o tipo de situação que o mecanismo bayesiano lida bem. Ele foi projetado para filtrar emails que não acionam as outras regras, mas contêm itens que você não deseja ler, enquanto ajudam no email que aciona essas regras, mas contém itens que você não quer ler.

IIRC, o mecanismo não fará nada se você não estiver treinando. A maneira mais fácil de treiná-lo é manter duas pastas, chamadas (digamos) spameham . Para spamvocê colocar cópias de e-mail que o fizeram em sua caixa de entrada, mas você não quer; para hamvocê colocar cópias de e-mails que caíram em desgraça com SA, mas você queria, como este e-mail de confirmação.

À noite (mais ou menos), você tem um trabalho cron que diz

sa-learn --spam --mbox mail/spam
sa-learn --ham  --mbox mail/ham

modificando os caminhos de acordo. Com o tempo, isso ensinará ao mecanismo o que você faz e não gosta de ler. Desde uma alta pontuação de Bayesian pode adicionar +4,0 pontos a pontuação SA de um e-mail, enquanto que uma baixa pode subtrair 1.9, um motor bem treinado pode realmente ajudar SA distinguir o que você quer ler a partir do que você não fazer - mas você tem que esforçar-se para ensiná-lo .

Chapeleiro Louco
fonte
1
Isso parece razoável. Vou tentar esse fluxo de caixa de correio de spam / ham. Obrigado!
Nick Jennings
1
"abençoe suas meias de algodão"
Alex Reinking
@ MadHatter acompanhando isso. Tentei arrastar o email de spam que o Spamassassin alterou para a pasta Ham e, quando executei o sa-learn --ham ...comando, ele diz que encontrou 0 e-mails para aprender: Learned tokens from 0 message(s) (0 message(s) examined)... Tentei .emlcolocar o anexo em que o SpamAsssasin colocou o email original na pasta Ham diretamente no servidor, mas ainda assim, diz que encontra 0 mensagens para processar ...
Nick Jennings
Devo acrescentar que estou lidando com o email original como um anexo conforme a report_safe 1configuração.
Nick Jennings
@NickJennings, você provavelmente precisará usar um cliente compatível com MIME para remover o email original e alimentar sa-learn. Se for muito doloroso, desligue report_safe. É uma boa idéia treinar o aprendiz de presunto com outras coisas além de coisas que foram erroneamente identificadas como spam, já que as suposições do filtro bayesiano são separadas das SA como um todo. Alimento o meu todo o correio pessoal que recebo, pois é isso que mais quero ler.
MadHatter
7

Você parece estar usando dovecot. Passei algumas semanas tentando descobrir uma integração suave, que permite aos usuários treinar facilmente os filtros de spam do lado do servidor sem precisar copiar mails.

A parte principal é o plug-in Antispam Dovecot. O plug-in anti-spam gatilhos em movimento operações entre três grupos de pasta: trash, unsuree spam. Especificamente, quando uma transição de qualquer coisa (mas spam) para spamé detectada, uma ação de aprendizado de spam é acionada e quando uma transição de spamparaunsure é detectada, uma ação de aprendizado temporário é acionada.

Ele suporta diferentes recursos de treinamento. Um é simples mailtrain, que simplesmente executa um comando e coloca o correio na entrada padrão. Uma configuração para isso pode ser assim:

plugin {
   antispam_backend = mailtrain
   antispam_mail_sendmail = /usr/local/bin/sa-learn-stdin.sh
   antispam_mail_spam = spam
   antispam_mail_notspam = ham
   antispam_mail_sendmail_args = -L
   antispam_spam = Junk;INBOX.Junk
   antispam_trash = Trash;INBOX.Trash
   antispam_allow_append_to_spam = no
}

Juntamente com /usr/local/bin/sa-learn-stdin.sh:

#!/bin/bash
/usr/bin/spamc "$@" >> /tmp/sa-learn-log
exit 0

A configuração diz "Para aprender como spam, execute /usr/local/bin/sa-learn-stdin.sh -L spame para aprender como ham, execute /usr/local/bin/sa-learn-stdin.sh -L ham". Os argumentos são configurados antispam_mail_spam, antispam_mail_notspameantispam_mail_sendmail_args .

Isso já é bem legal. Se você pode configurar seu cliente para mover os e-mails marcados como spam para a pasta de spam, isso já é uma integração bastante automática entre o cliente e o servidor. Da mesma forma, se você configurar o servidor para armazenar e-mails classificados como spam na pasta de spam na entrega (por exemplo, usando o Sieve), a mensagem será aprendida como presa quando o usuário a mover para fora da pasta Spam.


Para melhorar a integração com o Thunderbird e o KMail, escrevi um patch para antispam , que infelizmente não recebeu nenhum feedback do upstream; use por sua conta e risco .

Ele adiciona uma opção de configuração ao antispam, que pode ser simplesmente adicionada à pluginseção na configuração dovecot:

   antispam_spam_flags = "Junk;$JUNK"

(As aspas são importantes para impedir que você $faça algo engraçado.)

Com o patch, o antispam também acionará uma ação de aprendizado se uma mensagem receber um sinalizador de spam ou perder todos os sinalizadores de spam. Os sinalizadores são um recurso IMAP e usados ​​pelos clientes para armazenar bits de informações no lado do servidor. Acontece que o Thunderbird e o KMail usam esses sinalizadores para armazenar o status de Lixo Eletrônico / Spam.

A Junksinalização é definida pelo Thunderbird quando você marca uma mensagem como lixo eletrônico. Da mesma forma para a $JUNKbandeira, um KMail. Portanto, com essa configuração, você pode acionar o aprendizado no servidor sinalizando o correio como Lixo / Não Lixo no Thunderbird no KMail.

Outros clientes, como o K9-Mail, ainda funcionam bem, porque o padrão é mover o lixo eletrônico na pasta Spam, na qual o antispam também será acionado.


Acho que você pode implementar a mesma funcionalidade no IMAPSieve . Isso está no meu TODO, mas infelizmente atualmente não tenho um ambiente pronto para teste com um pombal suficientemente recente.

Jonas Schäfer
fonte
Isso parece interessante, definitivamente vai investigar.
Nick Jennings