Spamassassin ha contrassegnato qualcosa come spam che non è spam. Come lo dico io?


14

Questa è una specie di domanda generale sulla formazione di spamassassin. Ho un mailserver appena impostato che filtra la posta in arrivo tramite spamassassin. Recentemente ho ricevuto una prenotazione di volo contrassegnata come spam (punteggio 5) e vorrei dire a spamassassin che non è spam. (Forse farlo invierebbe nuovamente la posta senza le intestazioni di spamassassin modificate?)

Ho provato a cercare in giro e sto solo cercando cose su come ottenere spamassassin per contrassegnare i messaggi come spam (e non su come correggere falsi positivi), o per le persone che scrivono e-mail - come non essere contrassegnati come spam.

Quindi per quanto riguarda il feedback di spamassassin su chiamate errate:

  1. Esiste un modo per farlo dall'interno di un client di posta elettronica (ad esempio: Thunderbird)

  2. C'è un modo per farlo tramite la riga di comando sul server di posta?

Mi piacerebbe rendere il processo il più fluido possibile, ma qualunque cosa porti a termine il lavoro.

Dettagli di SpamAssassin riguardanti l'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

Chiaramente i principali colpevoli sono la riga dell'oggetto in maiuscolo SUBJ_ALL_CAPS e il MIME_HTML_ONLY (immagino, nessuna alternativa testuale).

L'email era per una conferma della prenotazione del volo e l'oggetto appariva così:

 Subject: JENNINGS/NICHOLAS KOSSOW MR 24 JAN MOF DPS

Foraggio:

X-Envelope-From: <tdsfndprd@amadeus.com>
X-Envelope-To: <nick@xxx.xxx>
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 <tdsfndprd@amadeus.com>
Received: from obeap115 (nat-dns-mnp.amadeus.net [82.150.225.129])
    by mail1.amadeus.net (Postfix) with ESMTP id 3F7A9200042
    for <nick@xxx.xxx>; Fri, 20 Jan 2017 07:55:10 +0000 (GMT)
From: eticket@garuda-indonesia.com
TO: NICK@XXX.XXXX
Message-ID: <CTS/GA/C50D54421A07/1@tds.amadeus.com>
FND-Request-ID: <CTS/GA/C50D54421A07/1@tds.amadeus.com>
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

Il primo passo deve essere chiedere perché è stato contrassegnato come spam. Senza questo possiamo dare suggerimenti generali, mostrarti come modificare il motore bayesiano per il prosciutto, ma non possiamo fare a meno di affrontare in modo specifico le regole che hanno funzionato male. Aggiungi alla tua domanda le prime righe del corpo dell'email e tutte le intestazioni .
MadHatter,

@MadHatter grazie per i suggerimenti, aggiornata la domanda di conseguenza.
Nick Jennings,

Non dici quale punteggio Bayesiano abbia ottenuto. Stai usando il motore bayesiano?
MadHatter,

Il punteggio è stato 5.0 .. è stato inserito nell'argomento: ***** SPAM 5.0 *****
Nick Jennings,

1
Questo è il punteggio SA totale, non il punteggio bayesiano che contribuisce. Ma non preoccuparti, dal resto di quello che hai scritto, sembra che il tuo motore bayesiano non si accenda perché non l'hai mai addestrato e intendi affrontarlo!
MadHatter,

Risposte:


22

Ci sono consigli specifici e generali che possono essere utili in questo caso.

Specifico

Il problema di fondo qui è che Garuda Airlines, benedici i loro calzini di cotone, sta inviando e-mail di conferma che portano molti dei segni distintivi dello spam. La riga dell'oggetto è MOLTO MERAVIGLIOSA, inviano e-mail solo HTML che contengono molte immagini e pochissimo testo, il mittente busta ( tdsfndprd@amadeus.com) è abbastanza chiaramente un nonce costruito automaticamente e il provider di posta elettronica per il loro sistema di conferma (esternalizzato) (amadeus.com) ha un record SPF inutile (nonostante tutti i nostri consigli contrari , alcune persone pensano erroneamente che in un record vi sia valore che elenca alcuni dei loro sistemi di invio e fini ~all).

Non c'è molto che puoi fare per la maggior parte di questo. Se vuoi essere sicuro di questi passaggi, una riga nel tuo ~/.spamassassin/user_prefsche dice whitelist_from *@amadeus.comti farà arrivare questi messaggi. Andare oltre e manomettere i pesi delle regole che sono state attivate è probabilmente una cattiva idea. Il set di regole di SpamAssassin (SA) viene creato filtrando un enorme peso di spam e elaborando quali caratteristiche si applicano alla maggior parte di esso; probabilmente aprirai la tua INBOX molto di più delle semplici e-mail di conferma di Garuda disattivando queste regole.

Generale

Questo è esattamente il tipo di situazione che il motore bayesiano gestisce bene. È stato progettato per filtrare le e-mail che non attivano le altre regole, ma contiene cose che non vuoi leggere, contribuendo attraverso la posta elettronica che fa grilletto tali norme, ma contiene cose che non desidera leggere.

IIRC, il motore non farà nulla se non lo stai allenando. Il modo più semplice per addestrarlo è mantenere due cartelle, chiamate (diciamo) spame ham. In spamhai messo copie di e-mail che sono entrate nella tua INBOX ma non volevi; in hamte inserire copie di e-mail che sono cadute in fallo di SA ma che volevi, come questa e-mail di conferma.

Quindi ogni notte (o giù di lì) hai un cron job che dice

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

modificando i percorsi di conseguenza. Nel tempo, questo insegnerà al motore cosa fai e non ti piace leggere. Poiché un punteggio bayesiano elevato può aggiungere +4,0 punti al punteggio SA di un'e-mail, mentre un punteggio basso può sottrarre 1,9, un motore ben addestrato può davvero aiutare SA a distinguere ciò che si desidera leggere da ciò che non si fa - ma è necessario sforzati di insegnarlo .


1
Sembra ragionevole. Proverò a provare quel flusso di caselle di posta spam / ham. Grazie!
Nick Jennings,

1
"Benedici i loro calzini di cotone"
Alex Reinking,

@MadHatter fa seguito a questo. Ho provato a trascinare l'e-mail SPAM che Spamassassin ha modificato nella cartella Ham e quando ho eseguito il sa-learn --ham ...comando, dice che ha trovato 0 e-mail da cui imparare: Learned tokens from 0 message(s) (0 message(s) examined)... Ho provato a catturare l' .emlallegato in cui SpamAsssasin ha inserito l'e-mail originale, nella cartella Ham direttamente sul server, ma dice che trova 0 messaggi da elaborare ...
Nick Jennings,

Dovrei aggiungere che sto trattando l'e-mail originale come allegato come da report_safe 1impostazione.
Nick Jennings,

@NickJennings quindi probabilmente dovrai usare un client con capacità MIME per eliminare l'e-mail originale, per alimentare sa-learn. Se è troppo doloroso, spegni report_safe. È una buona idea formare lo studente del prosciutto con altre cose oltre a cose che sono state erroneamente identificate come spam, poiché i presupposti del filtro bayesiano sono separati da quelli della SA nel suo insieme. Nutro la mia tutta la posta personale che ricevo, poiché questa è la roba che più desidero leggere.
MadHatter,

7

Sembra che tu stia usando dovecot. Ho trascorso alcune settimane cercando di capire un'integrazione regolare, che consente agli utenti di addestrare facilmente i filtri antispam sul lato server senza dover copiare la posta.

La parte fondamentale è il plug-in Antispam Dovecot. L'antispam plug-trigger sulle spostare le operazioni tra i tre gruppi di cartelle: trash, unsuree spam. In particolare, quando viene rilevata una transizione da qualcosa (ma spam) a spam, viene attivata un'azione di apprendimento dello spam e quando viene rilevata una transizione da spama unsure, viene attivata un'azione di apprendimento ham.

Supporta diversi backend di allenamento. Un semplice è mailtrain, che esegue semplicemente un comando e mette la posta su input standard. Una configurazione per questo potrebbe apparire così:

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
}

Insieme a /usr/local/bin/sa-learn-stdin.sh:

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

La configurazione dice "Per imparare come spam, esegui /usr/local/bin/sa-learn-stdin.sh -L spame per imparare come ham, esegui /usr/local/bin/sa-learn-stdin.sh -L ham". Gli argomenti sono configurati da antispam_mail_spam, antispam_mail_notspame antispam_mail_sendmail_args.

Questo è già abbastanza carino. Se puoi configurare il tuo client per spostare i messaggi che contrassegni come spam nella cartella spam, si tratta già di un'integrazione piuttosto automatica tra client e server. Allo stesso modo, se si configura il server per archiviare i messaggi classificati come spam nella cartella spam alla consegna (ad esempio utilizzando Sieve), il messaggio verrà appreso come ham quando l'utente lo sposta dalla cartella Spam.


Per migliorare l'integrazione con Thunderbird e KMail, ho scritto una patch per antispam , che purtroppo non ha ricevuto alcun feedback da upstream; utilizzare a proprio rischio .

Aggiunge un'opzione di configurazione all'antispam, che può essere semplicemente aggiunta alla pluginsezione nella configurazione dovecot:

   antispam_spam_flags = "Junk;$JUNK"

(Le virgolette sono importanti per evitare che $facciano qualcosa di divertente.)

Con la patch, antispam attiverà anche un'azione di apprendimento se un messaggio ottiene un flag di spam o perde tutti i suoi flag di spam. I flag sono una funzione IMAP e utilizzati dai client per memorizzare bit di informazioni sul lato server. A quanto pare, Thunderbird e KMail usano questi flag per memorizzare lo stato di Junk / Spam dei messaggi.

La Junkbandiera è impostata da Thunderbird quando si contrassegna un messaggio come spazzatura. Allo stesso modo per la $JUNKbandiera un KMail. Pertanto, con questa configurazione, è possibile attivare l'apprendimento lato server contrassegnando la posta come Junk / NonJunk in Thunderbird in KMail.

Altri client, come K9-Mail, continuano a giocare bene, perché lì l'impostazione predefinita è spostare la posta indesiderata nella cartella Spam, che verrà attivata anche dall'antispam.


È possibile implementare la stessa funzionalità, credo, in IMAPSieve . Questo è sul mio TODO, ma sfortunatamente al momento non ho un ambiente pronto per i test con una colombaia sufficientemente recente.


Questo sembra interessante, lo esamineremo sicuramente.
Nick Jennings,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.