שורת הפקודה

Text
spamscanner <command> [options]
פקודהמה היא עושה
scan [file|-]סורקת הודעה מקובץ או מהקלט הסטנדרטי
filter -f <sender> -- <recipients...>מסנן תוכן ל-Postfix: סורקת את הקלט הסטנדרטי, מוסיפה כותרות ומעבירה הלאה
milterMilter ל-Postfix ול-Sendmail, פורט 7831
httpHTTP API, פורט 7832
serverשרת TCP פשוט, פורט 7830
spamdשרת spamd תואם SpamAssassin, פורט 783
trainמאמנת מודל מקובצי mbox, מתיקיות Maildir, מתיקיות או ממאגרי נתונים
evalמודדת מודל על דואר מתויג
learn spam|ham [file|-] --model <file>מלמדת מודל הודעה אחת
llm-testבודקת את הגדרות מודל השפה עם שלוש הודעות לדוגמה
modelsמציגה מודלים פתוחים מומלצים
version, help

scan#

Shell
spamscanner scan message.eml
spamscanner scan - < message.eml
spamscanner scan message.eml --json
spamscanner scan message.eml --headers > tagged.eml
spamscanner scan message.eml --subject-tag "[SPAM]" > tagged.eml
אפשרותמשמעות
--jsonמדפיסה את התוצאה המלאה כ-JSON
--headersמדפיסה את ההודעה עם כותרות X-Spam-* שנוספו לה
--subject-tag <tag>מוסיפה גם קידומת לנושא של ספאם
--verboseמציגה כל בדיקה, ואת הסימנים החזקים ביותר של המסווג
--threshold <n>הניקוד שבו דואר הוא ספאם (ברירת מחדל 5)
--reject-threshold <n>הניקוד שבו דואר נדחה (ברירת מחדל 15)
--model <file>קובץ מודל במקום המודל המצורף
--no-classifierלא להשתמש במסווג
--config <file>קובץ JSON עם אפשרויות ספרייה
--allow-language <codes>שפות מקובלות, למשל en,de,fr

קודי יציאה: 0 hamדואר רצוי: ההפך מספאם., ‏1 ספאם, 2 שגיאה.

שיחת SMTP#

אפשרותמשמעות
--ip <address>כתובת ה-IP של הלקוח ששלח את ההודעה
--hostname <name>שם ה-DNS ההפוך המאומת של הלקוח
--helo <name>השם שהלקוח מסר ב-HELO או ב-EHLO
--from <address>שולח המעטפה (MAIL FROM)
--to <address>נמען המעטפה; חוזרים עליה עבור כמה נמענים

בדיקות#

אפשרותמשמעות
--authבודקת SPF,‏ DKIM,‏ DMARC ו-ARC (דורשת --ip)
--dnsbl <zone>רשימה שחורה של IP, למשל zen.spamhaus.org; אפשר לחזור עליה
--uribl <zone>רשימה שחורה של דומיינים לקישורים, למשל dbl.spamhaus.org; אפשר לחזור עליה
--dns-server <ip>שרת שמות לבדיקות DNS; אפשר לחזור עליה
--no-cloudflareלא לשאול את שרתי ה-DNS המסננים של Cloudflare על קישורים
--clamav [socket]סורקת קבצים מצורפים עם clamd, ב-socket ברירת המחדל שלו או ב-socket שצוין
--allowlist <value>תמיד לקבל את כתובת ה-IP, הדומיין או הכתובת האלה; אפשר לחזור עליה
--denylist <value>תמיד לדחות את כתובת ה-IP, הדומיין או הכתובת האלה; אפשר לחזור עליה

מודל שפה#

אפשרותמשמעות
--llm <provider>ollama, clef-flash, jev, openai, anthropic ואחרים (רשימה)
--llm-model <name>מודל, למשל qwen3.5:4b או claude-haiku-4-5
--llm-method <method>decision (הסתברות לכל פסק דין, בצעד אחד; ברירת המחדל כשהיא זמינה) או generate (שיטות)
--llm-account <id>מזהה חשבון Cloudflare, עבור clef ו-clef-flash
--llm-url <url>כתובת URL בסיסית, למשל http://10.0.0.5:11434
--llm-host, --llm-port, --llm-path, --llm-protocolמשנות חלק אחד מכתובת ה-URL של הספק
--llm-api-key <key>מפתח API; ראו גם את משתני הסביבה בהמשך
--llm-auth <type>bearer, x-api-key, api-key, basic, header או none
--llm-auth-header <name>הכותרת שבה נשלח המפתח, עם --llm-auth header
--llm-username, --llm-passwordעבור --llm-auth basic
--llm-header "Name: value"כותרת בקשה נוספת; אפשר לחזור עליה
--llm-mode <mode>auto (רק מקרים גבוליים, ברירת המחדל) או always
--llm-timeout <ms>ברירת מחדל 30000
--llm-policy <text>כללים נוספים למודל, למשל „אנחנו אף פעם לא שולחים חשבוניות”
--llm-redact, --no-llm-redactמסירות קודם מידע אישי; מופעל כברירת מחדל לספקים מרוחקים

filter#

מסנן תוכן ל-Postfix. הוא קורא הודעה מהקלט הסטנדרטי, מוסיף כותרות X-Spam-* ומעביר אותה ל-sendmail עם אותה מעטפה.

Shell
spamscanner filter -f "$sender" -- "$recipient"
אפשרותמשמעות
--sendmail <path>ברירת מחדל /usr/sbin/sendmail
--subject-tag <tag>קידומת לנושא של ספאם
--rejectמחזירה לשולח דואר שמגיע לסף הדחייה במקום להעביר אותו הלאה
--discardמשמיטה דואר שמגיע לסף הדחייה במקום להעביר אותו הלאה

קודי היציאה עוקבים אחרי המוסכמות של sendmail, ש-Postfix קורא: 0 נמסר (או הושמט), 64 לא צוינו נמענים, 69 נדחה כספאם (Postfix מחזיר אותו לשולח), 75 כל כישלון, כך ש-Postfix שומר את ההודעה ומנסה שוב מאוחר יותר.

milter, http, server ו-spamd#

Shell
spamscanner milter --port 7831 --reject --subject-tag "[SPAM]"
spamscanner http --port 7832 --token "$SPAMSCANNER_TOKEN"
spamscanner server --port 7830
spamscanner spamd --port 783

פורט 783 הוא הפורט שלקוחות SpamAssassin משתמשים בו כברירת מחדל. פורטים מתחת ל-1024 דורשים root או את היכולת CAP_NET_BIND_SERVICE; אפשר להשתמש בפורט אחר, כמו --port 7833, ולעדכן את הלקוח.

אפשרותמשמעות
--port <n>פורט TCP
--host <ip>הכתובת להאזנה (ברירת מחדל 127.0.0.1)
--socket <path>האזנה על Unix socket במקום זאת
--rejectMilter: דוחה דואר שמגיע לסף הדחייה
--reject-code <n>Milter: ‏451, לנסות שוב מאוחר יותר (ברירת המחדל), או 550
--quarantineMilter: מחזיקה ספאם בהסגר של שרת הדואר
--name <hostname>Milter: השם של השרת הזה ב-Authentication-Results
--token <secret>HTTP: דורשת Authorization: Bearer <secret>; נדרש עבור /learn
--allow-tellspamd: מקבלת בקשות TELL‏ (spamc -L spam) ללמידה
--out <file>HTTP ו-spamd: שומרת את מה שנלמד לקובץ המודל הזה
--subject-tag <tag>Milter ו-spamd: קידומת לנושא של ספאם
--verboseMilter: רושמת ביומן כל סריקה. שרת TCP: עונה בשורת טקסט אחת

אפשרויות הסריקה שלמעלה חלות גם על השרתים. ה-milter, ה-HTTP API, שרת ה-TCP ו-spamd.

train, eval ו-learn#

Shell
spamscanner train --spam ~/Mail/Junk --ham ~/Mail/Archive --out my-model.json
spamscanner eval --model my-model.json --spam test/spam.mbox --ham test/ham.mbox
spamscanner learn spam message.eml --model my-model.json
אפשרותמשמעות
--spam <path>ספאם: קובץ mbox, ‏Maildir או תיקייה של קובצי .eml; אפשר לחזור עליה
--ham <path>Ham, באותו אופן; אפשר לחזור עליה
--dataset <file>קובץ CSV או JSON Lines עם עמודות טקסט ותווית; אפשר לחזור עליה
--text-column <name>, --label-column <name>שמות העמודות, כשהן לא מזוהות
--out <file>לאן לכתוב את המודל (ברירת מחדל spamscanner-model.json)
--mergeלהתחיל מהמודל המצורף (או מ---model) במקום ממודל ריק

learn מעדכנת את קובץ המודל במקום, ויוצרת אותו מהמודל המצורף בפעם הראשונה. אימון

llm-test ו-models#

Shell
spamscanner models
spamscanner llm-test --llm ollama --llm-model qwen3.5:4b

llm-test שולחת למודל הודעה רגילה אחת ושתי הונאות, באנגלית ובאיטלקית, מדפיסה את פסקי הדין שלו, את הזמן שכל אחד לקח, את השיטה שבה השתמשה ואת החומרה, ויוצאת עם 0 רק אם שלושתם נכונים.

קובץ תצורה#

--config file.json (או משתנה הסביבה SPAMSCANNER_CONFIG) טוען אפשרויות ספרייה. אפשרויות שורת הפקודה גוברות על הקובץ.

JSON
{
  "threshold": 6,
  "authentication": true,
  "dnsbl": {"ip": ["zen.spamhaus.org"], "domain": ["dbl.spamhaus.org"]},
  "dns": {"servers": ["127.0.0.1"]},
  "clamav": {"socket": "/var/run/clamav/clamd.ctl"},
  "llm": {"provider": "ollama", "model": "qwen3.5:4b"},
  "scores": {"deceptiveLink": 4, "FROM_NAME_BRAND": 3}
}

משתני סביבה#

משתנהמשמעות
SPAMSCANNER_CONFIGקובץ תצורה
SPAMSCANNER_MODELקובץ מודל שמשמש במקום המודל המצורף
SPAMSCANNER_TOKENאסימון ל-HTTP API
SPAMSCANNER_LLM_API_KEYמפתח API לכל ספק של מודל שפה
CLOUDFLARE_API_TOKEN ו-CLOUDFLARE_ACCOUNT_ID, TYPESAFE_API_KEY, OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, MISTRAL_API_KEY, GROQ_API_KEY, OPENROUTER_API_KEY, DEEPSEEK_API_KEY, XAI_API_KEY, TOGETHER_API_KEY, FIREWORKS_API_KEY, CEREBRAS_API_KEY, HF_TOKEN, AZURE_OPENAI_API_KEYהמפתח של כל ספק
NODE_DEBUG=spamscanner*רישום ביומן לצורכי ניפוי באגים

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