ตัวกรองสแปมโฮสต์เอง

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

สิ่งที่ออกจากเซิร์ฟเวอร์#

โดยค่าเริ่มต้น มีเพียงชื่อโฮสต์ของลิงก์ในข้อความ ซึ่งจะถูกค้นหาบนตัวแปลงชื่อแบบกรองของ Cloudflare (1.1.1.2 และ 1.1.1.3) ด้วยการสอบถาม DNS ตามปกติ และไม่มีส่วนใดของข้อความหรือที่อยู่ถูกส่งออกไป --no-cloudflare ปิดส่วนนี้ได้ด้วย

การตรวจอื่นทั้งหมดที่ใช้เครือข่ายจะปิดอยู่จนกว่าคุณจะเปิด:

การตรวจเปิดด้วยสิ่งที่ส่ง
SPF, DKIM, DMARC, ARC--authการสอบถาม DNS หาระเบียนของผู้ส่ง
รายการบล็อก DNS--dnsbl, --uriblที่อยู่ IP ของไคลเอนต์และโดเมนของลิงก์ ในรูปการสอบถาม DNS
ClamAV--clamavไฟล์แนบ ไปยัง clamd ของคุณเอง
โมเดลภาษา--llmสรุปของข้อความ ไปยังเซิร์ฟเวอร์ที่คุณระบุ

ไม่มีการบันทึกหรือเก็บผลการสแกน ความปลอดภัยและความเป็นส่วนตัว

ติดตั้งบนเซิร์ฟเวอร์#

Shell
npm install --global spamscanner

หรือใช้ไบนารีแบบสแตนด์อโลนที่มี Node.js และโมเดลอยู่ในตัว:

Shell
curl -fsSL https://github.com/spamscanner/spamscanner/releases/latest/download/install.sh | bash

สคริปต์ติดตั้งตรวจไบนารีกับไฟล์ SHA256SUMS ของรุ่นนั้นก่อนติดตั้ง และไบนารีทุกตัวมีการรับรองแหล่งที่มาของบิลด์แบบลงนาม ซึ่ง gh attestation verify ใช้ตรวจได้ มีไบนารีสำหรับ Linux (x64 และ arm64), macOS และ Windows ไบนารี Linux ต้องใช้ glibc ดังนั้นบน Alpine ให้ติดตั้งด้วย npm เริ่มต้นใช้งาน

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

รันเป็นบริการ#

เซิร์ฟเวอร์ milterMail filter: โปรโตคอลจาก Sendmail ที่ Postfix ใช้ด้วย ให้โปรแกรมแยกต่างหากตรวจแต่ละข้อความระหว่างเซสชัน SMTP, HTTP, TCP และ spamdดีมอนของ SpamAssassin โปรโตคอลของมันใช้โดย spamc, Exim, Haraka และไคลเอนต์ SpamAssassin อื่น ๆ รับฟังที่ 127.0.0.1 เว้นแต่ --host จะกำหนดเป็นอย่างอื่น ให้รันด้วยผู้ใช้ที่ไม่มีสิทธิ์พิเศษ เช่น ภายใต้ systemd:

INI
[Service]
ExecStart=/usr/local/bin/spamscanner milter --port 7831 --auth --subject-tag [SPAM]
User=spamscanner
Group=spamscanner
Restart=on-failure
NoNewPrivileges=yes
ProtectSystem=strict
ProtectHome=yes
PrivateTmp=yes

ยูนิตฉบับเต็มและวิธีตั้งค่า อยู่ในคู่มือ Postfix ไม่มีเซิร์ฟเวอร์ใดรองรับ TLS ดังนั้นหากต้องเข้าถึงจากเครื่องอื่น ให้ใช้เครือข่ายส่วนตัว อุโมงค์ SSH หรือรีเวิร์สพร็อกซีที่มี TLS

เชื่อมต่อเซิร์ฟเวอร์อีเมลของคุณ#

เซิร์ฟเวอร์อีเมลคำสั่งพอร์ต
Postfix หรือ Sendmailspamscanner milter7831
Postfix โดยไม่ปฏิเสธอีเมลเลยspamscanner filter ตัวกรองเนื้อหาไม่มี
Exim, Haraka หรือ spamcspamscanner spamd783
ทุกอย่างที่ใช้ HTTPspamscanner http7832
ไคลเอนต์ TCP แบบง่ายspamscanner server7830
เซิร์ฟเวอร์อีเมลที่เขียนด้วย Node.jsimport SpamScanner from 'spamscanner'ไม่มี

เซิร์ฟเวอร์สามารถเพิ่มเฮดเดอร์ X-Spam-Flag, X-Spam-Score และ X-Spam-Status ลงในข้อความ ส่วนไลบรารีจะคืนคะแนนและทุกการทดสอบที่ทำงาน คู่มือ: ตัวกรองสแปม Postfix, เซิร์ฟเวอร์อีเมลอื่น และ HTTP API

ใช้โมเดลภาษาในเครื่อง#

โมเดลภาษาเป็นตัวเลือกเสริมและอ่านเฉพาะข้อความที่ก้ำกึ่ง สแปมที่ชัดเจนและ hamอีเมลที่ต้องการ: ตรงข้ามกับสแปม ที่ชัดเจนจะไม่ถูกส่งไปถึง เมื่อใช้ Ollamaโปรแกรมที่ดาวน์โหลดและรันโมเดลภาษาแบบเปิดบนเครื่องของคุณเอง พร้อม HTTP API โมเดลจะทำงานบนเซิร์ฟเวอร์เดียวกัน จึงไม่มีข้อความใดออกจากเซิร์ฟเวอร์:

Shell
ollama pull qwen3.5:4b
spamscanner milter --llm ollama --llm-model qwen3.5:4b

qwen3.5:4b ทำงานบน CPU ได้ หากใช้ผู้ให้บริการแบบโฮสต์ ข้อมูลส่วนบุคคลจะถูกลบออกจากข้อความก่อนส่ง โมเดลภาษา

ฝึกด้วยอีเมลของคุณเอง#

โมเดลที่มาพร้อมกันฝึกจากชุดข้อมูลสาธารณะ โมเดลที่ฝึกจากอีเมลที่เซิร์ฟเวอร์ของคุณได้รับจะทำงานได้ดีกว่า และอยู่บนเซิร์ฟเวอร์นั้น:

Shell
spamscanner train --spam ~/Maildir/.Junk --ham ~/Maildir/cur --out /var/lib/spamscanner/model.json
SPAMSCANNER_MODEL=/var/lib/spamscanner/model.json spamscanner milter

ไฟล์โมเดลเก็บจำนวนนับของลักษณะเด่นที่ผ่านการแฮช ไม่ได้เก็บคำหรือเนื้อหาข้อความ การฝึก

ข้อกำหนด#

Node.js 18 ขึ้นไปบน Linux, macOS หรือ Windows หรือไม่ต้องใช้อะไรเลยเมื่อใช้ไบนารีแบบสแตนด์อโลน ClamAVเอนจินแอนติไวรัสโอเพนซอร์ส ดีมอนของมันชื่อ clamd สแกนไฟล์ที่ส่งมาทางซ็อกเก็ต และ Ollama เป็นตัวเลือกเสริมและทำงานเป็นบริการแยก

แก้ไขหน้านี้บน GitHub · Markdown ·