Esta é uma questão geral sobre o treinamento do spamassassin. Eu tenho um servidor de e-mail recém-configurado que filtra as mensagens recebidas através do spamassassin. Recentemente, recebi uma reserva de voo sinalizada como spam (pontuação 5) e gostaria de informar ao spamassassin que não é spam. (Talvez isso também reenvie o e-mail sem os cabeçalhos spamassassin modificados?)
Tentei pesquisar e só encontrei coisas sobre como fazer com que o spamassassin sinalize mensagens como spam (e não sobre como corrigir falsos positivos) ou para pessoas que escrevem e-mails - como não ser sinalizado como spam.
Então, no que diz respeito a dar feedback ao spamassassin sobre chamadas erradas:
Existe uma maneira de fazer isso em um cliente de e-mail (por exemplo: Thunderbird)?
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 faça o que fizer.
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 em letras maiúsculas SUBJ_ALL_CAPS e MIME_HTML_ONLY (acho que não há alternativa de texto).
O e-mail era para confirmação de reserva de voo e o assunto era assim:
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
Responder1
Existem conselhos específicos e gerais que podem ser úteis neste caso.
Específico
O problema subjacente aqui é que a Garuda Airlines, abençoadas sejam suas pequenas meias de algodão, está enviando e-mails de confirmação que apresentam muitas das características do spam. A linha de assunto é MUITO GRITADA, eles enviam e-mails somente em HTML que contêm muitas imagens e muito pouco texto, o remetente do envelope ( [email protected]
) é claramente um nonce construído por máquina e o provedor de e-mail para seu sistema de confirmação (terceirizado) (amadeus.com) possui um registro SPF inútil (apesartodos os nossos conselhos em contrário, algumas pessoas pensam erroneamente que há valor em um registro que listaalgunsde seus sistemas de envio e termina ~all
).
Não há muito que você possa fazer sobre a maior parte disso. Se você quiser ter certeza de que essas mensagens serão transmitidas, uma linha em seu computador ~/.spamassassin/user_prefs
que diz whitelist_from *@amadeus.com
enviará essas mensagens até você. Ir além e mexer nos pesos das regras que foram acionadas provavelmente é uma má ideia. O conjunto de regras do SpamAssassin (SA) é criado filtrando uma grande quantidade de spam e descobrindo 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.
Em geral
Esse é exatamente o tipo de situação que o mecanismo Bayesiano lida bem. Ele foi projetado para filtrar e-mails que não acionam outras regras, mas que contêm coisas que você não deseja ler, ao mesmo tempo que ajuda por meio de e-mails que acionam essas regras, mas que contêm coisas que você não deseja ler.fazerquero ler.
IIRC, o motor não fará nada se você não o treinar. A maneira mais fácil de treiná-lo é manter duas pastas, chamadas (digamos) spam
e ham
. Dentro de spam
você coloque cópias de e-mails que chegaram à sua CAIXA DE ENTRADA, mas você não queria; em ham
você colocou cópias de e-mails que caíram em conflito com SA, mas você queria, como este e-mail de confirmação.
Então, todas as noites (ou algo assim), você tem um cron job 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ê gosta e o que não gosta de ler. Como uma pontuação bayesiana alta pode adicionar +4,0 pontos à pontuação SA de um e-mail, enquanto uma pontuação baixa pode subtrair 1,9, um mecanismo bem treinado pode realmente ajudar o SA a distinguir o quevocêquero ler o quevocênão - masvocê tem que se esforçar para ensiná-lo.
Responder2
Você parece estar usando pombal. Passei algumas semanas tentando descobrir uma integração tranquila, que permita aos usuários treinar facilmente os filtros de spam do lado do servidor sem precisarcópia dee-mails.
A parte fundamental é oAntispamPlug-in Dovecot. O plugin antispam é acionado emmoveroperações entre três grupos de pastas: trash
, unsure
e spam
. Especificamente, quando uma transição de qualquer coisa (mas spam
) para spam
é detectada, uma ação de aprendizagem de spam é acionada e quando uma transição de spam
para unsure
é detectada, uma ação de aprendizagem de spam é acionada.
Ele oferece suporte a diferentes back-ends de treinamento. Um simples é o mailtrain
, que simplesmente executa um comando e coloca o e-mail 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
}
Junto 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 spam
e para aprender como presunto, execute /usr/local/bin/sa-learn-stdin.sh -L ham
." Os argumentos são configurados por antispam_mail_spam
e .antispam_mail_notspam
antispam_mail_sendmail_args
Isso já é muito legal. Se você puder configurar seu cliente para mover 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 spam na entrega (por exemplo, usando o Sieve), a mensagem será reconhecida como ham quando o usuário a mover para fora da pasta Spam.
Para melhorar a integração com Thunderbird e KMail, escrevi umpatch 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 simplesmente ser adicionada à plugin
seção na configuração do dovecot:
antispam_spam_flags = "Junk;$JUNK"
(As aspas são importantes para evitar que você $
faça algo engraçado.)
Com o patch, o antispam irátambémacionar uma ação de aprendizagem se uma mensagem receber um sinalizador de spam ou perder todos os seus sinalizadores de spam. Flags são um recurso IMAP usados pelos clientes para armazenar bits de informações no servidor. Acontece que o Thunderbird e o KMail usam esses sinalizadores para armazenar o status de Lixo/Spam das mensagens.
O Junk
sinalizador é definido pelo Thunderbird quando você marca uma mensagem como lixo eletrônico. Da mesma forma para a $JUNK
sinalização um KMail. Assim, com esta configuração, você pode acionar o aprendizado do lado do servidor sinalizando o e-mail como Lixo/Não Lixo no Thunderbird no KMail.
Outros clientes, como o K9-Mail, ainda funcionam bem, porque o padrão é mover lixo eletrônico para a pasta Spam, na qual o antispam também será acionado.
Você pode implementar a mesma funcionalidade, eu acho, emPeneira IMAP. Isso está no meu TODO, mas infelizmente atualmente não tenho um ambiente pronto para testes com um pombal suficientemente recente.