מסנן ספאם באירוח עצמי
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 | תקציר של ההודעה, לשרת שתציינו |
סריקות לא נרשמות ביומן ולא נשמרות. אבטחה ופרטיות
התקנה על שרת#
npm install --global spamscannerאו קובץ ההרצה העצמאי, עם Node.js והמודל בפנים:
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:
[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 או Sendmail | spamscanner milter | 7831 |
| Postfix, בלי לדחות דואר אף פעם | spamscanner filter, מסנן תוכן | אין |
| Exim, Haraka או spamc | spamscanner spamd | 783 |
| כל מה שמדבר HTTP | spamscanner http | 7832 |
| לקוח TCP פשוט | spamscanner server | 7830 |
| שרת דואר שנכתב ב-Node.js | import SpamScanner from 'spamscanner' | אין |
השרתים יכולים להוסיף להודעה את הכותרות X-Spam-Flag, X-Spam-Score ו-X-Spam-Status, והספרייה מחזירה את הציון ואת כל בדיקה שהופעלה. מדריכים: מסנן ספאם ל-Postfix, שרתי דואר אחרים ו-ה-HTTP API.
מודלי שפה מקומיים#
מודל שפה הוא אופציונלי וקורא רק מקרים גבוליים: ספאם ברור ו-ham ברור לא מגיעים אליו אף פעם. עם Ollamaתוכנה שמורידה ומריצה מודלי שפה פתוחים על המחשב שלכם, עם HTTP API. הוא רץ על אותו שרת, כך שאף הודעה לא יוצאת ממנו:
ollama pull qwen3.5:4b
spamscanner milter --llm ollama --llm-model qwen3.5:4bqwen3.5:4b רץ על CPU. עם ספק מתארח, מידע אישי מוסר מההודעה לפני שהיא נשלחת. מודלי שפה
אימון על הדואר שלכם#
המודל המצורף אומן על מערכי נתונים ציבוריים. מודל שאומן על הדואר שהשרת שלכם מקבל עובד טוב יותר, ונשאר על השרת:
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 הם אופציונליים ורצים כשירותים נפרדים.