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.
Čí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.
Zkontrolovat
Klasifikátor a kontroly odkazů, příloh, ověření, blocklistů a pravidel běží současně, každá s časovým limitem.
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.
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
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 rozhodujeKaž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.
JazykyPhishing
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 phishinguPří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řílohOvěř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
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
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
恭喜您获得一百万元大奖
- 恭喜
- 您
- 获得
- 一
- 百万
- 元
- 大奖
Rozdělená podle slovníku
ยินดีด้วยคุณได้รับรางวัลหนึ่งล้านบาท
- ยินดี
- ด้วย
- คุณ
- ได้
- รับ
- รางวัล
- หนึ่ง
- ล้าน
- บาท
Rozdělená podle slovníku
Поздравляем! Вы выиграли миллион
- поздравляем
- вы
- выиграли
- миллион
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.
spamscanner milter --port 7831 --auth --subject-tag "[SPAM]"
# /etc/postfix/main.cf
smtpd_milters = inet:127.0.0.1:7831
milter_default_action = acceptMilter 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
spamscanner spamd --port 783 --auth
spamc -c < message.eml # prints 16.3/5.0 and exits 1Server spamd kompatibilní se SpamAssassinem: zastavte spamd, spusťte Spam Scanner na stejném portu a klienti SpamAssassinu budou dál fungovat. Návod pro spamd
import SpamScanner from 'spamscanner';
const scanner = new SpamScanner({authentication: true});
const result = await scanner.scan(stream, {session});
if (result.action === 'reject') {
// refuse with a 4xx or 5xx reply
}Knihovna pro smtp-server, pluginy Haraky nebo jakoukoli službu, která zpracovává poštu. Reference API
spamscanner http --port 7832 --token "$TOKEN"
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
--data-binary @message.eml "http://127.0.0.1:7832/scan?ip=203.0.113.5"Pro jakýkoli jazyk a jakýkoli server, který umí poslat požadavek HTTP. Návod k HTTP API
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
ollama pull qwen3.5:4b
spamscanner llm-test --llm ollama --llm-model qwen3.5:4b
spamscanner milter --llm ollama --llm-model qwen3.5:4bS obrysem: běží na vašem vlastním počítači. Osobní údaje se odstraní dřív, než zpráva odejde k hostovanému poskytovateli.
| Ollama | Licence | Velikost |
|---|---|---|
qwen3.5:0.8b | Apache-2.0 | 1.3 GB |
gemma4:e2b | Apache-2.0 | 4.6 GB |
qwen3.5:4b | Apache-2.0 | 3.3 GB |
qwen3.5:9b | Apache-2.0 | 6.6 GB |
gpt-oss-safeguard:20b | Apache-2.0 | 14 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“.
| Odložené zprávy | Zprávy | Přesnost | Úplnost | Falešně pozitivní výsledky |
|---|---|---|---|---|
| angličtina | 6 564 | 100,0 % | 97,1 % | 0,0 % |
| ruština | 1 682 | 100,0 % | 97,4 % | 0,0 % |
| italština | 1 389 | 98,1 % | 85,3 % | 1,8 % |
| němčina | 1 309 | 97,7 % | 76,1 % | 2,2 % |
| španělština | 1 281 | 97,5 % | 82,6 % | 2,6 % |
| Vše | 13 840 | 99,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í.
