Spamový filtr, který čte každý jazyk a vysvětluje každé rozhodnutí.

Spam Scanner zachytává spam, phishing, podvody a malware pro Node.js, příkazovou řádku a poštovní servery jako Postfix, Exim a Haraka. Každý výsledek uvádí testy, které se spustily, a proč.

npm install -g spamscanner
  • Node.js 18+
  • Milter, spamd, HTTP
  • Ollama, Claude, ChatGPT
  • Žádná telemetrie
$ spamscanner scan message.eml
SPAM  score 16.3 (spam at 5.0, reject at 15.0)  action: reject  language: en
   +6.3  BAYES_999                    Classifier spam probability 99.9%
   +5.0  PHISHING_LOOKALIKE_DOMAIN    "paypa1-secure.top" imitates paypal by swapping characters
   +3.0  DECEPTIVE_LINK               A link shows "https://www.paypal.com/signin" but goes to paypa1-secure.top
   +2.0  FROM_NAME_BRAND              Display name says "paypal" but the message is from paypa1-secure.top
$ echo $?
1

Jak se zpráva posuzuje

Každá kontrola body přidává nebo ubírá a rozhoduje součet. Prahy i body lze změnit a nic není černá skříňka: výsledek uvádí každý test.

  1. Číst

    Zpráva se rozebere a její text normalizuje: stylizovaná písmena, neviditelné znaky a podobně vypadající abecedy se vrátí do původní podoby.

  2. Zkontrolovat

    Klasifikátor a kontroly odkazů, příloh, ověření, blocklistů a pravidel běží současně, každá s časovým limitem.

  3. Skóre

    Každý test body přidává nebo ubírá. Od 5 bodů je zpráva spam, od 15 by ji poštovní server měl odmítnout.

  4. Zeptat se

    Hraniční případy může posoudit jazykový model, který přidá až 6 bodů nebo až 3 ubere.

  • pod 5přijmout
  • 5 až 15označit jako spam
  • 15 a víceodmítnout

Podívejte se za 1:58

Jak se zpráva boduje, jak se čte každý jazyk, kdy se ptá jazykového modelu a jak se zapojí do Postfixu, Eximu, Haraky a Node.js.

Komentář v angličtině, s anglickými titulky.

Úvodní snímek videa: logo Spam Scanneru.

Co kontroluje

Slova jsou jen jeden signál. Odkazy, odesílatelé, přílohy a ověření řeknou stejně mnoho a žádný z nich nezávisí na jazyce zprávy.

  • Klasifikátor pro každé písmo

    Slova, dvojice slov, odkazy, odesílatelé, HTML a přílohy, spočítané a zkombinované stejně jako ve SpamBayes, s poctivým „nejisté“, když si indicie odporují.

    Jak rozhoduje
  • Každý jazyk, pečlivě

    Dělení na slova podle Unicode pro čínštinu, japonštinu a thajštinu, odstraněné maskování a žádná penalizace pro jazyk, ve kterém model viděl málo hamu.

    Jazyky
  • Phishing

    Podobně vypadající domény s cyrilicí nebo prohozenými písmeny, odkazy, jejichž text ukazuje jinou adresu, značky v zobrazovaných jménech a resolver Cloudflare proti malwaru.

    Kontroly phishingu
  • Přílohy

    Spustitelné soubory rozpoznané podle bajtů, i přejmenované na .pdf; dvojité přípony; programy v souborech ZIP; makra Office; aktivní PDF; ClamAV.

    Kontroly příloh
  • Ověření

    SPF, DKIM, DMARC a ARC, DNS blocklisty, seznamy povolených a zakázaných a pravidlo pro poštu, která podvrhuje vaši vlastní doménu.

    Ověření
  • Jazykové modely

    Hraniční případy posoudí model: Ollama na vašem vlastním počítači, nebo Claude, ChatGPT, Gemini a jakýkoli server kompatibilní s OpenAI.

    Jazykové modely

Všechny testy a jejich bodyJak to funguje

Každý jazyk, bez hádání

Slova se hledají podle pravidel Unicode, takže fungují i jazyky psané bez mezer, a maskování se před počítáním odstraní. Toto jsou slova, která klasifikátor počítá, vypočtená při sestavení této stránky.

Jazyk, ve kterém přibalený model viděl málo hamu, dostane „nejisté“ místo „spam“, takže běžná pošta v arabštině nebo korejštině se nikdy neoznačí kvůli svému písmu. Jazyky

Maskovaná angličtina

Claim your fr␣ee prіze: V1agra 𝐅𝐑𝐄𝐄

  • claim
  • your
  • free
  • prize
  • viagra
  • free

Mezera nulové šířky, cyrilické і, číslice místo písmene a matematická tučná písmena

Čínština, bez mezer

恭喜您获得一百万元大奖

  • 恭喜
  • 您
  • 获得
  • 一
  • 百万
  • 元
  • 大奖

Rozdělená podle slovníku

Thajština, bez mezer

ยินดีด้วยคุณได้รับรางวัลหนึ่งล้านบาท

  • ยินดี
  • ด้วย
  • คุณ
  • ได้
  • รับ
  • รางวัล
  • หนึ่ง
  • ล้าน
  • บาท

Rozdělená podle slovníku

Ruština

Поздравляем! Вы выиграли миллион

  • поздравляем
  • вы
  • выиграли
  • миллион

Malá písmena podle pravidel Unicode

Zapojí se do vašeho poštovního serveru

Milter pro Postfix a Sendmail, server spamd kompatibilní se SpamAssassinem pro spamc, Exim a Haraka, obsahový filtr, HTTP API, TCP server a knihovna.

Všechny přidávají hlavičky X-Spam-Flag, X-Spam-Score, X-Spam-Status a odstraňují ty, které odesílatel podvrhl.

Shell
spamscanner milter --port 7831 --auth --subject-tag "[SPAM]"

# /etc/postfix/main.cf
smtpd_milters = inet:127.0.0.1:7831
milter_default_action = accept

Milter kontroluje poštu během relace SMTP, takže spam na prahu odmítnutí se odmítne dřív, než je přijat. Návod pro Postfix

Jazykový model pro hraniční případy

Jasný spam a jasný ham se k němu nikdy nedostanou. Když je skóre těsné nebo si klasifikátor není jistý, model zprávu přečte a odpoví spam, phishing, podvod, malware nebo ham. Spusťte si ho na vlastním počítači, nebo použijte hostovaný, s libovolnou URL, portem a ověřením.

Pokyny pro filtry s AI skryté ve zprávě se bodují jako spam a model dostane informaci, že zpráva jsou data. Testy end-to-end to ověřují proti skutečnému modelu přes Ollama.

  • Ollama
  • LM Studio
  • llama.cpp server
  • vLLM
  • LocalAI
  • Jan
  • OpenAI
  • Anthropic (Claude)
  • Google Gemini
  • Mistral AI
  • Groq
  • OpenRouter
  • DeepSeek
  • xAI
  • Together AI
  • Fireworks AI
  • Cerebras
  • Hugging Face Inference Providers
  • Azure OpenAI
  • Cloudflare Clef
  • Cloudflare Clef Flash
  • TypeSafe Jev
  • TypeSafe Jev on OpenRouter
  • Any decision model server
Shell
ollama pull qwen3.5:4b
spamscanner llm-test --llm ollama --llm-model qwen3.5:4b
spamscanner milter --llm ollama --llm-model qwen3.5:4b

S obrysem: běží na vašem vlastním počítači. Osobní údaje se odstraní dřív, než zpráva odejde k hostovanému poskytovateli.

OllamaHugging FaceLicenceVelikost
qwen3.5:0.8bQwen/Qwen3.5-0.8BApache-2.01.3 GB
gemma4:e2bgoogle/gemma-4-E2B-itApache-2.04.6 GB
qwen3.5:4bQwen/Qwen3.5-4BApache-2.03.3 GB
qwen3.5:9bQwen/Qwen3.5-9BApache-2.06.6 GB
gpt-oss-safeguard:20bopenai/gpt-oss-safeguard-20bApache-2.014 GB

Doporučené otevřené modely. Všechna doporučení

Změřený a trénovatelný

Přibalený model je natrénovaný na veřejných datových sadách a otestovaný na zprávách, které neviděl. Model natrénovaný na vaší vlastní poště je lepší: natrénujte ho ze souborů mbox, adresářů Maildir nebo datových sad, změřte ho a učte ho z tlačítek „nahlásit spam“.

Trénování

Odložené zprávyZprávyPřesnostÚplnostFalešně pozitivní výsledky
angličtina6 564100,0 %97,1 %0,0 %
ruština1 682100,0 %97,4 %0,0 %
italština1 38998,1 %85,3 %1,8 %
němčina1 30997,7 %76,1 %2,2 %
španělština1 28197,5 %82,6 %2,6 %
Vše13 84099,2 %85,1 %0,6 %

Samotný klasifikátor na každé desáté zprávě z veřejných trénovacích dat, odložené stranou. Nejisté zprávy se počítají jako nezachycené. Němčina, italština a španělština pocházejí ze syntetických datových sad s nepřesnými štítky. O přibaleném modelu

Vytvořeno pro Forward Email

Forward Email neuchovává žádné záznamy o obsahu zpráv, takže nemohl posílat poštu externí filtrovací službě. Spam Scanner běží na vašich vlastních serverech, nikam nic neposílá, pokud to nenastavíte, a vysvětluje každé rozhodnutí, aniž by poštu četl člověk. Forward Email a přechod na novou verzi

Projekt služby Forward Email, e-mailové služby zaměřené na soukromí.