מסנן ספאם באירוח עצמי

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. תחילת העבודה

אין בדיקת עדכונים. כדי לעדכן, הריצו שוב את פקודת ההתקנה: שתי הפקודות מתקינות את הגרסה האחרונה.

הרצה כשירות#

שרתי ה-milter,‏ HTTP,‏ TCP ו-spamd מאזינים ב-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 או ב-reverse proxy עם 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, סורק קבצים שנשלחים דרך socket. ו-Ollama הם אופציונליים ורצים כשירותים נפרדים.

עריכת הדף ב-GitHub · Markdown ·