Spamassassin ตั้งค่าสถานะบางอย่างว่าเป็นสแปมที่ไม่ใช่สแปม ฉันจะบอกได้อย่างไร


14

นี่เป็นคำถามทั่วไปเกี่ยวกับการฝึกอบรมผู้ส่งสแปม ฉันมีเซิร์ฟเวอร์อีเมลที่เพิ่งตั้งค่าใหม่ซึ่งกรองจดหมายขาเข้าผ่าน spamassassin เมื่อเร็ว ๆ นี้ฉันได้รับการจองเที่ยวบินที่ถูกตั้งค่าสถานะว่าเป็นสแปม (คะแนน 5) และต้องการบอกสแปมเมล์ว่าไม่ใช่สแปม (บางทีการทำเช่นนี้จะส่งอีเมลซ้ำโดยไม่มีส่วนหัวสแปมassassinที่แก้ไขหรือไม่)

ฉันได้ลองค้นหาไปรอบ ๆ แล้วและกำลังค้นหาสิ่งต่าง ๆ เกี่ยวกับการรับ spamassassin เพื่อทำเครื่องหมายข้อความว่าเป็นจดหมายขยะ (และไม่เกี่ยวกับการแก้ไขปัญหาที่ผิดพลาด) หรือสำหรับคนที่เขียนอีเมล - จะไม่ถูกตั้งค่าสถานะว่าเป็นสแปม

ดังนั้นเกี่ยวกับการให้ข้อเสนอแนะสแปมassassinในการโทรผิด:

  1. มีวิธีการทำเช่นนี้จากในไคลเอนต์อีเมล (ตัวอย่างเช่น: Thunderbird)

  2. มีวิธีการทำเช่นนี้ผ่านทางบรรทัดคำสั่งบนเซิร์ฟเวอร์อีเมลหรือไม่

ฉันต้องการทำให้กระบวนการคล่องแคล่วที่สุดเท่าที่จะทำได้ แต่อะไรก็ตามที่ทำงานเสร็จ

รายละเอียดจาก SpamAssassin เกี่ยวกับอีเมล:

 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

ชัดเจนว่าผู้กระทำผิดหลักคือหัวเรื่องย่อยตัวพิมพ์ใหญ่ SUBJ_ALL_CAPS และ MIME_HTML_ONLY (ฉันเดาว่าไม่มีตัวเลือกข้อความ)

อีเมลนี้ใช้สำหรับการยืนยันการจองเที่ยวบินและหัวเรื่องมีลักษณะเช่นนี้:

 Subject: JENNINGS/NICHOLAS KOSSOW MR 24 JAN MOF DPS

ส่วนหัว:

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

ขั้นตอนแรกต้องถามว่าทำไมจึงถูกตั้งค่าสถานะเป็นสแปม หากไม่มีเราสามารถให้คำแนะนำทั่วไปแสดงวิธีปรับแต่งเครื่องยนต์ Bayesian สำหรับแฮม แต่เราไม่สามารถช่วยแก้ไขกฎเฉพาะที่ผิดพลาดได้ โปรดเพิ่มคำถามของคุณสองสามบรรทัดแรกของเนื้อหาอีเมลและส่วนหัวทั้งหมด
MadHatter

@ MadHatter ขอบคุณสำหรับคำแนะนำปรับปรุงคำถามให้เหมาะสม
Nick Jennings

คุณไม่ได้พูดในสิ่งที่ Bayesian ให้คะแนน คุณใช้เครื่องยนต์แบบเบย์หรือไม่?
MadHatter

คะแนนเป็น 5.0 .. มันถูกแทรกเข้าไปในหัวเรื่อง: ***** สแปม 5.0 *****
นิคเจนนิงส์

1
นั่นคือคะแนน SA ทั้งหมดไม่ใช่คะแนน Bayesian ที่สนับสนุน แต่ไม่ต้องกังวลจากส่วนที่เหลือของสิ่งที่คุณเขียนดูเหมือนว่าเครื่องยนต์ Bayesian ของคุณไม่ได้ยิงเพราะคุณไม่เคยฝึกมาก่อนและคุณตั้งใจจะจัดการเรื่องนั้น!
MadHatter

คำตอบ:


22

มีคำแนะนำเฉพาะและทั่วไปที่อาจเป็นประโยชน์ในกรณีนี้

โดยเฉพาะ

ปัญหาพื้นฐานที่นี่คือ Garuda Airlines ให้ศีลให้พรถุงเท้าผ้าฝ้ายตัวเล็ก ๆ ของพวกเขากำลังส่งอีเมลยืนยันที่มีเครื่องหมายของสแปมจำนวนมาก หัวเรื่องคือ VERY SHOUTY พวกเขาส่งอีเมลแบบ HTML เท่านั้นซึ่งมีรูปภาพจำนวนมากและข้อความน้อยมากผู้ส่งซองจดหมาย ( tdsfndprd@amadeus.com) ค่อนข้างชัดเจนว่าเป็น nonce ที่สร้างด้วยเครื่องจักรและผู้ให้บริการอีเมลสำหรับระบบการยืนยัน (outsourced) (amadeus.com) มีระเบียน SPF ที่ไร้ประโยชน์ (แม้จะมีคำแนะนำทั้งหมดของเราในทางตรงกันข้ามบางคนเข้าใจผิดคิดว่ามีค่าในบันทึกที่แสดงรายการของระบบการส่งและสิ้นสุดบางส่วน~all )

มีไม่มากที่คุณสามารถทำได้เกี่ยวกับเรื่องนี้ หากคุณต้องการให้แน่ใจว่าสิ่งเหล่านี้ผ่านไปได้บรรทัดในข้อความ~/.spamassassin/user_prefsที่แจ้งว่าwhitelist_from *@amadeus.comจะส่งข้อความเหล่านี้ถึงคุณ การเพิ่มเติมและแก้ไขกฎน้ำหนักที่ถูกทริกเกอร์อาจเป็นความคิดที่ไม่ดี ชุดกฎ SpamAssassin (SA) สร้างขึ้นโดยการกรองสแปมจำนวนมากและใช้คุณลักษณะที่เหมาะสมกับส่วนใหญ่ คุณมีโอกาสที่จะเปิดกล่องจดหมายของคุณมากกว่าแค่อีเมลยืนยันจาก Garuda โดยปิดกฎเหล่านั้น

ทั่วไป

นี่เป็นสถานการณ์ประเภทที่เครื่องยนต์ Bayesian จัดการได้ดี มันถูกออกแบบมาเพื่อกรองอีเมลที่ไม่ได้เรียกกฎระเบียบอื่น ๆ แต่มีสิ่งที่คุณไม่ต้องการที่จะอ่านในขณะที่การให้ความช่วยเหลือผ่านทางอีเมลที่ไม่ไกกฎเหล่านั้น แต่มีสิ่งที่คุณไม่ต้องการที่จะอ่าน

IIRC เครื่องยนต์จะไม่ทำอะไรเลยถ้าคุณไม่ได้ฝึกฝน วิธีที่ง่ายที่สุดในการฝึกอบรมก็คือการรักษาสองโฟลเดอร์ที่เรียกว่า (พูด) และspam hamเข้าไปในspamที่คุณใส่สำเนาของอีเมลที่ทำให้มันเป็นกล่องจดหมายของคุณ แต่คุณไม่ได้ต้องการ; เข้าไปในhamที่คุณใส่สำเนาของอีเมลที่ลดลงเหม็นของ SA แต่คุณไม่ต้องการเช่นอีเมลยืนยันนี้

จากนั้นทุกคืน (หรือมากกว่านั้น) คุณมีงาน cron ที่บอกว่า

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

ปรับเปลี่ยนเส้นทางให้สอดคล้อง เมื่อเวลาผ่านไปสิ่งนี้จะสอนเครื่องยนต์ในสิ่งที่คุณทำและไม่ชอบอ่าน เนื่องจากคะแนนแบบเบย์ที่สูงสามารถเพิ่ม +4.0 คะแนนให้กับคะแนน SA ของอีเมลในขณะที่คะแนนต่ำสามารถลบ 1.9 ได้เครื่องยนต์ที่ผ่านการฝึกอบรมมาอย่างดีสามารถช่วย SA แยกแยะสิ่งที่คุณต้องการอ่านได้จากสิ่งที่คุณไม่ต้องการ แต่คุณต้อง ความพยายามในการที่จะสอนให้มัน


1
ฟังดูสมเหตุสมผล ฉันจะลองใช้กล่องจดหมายสแปม / แฮมอีกครั้ง ขอบคุณ!
Nick Jennings

1
"อวยพรถุงเท้าผ้าฝ้ายตัวเล็ก ๆ ของพวกเขา"
Alex Reinking

@ MadHatter ติดตามเรื่องนี้ ฉันพยายามลากอีเมลขยะที่ Spamassassin เปลี่ยนแปลงไปในโฟลเดอร์ Ham และเมื่อฉันรันsa-learn --ham ...คำสั่งก็พบว่ามีอีเมลทั้งหมด 0 รายการที่จะเรียนรู้จาก: Learned tokens from 0 message(s) (0 message(s) examined)... ฉันได้ลองใส่.emlเอกสารแนบที่ SpamAsssasin ใส่อีเมลต้นฉบับไว้ในโฟลเดอร์ Ham โดยตรงบนเซิร์ฟเวอร์ แต่ยังคงกล่าวว่าพบ 0 ข้อความไปยังขั้นตอน ...
นิคเจนนิงส์

ฉันควรเพิ่มฉันกำลังจัดการกับอีเมลต้นฉบับเป็นไฟล์แนบตามการreport_safe 1ตั้งค่า
Nick Jennings

@NickJennings แล้วคุณอาจจะต้องใช้ไคลเอ็นต์ MIME sa-learnที่มีความสามารถที่จะตัดออกอีเมลเดิมฟีดไป report_safeหากที่มากเกินไปของความเจ็บปวดให้ปิด มันเป็นความคิดที่ดีที่จะฝึกผู้เรียนแฮมกับสิ่งอื่น ๆ นอกเหนือจากสิ่งที่ถูกระบุว่าเป็นสแปมโดยไม่เหมาะสมเนื่องจากสมมติฐานของตัวกรอง Bayesian นั้นแยกออกจาก SA โดยรวม ฉันป้อนจดหมายส่วนตัวทั้งหมดที่ฉันได้รับเนื่องจากเป็นสิ่งที่ฉันต้องการอ่านมากที่สุด
MadHatter

7

คุณดูเหมือนจะใช้ dovecot ฉันใช้เวลาสองสามสัปดาห์ในการพยายามผสานรวมอย่างราบรื่นซึ่งช่วยให้ผู้ใช้สามารถฝึกอบรมตัวกรองสแปมด้านเซิร์ฟเวอร์ได้โดยไม่ต้องคัดลอกอีเมล

ส่วนสำคัญคือปลั๊กอินAntispam Dovecot ทริกเกอร์ปลั๊กอินป้องกันสแปมในการย้ายการดำเนินงานระหว่างสามกลุ่มโฟลเดอร์trash, และunsure spamโดยเฉพาะเมื่อมีการเปลี่ยนแปลงจากอะไร ( แต่spam) จะspamมีการตรวจพบสแปมการดำเนินการการเรียนรู้ที่จะถูกเรียกและเมื่อมีการเปลี่ยนแปลงจากspamที่จะunsureมีการตรวจพบการกระทำการเรียนรู้แฮมถูกเรียก

สนับสนุนแบ็กเอนด์การฝึกอบรมที่แตกต่างกัน คำสั่งที่เรียบง่ายคือmailtrainซึ่งเรียกใช้งานคำสั่งและวางเมลบนอินพุตมาตรฐาน การกำหนดค่าที่อาจมีลักษณะเช่นนี้:

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
}

ร่วมกับ/usr/local/bin/sa-learn-stdin.sh:

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

การกำหนดค่าบอกว่า "หากต้องการเรียนรู้ว่าเป็นสแปมให้เรียกใช้/usr/local/bin/sa-learn-stdin.sh -L spamและเรียนรู้ด้วยวิธีแฮม/usr/local/bin/sa-learn-stdin.sh -L ham" ข้อโต้แย้งที่มีการกำหนดค่าโดยantispam_mail_spam, และantispam_mail_notspamantispam_mail_sendmail_args

มันค่อนข้างดีอยู่แล้ว หากคุณสามารถกำหนดค่าไคลเอนต์ของคุณเพื่อย้ายอีเมลที่คุณทำเครื่องหมายว่าเป็นสแปมลงในโฟลเดอร์สแปมนี่เป็นการรวมอัตโนมัติระหว่างไคลเอนต์กับเซิร์ฟเวอร์อยู่แล้ว ในทำนองเดียวกันหากคุณกำหนดค่าเซิร์ฟเวอร์เพื่อจัดเก็บอีเมลที่จัดเป็นสแปมในสแปมไฟล์เมื่อส่งมอบ (เช่นใช้ Sieve) ข้อความจะได้รับการเรียนรู้เหมือนแฮมเมื่อผู้ใช้ย้ายออกจากโฟลเดอร์สแปม


เพื่อปรับปรุงการรวมเข้ากับธันเดอร์เบิร์ดและ KMail ฉันเขียนแพตช์สำหรับ antispamซึ่งน่าเสียดายที่ไม่ได้รับข้อเสนอแนะจากอัปสตรีม ใช้ที่มีความเสี่ยงของคุณเอง

มันเพิ่มตัวเลือกการกำหนดค่าให้กับ antispam ซึ่งสามารถเพิ่มไปยังpluginส่วนในการกำหนดค่า dovecot:

   antispam_spam_flags = "Junk;$JUNK"

(คำพูดมีความสำคัญเพื่อป้องกันไม่ให้$ทำอะไรตลก ๆ )

ด้วยแพทช์, แอนตี้สแปมจะยังเรียกการกระทำการเรียนรู้ว่าข้อความที่ได้รับธงสแปมหรือ looses ทั้งหมดของธงสแปม การตั้งค่าสถานะเป็นคุณลักษณะ IMAP และใช้โดยไคลเอนต์เพื่อเก็บบิตของเซิร์ฟเวอร์ข้อมูลฝั่ง ปรากฎว่า Thunderbird และ KMail ใช้ค่าสถานะเหล่านี้เพื่อเก็บสถานะขยะ / สแปมของข้อความ

Junkธงถูกกำหนดโดยธันเดอร์เบิร์ดเมื่อคุณทำเครื่องหมายที่ข้อความเป็นขยะ ในทำนองเดียวกันสำหรับการ$JUNKตั้งค่าสถานะ KMail ดังนั้นด้วยการกำหนดค่านี้คุณสามารถทริกเกอร์การเรียนรู้ฝั่งเซิร์ฟเวอร์โดยการตั้งค่าสถานะอีเมลเป็นขยะ / ไม่เป็นขยะใน Thunderbird ใน KMail

ไคลเอนต์อื่น ๆ เช่น K9-Mail ยังคงเล่นได้ดีเพราะมีค่าเริ่มต้นคือการย้ายขยะในโฟลเดอร์สแปมซึ่ง antispam จะเปิดใช้งานเช่นกัน


คุณสามารถใช้ฟังก์ชันเดียวกันผมคิดว่าในIMAPSieve นี่เป็นสิ่งที่ต้องทำของฉัน แต่น่าเสียดายที่ตอนนี้ฉันไม่มีสภาพแวดล้อมที่พร้อมทดสอบพร้อมกับนกพิราบที่เพิ่งผ่านมาอย่างเพียงพอ


มันดูน่าสนใจและจะมองมันอย่างแน่นอน
Nick Jennings
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.