Spamassassin oznaczył coś jako spam, który nie jest spamem. Jak mam to powiedzieć?

14

Jest to rodzaj ogólnego pytania na temat szkolenia spamassassina. Mam nowo skonfigurowany serwer poczty, który filtruje pocztę przychodzącą przez spamassassin. Niedawno dostałem rezerwację lotu oznaczoną jako spam (wynik 5) i chciałbym powiedzieć spamassassin, że to nie jest spam. (Być może zrobienie tego spowoduje również ponowne wysłanie wiadomości bez zmodyfikowanych nagłówków spamassassin?)

Próbowałem szukać i znajduję tylko informacje na temat uzyskiwania spamassassin do oflagowania wiadomości jako spam (a nie naprawiania fałszywych alarmów) lub dla osób piszących e-maile - jak nie zostać oznaczonym jako spam.

Jeśli chodzi o przekazywanie spamassassinowi informacji zwrotnych na temat niewłaściwych połączeń:

  1. Czy można to zrobić z poziomu klienta poczty e-mail (na przykład: Thunderbird)

  2. Czy można to zrobić za pomocą wiersza polecenia na serwerze pocztowym?

Chciałbym, aby proces był jak najbardziej płynny, ale cokolwiek wykona zadanie.

Szczegóły od SpamAssassin dotyczące wiadomości 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

Najwyraźniej głównymi winowajcami są linie tematyczne SUBJ_ALL_CAPS i MIME_HTML_ONLY (chyba nie ma alternatywy tekstowej).

Wiadomość e-mail dotyczyła potwierdzenia rezerwacji lotu, a temat wyglądał następująco:

 Subject: JENNINGS/NICHOLAS KOSSOW MR 24 JAN MOF DPS

Nagłówki:

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
źródło
Pierwszym krokiem musi być pytanie, dlaczego został oznaczony jako spam. Bez tego możemy sformułować ogólne sugestie, pokazać, jak ulepszyć silnik Bayesa dla szynki, ale nie możemy pomóc w konkretnym rozwiązaniu reguły, która się nie udała. Dodaj do pytania kilka pierwszych wierszy treści wiadomości e-mail i wszystkie nagłówki .
MadHatter
@MadHatter dzięki za sugestie, odpowiednio zaktualizowałem pytanie.
Nick Jennings,
Nie mówisz, jaki wynik ma Bayesian. Czy w ogóle używasz silnika Bayesian?
MadHatter
Wynik wynosił 5,0 .. został on wstawiony do tematu: ***** SPAM 5.0 *****
Nick Jennings
1
To jest całkowity wynik SA, a nie wynik bayesowski. Ale nie martw się, z reszty tego, co napisałeś, wygląda na to, że twój silnik Bayesa nie odpala, ponieważ nigdy go nie ćwiczyłeś i zamierzasz to rozwiązać!
MadHatter

Odpowiedzi:

22

W tym przypadku przydatne mogą być zarówno szczegółowe, jak i ogólne porady.

Konkretny

Podstawowym problemem jest to, że linie lotnicze Garuda, błogosławią swoje małe bawełniane skarpetki, wysyłają e-maile z potwierdzeniem, które zawierają wiele znaków rozpoznawczych spamu. Wiersz tematu jest BARDZO SHOUTY, wysyłają wiadomości e-mail zawierające tylko HTML, które zawierają sporo obrazów i bardzo mało tekstu, koperta-nadawca ( [email protected]) jest dość wyraźnie maszynową jednostką, a dostawca poczty e-mail dla ich (zewnętrznego) systemu potwierdzania (amadeus.com) ma bezużyteczny rekord SPF (pomimo wszystkich naszych przeciwnych wskazówek , niektórzy ludzie błędnie sądzą, że w rejestrze znajduje się wartość, która zawiera listę niektórych systemów wysyłania i celów ~all).

Większość z tego nie można zrobić. Jeśli chcesz mieć pewność, że się przedostaną, przejdź do linii w komunikacie ~/.spamassassin/user_prefs, whitelist_from *@amadeus.comktóra dostarczy Ci te wiadomości. Posuwanie się dalej i manipulowanie wagami uruchomionych reguł jest prawdopodobnie złym pomysłem. Zestaw reguł SpamAssassin (SA) jest tworzony przez filtrowanie ogromnej masy spamu i sprawdzanie, jakie cechy dotyczą większości z nich; prawdopodobnie otworzysz swoją skrzynkę odbiorczą na wiele więcej niż tylko e-maile z potwierdzeniem Garudy, wyłączając te reguły.

Generał

Właśnie w takiej sytuacji dobrze radzi sobie silnik Bayesa. Został zaprojektowany w celu odfiltrowywania wiadomości e-mail, które nie uruchamiają innych reguł, ale zawierają rzeczy, których nie chcesz czytać, a jednocześnie pomagają za pośrednictwem wiadomości e-mail, które wyzwalają te reguły, ale zawierają rzeczy, które chcesz przeczytać.

IIRC, silnik nic nie zrobi, jeśli go nie trenujesz. Najłatwiejszym sposobem trenowania jest utrzymanie dwóch folderów, zwanych (powiedzmy) spami ham. Włożysz spamkopie wiadomości e-mail, które trafiły do ​​skrzynki odbiorczej, ale nie chciałeś; hamumieść w tobie kopie wiadomości e-mail, które nie zgadzają się z SA, ale tego chciałeś, na przykład ten e-mail z potwierdzeniem.

Następnie co noc (lub tak) masz zadanie crona, które mówi

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

odpowiednio modyfikując ścieżki. Z czasem nauczy to silnika, co robisz, a nie lubisz czytać. Ponieważ wysoki wynik bayesowski może dodać +4,0 punktów do wyniku SA e-maila, podczas gdy niski może odjąć 1,9, dobrze wyszkolony silnik może naprawdę pomóc SA odróżnić to , co chcesz przeczytać od tego, czego nie chcesz - ale musisz włóż wysiłek, aby go uczyć .

Szalony Kapelusznik
źródło
1
Brzmi rozsądnie. Dam tej skrzynce pocztowej spam / szynka. Dzięki!
Nick Jennings,
1
„pobłogosław ich małe bawełniane skarpetki”
Alex Reinking
@MadHatter w następstwie tego. Próbowałem przeciągnąć wiadomość e-mail SPAM, którą Spamassassin zmienił, do folderu Ham, a kiedy uruchomiłem sa-learn --ham ...polecenie, napisano, że znaleziono 0 wiadomości e-mail do nauki: Learned tokens from 0 message(s) (0 message(s) examined)... Próbowałem wyłapać .emlzałącznik, w którym SpamAsssasin umieścił oryginalną wiadomość e-mail, w folderze Ham bezpośrednio na serwerze, ale nadal twierdzi, że znajduje 0 wiadomości do przetworzenia ...
Nick Jennings
Powinienem dodać, że mam do czynienia z oryginalnym adresem e-mail jako załącznikiem zgodnie z report_safe 1ustawieniem.
Nick Jennings
@NickJennings, prawdopodobnie będziesz musiał użyć klienta obsługującego MIME, aby usunąć oryginalną wiadomość e-mail i wysyłać wiadomości sa-learn. Jeśli to za duży ból, wyłącz report_safe. Dobrym pomysłem jest trenowanie ucznia szynki w zakresie innych rzeczy oprócz rzeczy, które zostały błędnie zidentyfikowane jako spam, ponieważ założenia filtru bayesowskiego są inne niż SA jako całość. Podaję moje wszystkie osobiste wiadomości, które otrzymuję, ponieważ to jest to, co najbardziej chcę przeczytać.
MadHatter
7

Wygląda na to, że używasz gołębnika. Spędziłem kilka tygodni, próbując znaleźć płynną integrację, która pozwala użytkownikom łatwo szkolić filtry antyspamowe po stronie serwera bez konieczności kopiowania wiadomości e-mail.

Kluczową częścią jest wtyczka Antispam Dovecot. Antyspamowy plugin wyzwalaczy na move operacji między trzema grupami folderu: trash, unsurei spam. W szczególności, po wykryciu przejścia z czegokolwiek (ale spam) do spam, uruchamiana jest akcja uczenia się spamu, a po wykryciu przejścia z spamdo unsure, uruchamiana jest akcja uczenia się szynki.

Obsługuje różne zaplecza treningowe. Prostym jest mailtrain, który po prostu wykonuje polecenie i umieszcza pocztę na standardowym wejściu. Konfiguracja tego może wyglądać następująco:

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
}

Wraz z /usr/local/bin/sa-learn-stdin.sh:

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

Konfiguracja mówi „Aby uczyć się jako spam, biegnij /usr/local/bin/sa-learn-stdin.sh -L spami uczyć się jak szynka, biegnij /usr/local/bin/sa-learn-stdin.sh -L ham”. Argumenty są skonfigurowane antispam_mail_spam, antispam_mail_notspama antispam_mail_sendmail_args.

To już jest całkiem miłe. Jeśli możesz skonfigurować klienta do przenoszenia wiadomości oznaczonych jako spam do folderu ze spamem, jest to już dość automatyczna integracja między klientem a serwerem. Podobnie, jeśli skonfigurujesz serwer do przechowywania wiadomości zaklasyfikowanych jako spam w folderze spamu podczas dostarczania (na przykład za pomocą Sieve), wiadomość zostanie wyuczona jako szynka, gdy użytkownik przeniesie ją z folderu Spam.


Aby poprawić integrację z Thunderbird i KMail, napisałem łatkę do antyspamu , która niestety nie otrzymała żadnych informacji zwrotnych; używać na własne ryzyko .

Dodaje opcję konfiguracji do antyspamu, którą można po prostu dodać do pluginsekcji w konfiguracji dovecot:

   antispam_spam_flags = "Junk;$JUNK"

(Cytaty są ważne, aby uniemożliwić $robienie czegokolwiek śmiesznego).

Dzięki poprawce antyspam wyzwoli również akcję uczenia się, jeśli wiadomość otrzyma flagę spamu lub straci wszystkie flagi spamu. Flagi są funkcją IMAP i są używane przez klientów do przechowywania części informacji po stronie serwera. Okazuje się, że Thunderbird i KMail używają tych flag do przechowywania wiadomości typu śmieci / spam.

JunkFlaga jest ustawiona przez Thunderbird, jeśli oznaczyć wiadomość jako śmieci. Podobnie dla $JUNKflagi jest Kmail. Tak więc, dzięki tej konfiguracji, możesz uruchomić uczenie po stronie serwera, oznaczając pocztę jako Śmieci / Non-śmieci w Thunderbird w Kmail.

Inni klienci, tacy jak K9-Mail, nadal dobrze się bawią, ponieważ domyślnie jest tam przenoszenie śmieci do folderu Spam, który zostanie również włączony.


Myślę, że możesz wdrożyć tę samą funkcjonalność w IMAPSieve . To jest moje TODO, ale niestety obecnie nie mam środowiska gotowego do testowania z wystarczająco niedawną gołębicą.

Jonas Schäfer
źródło
To wygląda interesująco, na pewno się temu przyjrzy.
Nick Jennings,