Dies ist eine Art allgemeine Frage zum Training von Spamassassin. Ich habe einen neu eingerichteten Mailserver, der eingehende E-Mails durch Spamassassin filtert. Vor kurzem wurde eine Flugreservierung als Spam gekennzeichnet (Score 5) und ich möchte Spamassassin mitteilen, dass es sich nicht um Spam handelt. (Vielleicht würde dies auch dazu führen, dass die E-Mail ohne die geänderten Spamassassin-Header erneut gesendet wird?)
Ich habe alles durchsucht und finde nur Informationen darüber, wie man Spamassassin dazu bringt, Nachrichten als Spam zu kennzeichnen (und nicht darüber, wie man Fehlalarme behebt), oder für Leute, die E-Mails schreiben – wie man verhindert, dass man als Spam gekennzeichnet wird.
Also, was das Geben von Spamassassin-Feedback zu falschen Anrufen betrifft:
Gibt es eine Möglichkeit, dies innerhalb eines E-Mail-Clients (z. B. Thunderbird) zu tun?
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 alles, was die Arbeit erledigt, ist wichtig.
Details von SpamAssassin zur 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
Die Hauptschuldigen sind eindeutig die in Großbuchstaben geschriebene Betreffzeile SUBJ_ALL_CAPS und MIME_HTML_ONLY (ich vermute, keine Textalternative).
Bei der E-Mail handelte es sich um 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
Antwort1
Es gibt sowohl spezifische als auch allgemeine Ratschläge, die in diesem Fall hilfreich sein können.
Spezifisch
Das zugrunde liegende Problem besteht darin, dass Garuda Airlines, Gott segne sie, Bestätigungs-E-Mails verschickt, die viele der Kennzeichen von Spam aufweisen. Die Betreffzeile ist SEHR SCHRECKLICH, sie versenden nur HTML-E-Mails, die ziemlich viele Bilder und sehr wenig Text enthalten, der Envelope-Sender ( [email protected]
) ist ganz klar ein maschinell erstellter Nonce, und der E-Mail-Anbieter für ihr (ausgelagertes) Bestätigungssystem (amadeus.com) hat einen nutzlosen SPF-Eintrag (trotzalle unsere gegenteiligen Ratschläge, manche Leute glauben fälschlicherweise, dass ein Datensatz wertvoll ist, der auflistetmancheihrer Sendesysteme und -enden ~all
).
Gegen die meisten dieser Dinge können Sie nicht viel tun. Wenn Sie sicher sein möchten, dass diese Nachrichten ankommen, geben Sie in Ihrem E-Mail-Posteingang eine Zeile ein, ~/.spamassassin/user_prefs
die besagt, whitelist_from *@amadeus.com
dass diese Nachrichten an Sie weitergeleitet werden. Darüber hinauszugehen und die Gewichtung der ausgelösten Regeln zu manipulieren, ist wahrscheinlich keine gute Idee. Der SpamAssassin (SA)-Regelsatz wird erstellt, indem eine große Menge Spam gefiltert und herausgefunden wird, welche Merkmale auf den Großteil davon zutreffen. Wenn Sie diese Regeln deaktivieren, werden Sie in Ihrem Posteingang wahrscheinlich viel mehr als nur Garuda-Bestätigungs-E-Mails sehen.
Allgemein
Genau mit solchen Situationen kommt die Bayesian Engine gut zurecht. Sie ist so konzipiert, dass sie E-Mails herausfiltert, die die anderen Regeln nicht auslösen, aber Dinge enthalten, die Sie nicht lesen möchten, und hilft gleichzeitig dabei, E-Mails durchzufiltern, die diese Regeln auslösen, aber Dinge enthalten, die SieTunmöchte lesen.
Soweit ich mich erinnere, tut die Engine nichts, wenn Sie sie nicht trainieren. Am einfachsten trainieren Sie sie, indem Sie zwei Ordner pflegen, die beispielsweise spam
und heißen ham
. In spam
legen Sie Kopien von E-Mails ab, die es in Ihren Posteingang geschafft haben, die Sie aber nicht haben wollten; in ham
legen Sie Kopien von E-Mails ab, die SA missachtet haben, die Sie aber haben wollten, wie beispielsweise diese Bestätigungs-E-Mail.
Dann haben Sie jede Nacht (oder so) einen Cron-Job, der sagt
sa-learn --spam --mbox mail/spam
sa-learn --ham --mbox mail/ham
Ändern Sie die Pfade entsprechend. Mit der Zeit lernt die Engine dadurch, was Sie gerne lesen und was nicht. Da ein hoher Bayesian-Score den SA-Score einer E-Mail um +4,0 Punkte erhöhen kann, während ein niedriger 1,9 Punkte abziehen kann, kann eine gut trainierte Engine SA wirklich dabei helfen, zu unterscheiden, wasDuwill lesen, wasDunicht - aberman muss sich anstrengen, es zu lehren.
Antwort2
Sie scheinen Dovecot zu verwenden. Ich habe einige Wochen damit verbracht, eine reibungslose Integration zu finden, die es Benutzern ermöglicht, die serverseitigen Spamfilter einfach zu trainieren, ohneKopierenMails.
Der Schlüssel ist dieAntispamDovecot-Plugin. Das Antispam-Plugin löst aus beibewegenOperationen zwischen drei Ordnergruppen: trash
, unsure
und spam
. Insbesondere wird beim Erkennen eines Übergangs von irgendetwas (außer spam
) zu spam
eine Spam-Lernaktion ausgelöst, und beim Erkennen eines Übergangs von spam
zu unsure
wird eine Ham-Lernaktion ausgelöst.
Es werden verschiedene Trainings-Backends unterstützt. Ein einfaches ist mailtrain
, das einfach einen Befehl ausführt und die E-Mail auf die Standardeingabe legt. Eine Konfiguration dafür könnte wie folgt 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: „Um zu lernen, ob es Spam ist, führen Sie aus, /usr/local/bin/sa-learn-stdin.sh -L spam
und um zu lernen, ob es Ham ist, führen Sie aus /usr/local/bin/sa-learn-stdin.sh -L ham
.“ Die Argumente werden durch antispam_mail_spam
, antispam_mail_notspam
und konfiguriert antispam_mail_sendmail_args
.
Das ist schon ziemlich gut. Wenn Sie Ihren Client so konfigurieren können, dass er Mails, die Sie als Spam markieren, in den Spam-Ordner verschiebt, ist das bereits eine ziemlich automatische Integration zwischen dem Client und dem Server. Wenn Sie den Server so konfigurieren, dass er Mails, die als Spam klassifiziert werden, bei der Zustellung im Spam-Ordner speichert (zum Beispiel mit 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 einePatch für Antispam, das leider kein Feedback vom Upstream erhielt;Benutzung auf eigene Gefahr.
Es fügt dem Spamschutz eine Konfigurationsoption hinzu, die einfach dem plugin
Abschnitt in der Dovecot-Konfiguration hinzugefügt werden kann:
antispam_spam_flags = "Junk;$JUNK"
(Die Anführungszeichen sind wichtig, um zu verhindern, dass sie $
irgendetwas Lustiges tun.)
Mit dem Patch wird AntispamAucheine Lernaktion auslösen, wenn eine Nachricht als Spam gekennzeichnet wird oder alle Spamkennzeichen verliert. Kennzeichen sind eine IMAP-Funktion und werden von Clients verwendet, um Informationen serverseitig zu speichern. Es hat sich herausgestellt, dass Thunderbird und KMail diese Kennzeichen verwenden, um den Junk-/Spam-Status von Nachrichten zu speichern.
Das Junk
Flag wird von Thunderbird gesetzt, wenn Sie eine Nachricht als Junk markieren. Gleiches gilt für das $JUNK
Flag in KMail. Mit dieser Konfiguration können Sie also serverseitiges Lernen auslösen, indem Sie E-Mails in Thunderbird und KMail als Junk/NonJunk markieren.
Andere Clients wie K9-Mail spielen immer noch gut mit, da dort die Standardeinstellung darin besteht, Junk-Mails in den Spam-Ordner zu verschieben, woraufhin der Spam-Schutz ebenfalls ausgelöst wird.
Ich denke, Sie können die gleiche Funktionalität implementieren inIMAPSieve. Dies steht auf meiner TODO-Liste, aber leider verfüge ich derzeit nicht über eine testbereite Umgebung mit einem ausreichend aktuellen Dovecot.