Spamassassin hat etwas als Spam gekennzeichnet, das kein Spam ist. Wie erzähle ich es so?

14

Dies ist eine Art allgemeine Frage zum Training von Spamassassin. Ich habe einen neu eingerichteten Mailserver, der eingehende E-Mails über Spamassassin filtert. Ich habe kürzlich eine Flugreservierung als Spam markiert (Punktzahl 5) und möchte Spamassassin mitteilen, dass es sich nicht um Spam handelt. (Wenn Sie dies tun, wird die E-Mail möglicherweise auch ohne die geänderten Spamassassin-Header erneut gesendet?)

Ich habe versucht, mich umzusehen, und finde nur Dinge, bei denen es darum geht, Spamassistenten dazu zu bringen, Nachrichten als Spam zu kennzeichnen (und nicht darum, Fehlalarme zu beheben), oder um Leute, die E-Mails schreiben - wie man nicht als Spam gekennzeichnet wird.

Um Spamassassin Feedback zu falschen Anrufen zu geben:

  1. Gibt es eine Möglichkeit, dies von einem E-Mail-Client aus zu tun (zum Beispiel: Thunderbird)?

  2. Gibt es eine Möglichkeit, dies über die Befehlszeile auf dem Mailserver zu tun?

Ich möchte den Prozess so flüssig wie möglich gestalten, aber was auch immer erledigt wird.

Details von SpamAssassin bezüglich der 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

Offensichtlich sind die Hauptverantwortlichen die Betreffzeile SUBJ_ALL_CAPS und MIME_HTML_ONLY (ich denke, keine Textalternative).

Die E-Mail war für eine Flugbuchungsbestätigung und der Betreff sah folgendermaßen aus:

 Subject: JENNINGS/NICHOLAS KOSSOW MR 24 JAN MOF DPS

Überschriften:

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
quelle
Der erste Schritt muss die Frage sein, warum es als Spam gekennzeichnet wurde. Ohne das können wir Ihnen allgemeine Vorschläge machen und Ihnen zeigen, wie Sie den Bayes-Motor für Schinken optimieren können, aber wir können nicht anders, als die Regel (n), die fehlgeschlagen sind, spezifisch anzugehen. Bitte fügen Sie Ihrer Frage die ersten Zeilen des E-Mail-Textes und alle Überschriften hinzu .
MadHatter
@MadHatter danke für die Vorschläge, hat die Frage entsprechend aktualisiert.
Nick Jennings
Sie sagen nicht, welchen Bayes-Score es hat. Verwenden Sie überhaupt den Bayes'schen Motor?
MadHatter
Die Punktzahl war 5.0 .. es ist in das Thema eingefügt: ***** SPAM 5.0 *****
Nick Jennings
1
Das ist die SA-Gesamtpunktzahl, nicht die beitragende Bayes-Punktzahl. Aber keine Sorge, nach dem Rest von dem, was Sie geschrieben haben, scheint Ihr Bayes-Motor nicht zu zünden, weil Sie ihn noch nie trainiert haben, und Sie beabsichtigen, dies zu beheben!
MadHatter

Antworten:

22

Es gibt sowohl spezifische als auch allgemeine Hinweise, die in diesem Fall hilfreich sein können.

Spezifisch

Das Grundproblem hierbei ist, dass Garuda Airlines, die ihre kleinen Baumwollsocken segnen, Bestätigungs-E-Mails senden, die viele der Kennzeichen von Spam tragen. Die Betreffzeile ist SEHR SCHNELL, sie senden nur HTML-E-Mails, die sehr viele Bilder und sehr wenig Text enthalten, der Umschlagsender ( [email protected]) ist ganz klar eine maschinell hergestellte Nonce und der E-Mail-Anbieter für sein (ausgelagertes) Bestätigungssystem (amadeus.com) hat einen unbrauchbaren SPF-Datensatz (trotz aller gegenteiligen Ratschläge denken einige Leute fälschlicherweise, dass ein Datensatz einen Wert hat, in dem einige ihrer Sendesysteme und -enden aufgelistet sind ~all).

Gegen das meiste kann man nicht viel tun. Wenn Sie eine Zeile in der Sie dieser Durchkommen , sein wollen , ~/.spamassassin/user_prefsdas sagt whitelist_from *@amadeus.comdiese Nachrichten durch Sie erhalten. Es ist wahrscheinlich eine schlechte Idee, weiter zu gehen und die Gewichte der ausgelösten Regeln zu manipulieren. Der SpamAssassin-Regelsatz (SA-Regelsatz) wird erstellt, indem eine große Menge von Spam gefiltert wird und herausgefunden wird, welche Eigenschaften für den größten Teil des Regelsatzes gelten. Sie können Ihren Posteingang wahrscheinlich nicht nur für Garuda-Bestätigungs-E-Mails öffnen, indem Sie diese Regeln deaktivieren.

Allgemeines

Dies ist genau die Art von Situation, mit der der Bayes-Motor gut zurechtkommt. Es ist so konzipiert , E - Mail , um herauszufiltern , die nicht die anderen Regeln auslöst , sondern enthält Material , das Sie, gleichzeitig dazu beiträgt , durch E - Mail nicht lesen wollen , dass diese Regeln auslöst , sondern enthält Material , das Sie nicht lesen wollen.

IIRC, der Motor macht nichts, wenn Sie es nicht trainieren. Am einfachsten trainieren Sie es, indem Sie zwei Ordner namens (say) spamund pflegen ham. In spamSie legen Kopien von E-Mails, die es in Ihren Posteingang geschafft haben, aber Sie wollten nicht; Geben hamSie Kopien von E-Mails ein, die SA-Verstößen zum Opfer gefallen sind, die Sie jedoch wollten, z. B. diese Bestätigungs-E-Mail.

Dann haben Sie jeden Abend (oder so) einen Cronjob, der besagt

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

Ändern Sie die Pfade entsprechend. Mit der Zeit lehrt dies den Motor, was Sie gerne lesen und was nicht. Da eine hohe Bayesian Punktzahl +4,0 Punkte auf einen SA E-Mail - Score hinzufügen kann, während ein niedriger ein 1,9, ein gut ausgebildeter Motor kann wirklich subtrahieren kann helfen , SA unterscheiden , was Sie aus lesen mögen , was Sie nicht tun - aber Sie müssen Gib dir die Mühe, es zu lehren .

MadHatter
quelle
1
Das hört sich vernünftig an. Ich werde diesen Spam- / Ham-Mailbox-Fluss ausprobieren. Vielen Dank!
Nick Jennings
1
"segne ihre kleinen Baumwollsocken"
Alex Reinking
@ MadHatter Follow-up auf diese. Ich habe versucht Ziehen der SPAM E - Mail , dass Spamassassin in den Ham - Ordner geändert und wenn ich das lief sa-learn --ham ...Befehl, sie sagt , es 0 E - Mails gefunden zu lernen: Learned tokens from 0 message(s) (0 message(s) examined)... Ich habe versucht , die catting .emlBefestigung dass SpamAsssasin die ursprüngliche E - Mail setzen in, in den Ham - Ordner direkt auf dem Server, aber immer noch sagt, es findet 0 Nachrichten zu verarbeiten ...
Nick Jennings
Ich sollte hinzufügen, dass ich es mit der ursprünglichen E-Mail als Anhang gemäß der report_safe 1Einstellung zu tun habe .
Nick Jennings
@NickJennings dann musst du wahrscheinlich einen MIME-fähigen Client verwenden, um die ursprüngliche E-Mail zu entfernen und zu füttern sa-learn. Wenn Ihnen das zu weh tut, schalten Sie ab report_safe. Es ist eine gute Idee, den Schinkenlerner mit anderen Dingen zu schulen, abgesehen von Dingen, die fälschlicherweise als Spam identifiziert wurden, da die Annahmen des Bayes'schen Filters von denen der SAs als Ganzes verschieden sind. Ich füttere meine ganze persönliche Post, die ich erhalte, denn das ist das Zeug, das ich am liebsten lesen möchte.
MadHatter
7

Sie scheinen Taubenschlag zu benutzen. Ich habe einige Wochen damit verbracht, eine reibungslose Integration zu finden, mit der Benutzer die serverseitigen Spam-Filter auf einfache Weise trainieren können, ohne E-Mails kopieren zu müssen .

Der Schlüssel ist das Antispam Dovecot Plugin. Die Anti - Spam - Plugin Trigger für Schritt Operationen zwischen drei Ordnergruppen: trash, unsureund spam. Insbesondere wenn ein Übergang von etwas (außer spam) zu spamerkannt wird, wird eine Spam-Lernaktion ausgelöst, und wenn ein Übergang von spamzu unsureerkannt wird, wird eine Ham-Lernaktion ausgelöst.

Es unterstützt verschiedene Trainings-Backends. Ein einfaches ist mailtrain, das einfach einen Befehl ausführt und die Mail auf Standardeingabe setzt. Eine Konfiguration dafür könnte so aussehen:

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
}

Zusammen mit /usr/local/bin/sa-learn-stdin.sh:

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

Die Konfiguration lautet "Als Spam lernen, laufen /usr/local/bin/sa-learn-stdin.sh -L spamund als Schinken lernen, laufen /usr/local/bin/sa-learn-stdin.sh -L ham". Die Argumente werden mit antispam_mail_spam, antispam_mail_notspamund konfiguriert antispam_mail_sendmail_args.

Das ist schon ziemlich nett. Wenn Sie Ihren Client so konfigurieren können, dass als Spam markierte E-Mails in den Spam-Ordner verschoben werden, ist dies bereits eine ziemlich automatische Integration zwischen Client und Server. Wenn Sie den Server so konfigurieren, dass bei der Zustellung als Spam klassifizierte E-Mails im Spam-Ordner gespeichert werden (z. B. mithilfe von Sieve), wird die Nachricht als Ham erkannt, wenn der Benutzer sie aus dem Spam-Ordner verschiebt.


Um die Integration mit Thunderbird und KMail zu verbessern, habe ich einen Patch für Antispam geschrieben , der leider kein Feedback vom Upstream erhalten hat. Benutzung auf eigenes Risiko .

Es fügt eine Konfigurationsoption zu Antispam hinzu, die einfach dem pluginAbschnitt in der Taubenschlag-Konfiguration hinzugefügt werden kann :

   antispam_spam_flags = "Junk;$JUNK"

(Die Anführungszeichen sind wichtig, um zu verhindern, dass $etwas Lustiges passiert.)

Mit dem Patch löst Antispam auch eine Lernaktion aus, wenn eine Nachricht ein Spam-Flag erhält oder alle Spam-Flags verliert. Flags sind eine IMAP-Funktion und werden von Clients zum Speichern von Informationen auf der Serverseite verwendet. Es stellt sich heraus, dass Thunderbird und KMail diese Flags verwenden, um den Junk / Spam-Status von Nachrichten zu speichern.

Das JunkFlag wird von Thunderbird gesetzt, wenn Sie eine Nachricht als Junk markieren. Ebenso für die $JUNKFlagge eine KMail. Mit dieser Konfiguration können Sie das serverseitige Lernen auslösen, indem Sie E-Mails in Thunderbird in KMail als Junk / NonJunk kennzeichnen.

Andere Clients, wie z. B. K9-Mail, spielen immer noch gut mit, da standardmäßig Junk-E-Mails in den Spam-Ordner verschoben werden, auf die sich auch Antispam auswirkt.


Sie können die gleiche Funktionalität in IMAPSieve implementieren . Dies ist auf meinem TODO, aber leider habe ich derzeit keine testfertige Umgebung mit einem ausreichend aktuellen Dovecot.

Jonas Schäfer
quelle
Das sieht interessant aus, wird es auf jeden Fall prüfen.
Nick Jennings