ทางเลือกแทน SpamAssassin ที่รองรับโปรโตคอล spamd
Spam Scanner ตอบโปรโตคอล spamdดีมอนของ SpamAssassin โปรโตคอลของมันใช้โดย spamc, Exim, Haraka และไคลเอนต์ SpamAssassin อื่น ๆ ของ SpamAssassin ซอฟต์แวร์ที่เขียนไว้สำหรับ SpamAssassin จึงใช้ได้โดยไม่ต้องแก้ไข: spamc, เงื่อนไข spam ของ Exim, ปลั๊กอิน spamassassin ของ Haraka และอื่น ๆ
สลับมาใช้#
sudo systemctl disable --now spamd # or spamassassin
npm install --global spamscanner
spamscanner spamd --port 783 --authspamc -c < message.eml # prints the score, exits 1 for spam
spamc -R < message.eml # the report, one line per test
spamc < message.eml # the message with X-Spam-* headersโปรแกรมตอบ CHECK, SYMBOLS, REPORT, REPORT_IFSPAM, PROCESS, HEADERS, PING และ TELL สำหรับการเรียนรู้เมื่อใช้ --allow-tell การทดสอบแบบ end-to-end ของโครงการรัน spamc ของ SpamAssassin เองกับเซิร์ฟเวอร์นี้
สิ่งที่ยังเหมือนเดิม#
- ส่วนหัว:
X-Spam-Flag,X-Spam-Score,X-Spam-LevelและX-Spam-Statusในรูปแบบของ SpamAssassin กฎ Sieve, procmail และโปรแกรมอีเมลที่มีอยู่จึงทำงานต่อได้ - คะแนนที่มีเกณฑ์ 5 ประกอบจากการทดสอบที่มีชื่อและคะแนน:
BAYES_99,RBL_ZEN,SPF_FAIL,DKIM_PASSเป็นต้น - เปลี่ยนคะแนนของแต่ละการทดสอบได้ด้วยชื่อการทดสอบ
สิ่งที่แตกต่าง#
- ภาษา คำถูกตัดตามกฎของ Unicode ภาษาจีน ญี่ปุ่น และไทยจึงถูกอ่านเป็นคำ แทนที่จะเป็นสตริงยาวสตริงเดียว และการอำพราง เช่น อักขระที่มองไม่เห็น หรือตัวอักษรซีริลลิกในคำภาษาละติน จะถูกแปลงกลับก่อน
- ฟิชชิง โดเมนเลียนแบบ ลิงก์หลอกลวง และชื่อแบรนด์ในชื่อที่แสดงถูกตรวจโดยไม่ต้องมีกฎเพิ่มเติม
- ไฟล์แนบ ถูกระบุจากไบต์ของไฟล์: ไฟล์โปรแกรมที่เปลี่ยนชื่อเป็น
.pdfก็ยังเป็นไฟล์โปรแกรม - โมเดลภาษา กรณีที่ตัดสินยากส่งไปให้โมเดลในเครื่องผ่าน Ollamaโปรแกรมที่ดาวน์โหลดและรันโมเดลภาษาแบบเปิดบนเครื่องของคุณเอง พร้อม HTTP API หรือโมเดลแบบโฮสต์ได้
- Node.js ติดตั้งด้วย
npm installครั้งเดียว หรือใช้ไบนารีแบบสแตนด์อโลน ไม่ต้องดูแลโมดูล Perl หรืออัปเดตกฎ
Spam Scanner ไม่รันไฟล์กฎของ SpamAssassin และรูปแบบฐานข้อมูล Bayes เป็นของตัวเอง: ฝึกจากอีเมลชุดเดิมด้วย spamscanner train
Exim#
spamd_address = 127.0.0.1 783
# in the DATA ACL
warn spam = nobody:true
add_header = X-Spam-Score: $spam_score
defer spam = nobody:true
condition = ${if >={$spam_score_int}{150}}
message = Message rejected as spam