Spamassassin menandai sesuatu sebagai spam yang bukan spam. Bagaimana saya mengatakannya?

14

Ini adalah semacam pertanyaan umum tentang pelatihan spamassassin. Saya memiliki server surat yang baru mengatur yang menyaring surat masuk melalui spamassassin. Baru-baru ini saya mendapat reservasi penerbangan yang ditandai sebagai spam (skor 5) dan ingin memberi tahu spamassassin bahwa itu bukan spam. (Mungkin melakukan ini juga akan mengirim ulang surat tanpa header spamassassin yang dimodifikasi?)

Saya sudah mencoba mencari di sekitar dan saya hanya menemukan hal-hal tentang mendapatkan spamassassin untuk menandai pesan sebagai spam (dan bukan tentang memperbaiki kesalahan positif), atau untuk orang yang menulis email - bagaimana tidak ditandai sebagai spam.

Jadi dalam hal memberikan umpan balik spamassassin pada panggilan yang salah:

  1. Apakah ada cara untuk melakukan ini dari dalam klien email (misalnya: Thunderbird)

  2. Apakah ada cara untuk melakukan ini melalui baris perintah di server surat?

Saya ingin membuat proses semudah mungkin, tetapi apa pun yang menyelesaikan pekerjaan.

Detail dari SpamAssassin tentang email:

 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

Jelas penyebab utamanya adalah baris subjek all-caps SUBJ_ALL_CAPS dan MIME_HTML_ONLY (saya kira, tidak ada alternatif teks).

Email itu untuk konfirmasi pemesanan penerbangan dan subjeknya tampak seperti ini:

 Subject: JENNINGS/NICHOLAS KOSSOW MR 24 JAN MOF DPS

Tajuk:

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
sumber
Langkah pertama harus bertanya mengapa itu ditandai sebagai spam. Tanpa itu kami dapat membuat saran umum, menunjukkan kepada Anda cara mengubah mesin Bayesian untuk ham, tetapi kami tidak dapat membantu secara khusus mengatasi aturan yang salah sasaran. Silakan tambahkan ke pertanyaan Anda beberapa baris pertama dari badan email dan semua tajuk .
MadHatter
@MadHatter terima kasih atas sarannya, perbarui pertanyaannya.
Nick Jennings
Anda tidak mengatakan berapa skor Bayesian yang didapat. Apakah Anda menggunakan mesin Bayesian?
MadHatter
Skornya adalah 5.0 .. dimasukkan ke dalam subjek: ***** SPAM 5.0 *****
Nick Jennings
1
Itulah skor total SA, bukan skor Bayesian yang berkontribusi. Tapi jangan khawatir, dari sisa apa yang Anda tulis, sepertinya mesin Bayesian Anda tidak menyala karena Anda belum pernah melatihnya, dan Anda bermaksud mengatasinya!
MadHatter

Jawaban:

22

Ada saran khusus dan umum yang mungkin berguna dalam kasus ini.

Spesifik

Masalah mendasar di sini adalah bahwa Garuda Airlines, memberkati kaus kaki katun kecil mereka, mengirim email konfirmasi yang mengandung banyak ciri khas spam. Baris subjeknya SANGAT SHOUTY, mereka mengirim email HTML saja yang berisi cukup banyak gambar dan teks yang sangat sedikit, amplop-sender ( [email protected]) jelas sekali bukan mesin yang dibangun mesin, dan penyedia email untuk sistem konfirmasi mereka (outsourcing) (amadeus.com) memiliki catatan SPF yang tidak berguna (terlepas dari semua saran kami yang bertentangan , beberapa orang keliru berpikir ada nilai dalam catatan yang mencantumkan beberapa sistem dan tujuan pengiriman mereka ~all).

Tidak banyak yang dapat Anda lakukan tentang sebagian besar dari ini. Jika Anda ingin memastikan ini melewati, garis di Anda ~/.spamassassin/user_prefsyang mengatakan whitelist_from *@amadeus.comakan menyampaikan pesan-pesan ini kepada Anda. Melangkah lebih jauh dan merusak bobot aturan yang dipicu mungkin merupakan ide yang buruk. Aturan SpamAssassin (SA) dibuat dengan menyaring banyak sekali spam, dan mencari tahu karakteristik apa yang berlaku untuk sebagian besar; Anda cenderung membuka INBOX Anda lebih dari sekadar email konfirmasi Garuda dengan mematikan aturan itu.

Umum

Ini persis seperti situasi yang ditangani mesin Bayesian dengan baik. Ini dirancang untuk menyaring email yang tidak memicu aturan lain tetapi berisi hal-hal yang tidak ingin Anda baca, sementara membantu melalui email yang memicu aturan-aturan itu tetapi berisi hal-hal yang ingin Anda baca.

IIRC, mesin tidak akan melakukan apa pun jika Anda tidak melatihnya. Cara termudah untuk melatihnya adalah dengan memelihara dua folder, disebut (katakanlah) spamdan ham. Ke spamAnda menempatkan salinan email yang berhasil masuk ke INBOX Anda, tetapi Anda tidak ingin; ke hamAnda menempatkan salinan email yang jatuh busuk dari SA tapi kau inginkan, seperti email konfirmasi ini.

Kemudian setiap malam (atau lebih) Anda memiliki tugas cron yang mengatakan

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

memodifikasi jalur yang sesuai. Seiring waktu, ini akan mengajarkan mesin apa yang Anda lakukan, dan tidak, suka membaca. Karena skor Bayesian yang tinggi dapat menambahkan +4,0 poin ke skor SA email, sedangkan yang rendah dapat mengurangi 1,9, mesin yang terlatih dengan baik dapat benar-benar membantu SA membedakan apa yang ingin Anda baca dari apa yang tidak Anda baca - tetapi Anda harus Berusahalah untuk mengajarkannya .

MadHatter
sumber
1
Kedengarannya masuk akal. Saya akan mencoba aliran kotak spam / ham. Terima kasih!
Nick Jennings
1
"berkati kaus kaki katun kecil mereka"
Alex Reinking
@ MadHatter menindaklanjuti ini. Saya mencoba menyeret email SPAM yang diubah Spamassassin ke folder Ham dan ketika saya menjalankan sa-learn --ham ...perintah itu, dikatakan ada 0 email yang bisa dipelajari: Learned tokens from 0 message(s) (0 message(s) examined)... Saya mencoba mengaitkan .emllampiran yang dimasukkan SpamAsssasin ke email asli, ke dalam folder Ham langsung di server, tapi tetap saja, katanya menemukan 0 pesan untuk diproses ...
Nick Jennings
Saya harus menambahkan bahwa saya berurusan dengan email asli sebagai lampiran sesuai report_safe 1pengaturan.
Nick Jennings
@NickJennings maka Anda mungkin harus menggunakan klien yang mampu MIME untuk menghapus email asli, untuk memberi makan sa-learn. Jika itu terlalu menyakitkan, matikan report_safe. Merupakan ide yang baik untuk melatih pembelajar ham dengan hal-hal lain selain hal-hal yang secara keliru diidentifikasi sebagai spam, karena asumsi filter Bayesian terpisah dari SA secara keseluruhan. Saya memberi makan saya semua surat pribadi yang saya terima, karena itulah hal yang paling ingin saya baca.
MadHatter
7

Anda tampaknya menggunakan dovecot. Saya telah menghabiskan beberapa minggu untuk mencari tahu integrasi yang mulus, yang memungkinkan pengguna untuk dengan mudah melatih filter spam di sisi server tanpa harus menyalin email.

Bagian kuncinya adalah plugin Antispam Dovecot. The antispam Plugin memicu pada langkah operasi antara tiga kelompok folder: trash, unsuredan spam. Khususnya, ketika transisi dari apa pun (tetapi spam) ke spamterdeteksi, tindakan pembelajaran spam dipicu dan ketika transisi dari spamke unsureterdeteksi, tindakan pembelajaran ham dipicu.

Ini mendukung berbagai pelatihan backends. Yang sederhana adalah mailtrain, yang hanya menjalankan perintah dan menempatkan surat pada input standar. Konfigurasi untuk itu mungkin terlihat seperti ini:

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
}

Bersama dengan /usr/local/bin/sa-learn-stdin.sh:

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

Konfigurasi mengatakan "Untuk belajar sebagai spam, jalankan /usr/local/bin/sa-learn-stdin.sh -L spamdan pelajari sebagai ham, jalankan /usr/local/bin/sa-learn-stdin.sh -L ham." Argumen dikonfigurasikan oleh antispam_mail_spam, antispam_mail_notspamdan antispam_mail_sendmail_args.

Ini sudah cukup bagus. Jika Anda dapat mengonfigurasi klien Anda untuk memindahkan email yang Anda tandai sebagai spam ke folder spam, ini sudah merupakan integrasi yang cukup otomatis antara klien dan server. Demikian juga, jika Anda mengonfigurasi server untuk menyimpan email yang diklasifikasikan sebagai spam dalam folder spam saat pengiriman (misalnya menggunakan Saringan), pesan akan dipelajari sebagai ham ketika pengguna memindahkannya dari folder Spam.


Untuk meningkatkan integrasi dengan Thunderbird dan KMail, saya menulis tambalan untuk antispam , yang sayangnya tidak mendapatkan umpan balik dari hulu; gunakan dengan risiko Anda sendiri .

Ini menambahkan opsi konfigurasi ke antispam, yang dapat dengan mudah ditambahkan ke pluginbagian dalam konfigurasi dovecot:

   antispam_spam_flags = "Junk;$JUNK"

(Kutipan itu penting untuk mencegah $dari melakukan sesuatu yang lucu.)

Dengan tambalan, antispam juga akan memicu tindakan pembelajaran jika pesan mendapat bendera spam atau kehilangan semua bendera spamnya. Bendera adalah fitur IMAP dan digunakan oleh klien untuk menyimpan bit sisi server informasi. Ternyata, Thunderbird dan KMail menggunakan bendera ini untuk menyimpan status Sampah / Spam pesan.

The Junkbendera diatur oleh Thunderbird bila Anda menandai pesan sebagai sampah. Demikian juga untuk $JUNKbendera dan KMail. Dengan demikian, dengan konfigurasi ini, Anda dapat memicu pembelajaran sisi server dengan menandai email sebagai Sampah / Non-sampah di Thunderbird di KMail.

Klien lain, seperti K9-Mail, masih bermain dengan baik, karena defaultnya adalah memindahkan sampah di folder Spam, yang juga akan memicu antispam.


Anda dapat menerapkan fungsi yang sama, saya pikir, di IMAPSieve . Ini ada di TODO saya, tapi sayangnya saya saat ini tidak memiliki lingkungan siap-pengujian dengan dovecot yang cukup baru.

Jonas Schäfer
sumber
Ini terlihat menarik, pasti akan memeriksanya.
Nick Jennings