Spamszűrő, amely minden nyelven olvas, és minden döntését megindokolja.
A Spam Scanner kiszűri a spamet, az adathalászatot, a csalásokat és a kártevőket Node.js-ben, a parancssorban és olyan levelezőszervereken, mint a Postfix, az Exim és a Haraka. Minden eredmény felsorolja a teljesült teszteket és azok okát.
npm install -g spamscanner
Első lépésekA videó megtekintése (1:58)
- Node.js 18+
- Milter, spamd, HTTP
- Ollama, Claude, ChatGPT
- Nincs telemetria
$ 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
Hogyan születik a döntés egy levélről
Minden ellenőrzés pontot ad hozzá vagy von le, és az összeg dönt. A küszöbök és a pontok módosíthatók, és semmi sem fekete doboz: az eredmény minden tesztet megnevez.
Olvasás
A levél feldolgozásra kerül, a szövege pedig normalizálódik: a díszített betűk, a láthatatlan karakterek és a hasonmás ábécék álcája lekerül.
Ellenőrzés
Az osztályozó, valamint a hivatkozás-, melléklet-, hitelesítés-, tiltólista- és szabályellenőrzések egyszerre futnak, mindegyik saját időkorláttal.
Pontszám
Minden teszt pontot ad hozzá vagy von le. 5 ponttól a levél spam, 15 ponttól a levelezőszervernek vissza kell utasítania.
Kérdezés
A kétes esetek nyelvi modellhez kerülhetnek, amely legfeljebb 6 pontot ad hozzá vagy legfeljebb 3-at von le.
- 5 alattelfogadás
- 5 és 15 közöttspamként jelölés
- 15 vagy többelutasítás
Mit ellenőriz
A szavak csak az egyik jelzést adják. A hivatkozások, a feladók, a mellékletek és a hitelesítés ugyanannyit elárulnak, és egyik sem függ a levél nyelvétől.
Osztályozó minden írásrendszerhez
Szavak, szópárok, hivatkozások, feladók, HTML és mellékletek, a SpamBayes módszerével megszámolva és összesítve, őszinte „bizonytalan” válasszal, ha a jelek ellentmondanak egymásnak.
Hogyan döntMinden nyelv, körültekintően
Unicode-szószegmentálás kínaihoz, japánhoz és thaihoz, az álcázások feloldása, és nincs büntetés olyan nyelvért, amelyen a modell kevés hamet látott.
NyelvekAdathalászat
Cirill vagy felcserélt betűs hasonmás domainek, más címet mutató hivatkozásszövegek, márkanevek a megjelenített nevekben és a Cloudflare kártevőszűrő DNS-feloldója.
Adathalászat-ellenőrzésekMellékletek
Futtatható fájlok felismerése a bájtjaik alapján, .pdf-re átnevezve is; dupla kiterjesztések; programok ZIP-fájlokban; Office-makrók; aktív PDF-ek; ClamAV.
Mellékletek ellenőrzéseHitelesítés
SPF, DKIM, DMARC és ARC, DNS-tiltólisták, engedélyező és tiltó listák, valamint egy szabály a saját domaint hamisító levelekre.
HitelesítésNyelvi modellek
A kétes esetek egy modellhez kerülnek: Ollamához a saját gépen, vagy a Claude-hoz, a ChatGPT-hez, a Geminihez és bármely OpenAI-kompatibilis szerverhez.
Nyelvi modellek
Minden nyelv, találgatás nélkül
A szavakat a Unicode-szabályok határozzák meg, így a szóközök nélkül írt nyelvek is működnek, és az álcázások a számlálás előtt feloldódnak. Ezeket a szavakat számolja az osztályozó; az oldal elkészítésekor kerültek kiszámításra.
Ha a beépített modell egy nyelven kevés hamet (kért levelet) látott, ott „bizonytalan” eredményt ad „spam” helyett, így a hétköznapi arab vagy koreai levelet soha nem jelöli meg az írásrendszere miatt. Nyelvek
Claim your fr␣ee prіze: V1agra 𝐅𝐑𝐄𝐄
- claim
- your
- free
- prize
- viagra
- free
Nulla szélességű szóköz, cirill і, betű helyett számjegy és matematikai félkövér betűk
恭喜您获得一百万元大奖
- 恭喜
- 您
- 获得
- 一
- 百万
- 元
- 大奖
Szótár alapján szegmentálva
ยินดีด้วยคุณได้รับรางวัลหนึ่งล้านบาท
- ยินดี
- ด้วย
- คุณ
- ได้
- รับ
- รางวัล
- หนึ่ง
- ล้าน
- บาท
Szótár alapján szegmentálva
Поздравляем! Вы выиграли миллион
- поздравляем
- вы
- выиграли
- миллион
Kisbetűsítés a Unicode-szabályok szerint
Illeszkedik a levelezőszerverhez
Milter a Postfixhez és a Sendmailhez, SpamAssassin-kompatibilis spamd szerver a spamc, az Exim és a Haraka számára, tartalomszűrő, HTTP API, TCP-szerver és a könyvtár.
Mindegyik X-Spam-Flag, X-Spam-Score, X-Spam-Status fejléceket ad hozzá, és eltávolítja a feladó által hamisítottakat.
spamscanner milter --port 7831 --auth --subject-tag "[SPAM]"
# /etc/postfix/main.cf
smtpd_milters = inet:127.0.0.1:7831
milter_default_action = acceptA milter az SMTP-munkamenet közben ellenőrzi a levelet, így az elutasítási küszöböt elérő spamet még az átvétel előtt visszautasítja. Postfix-útmutató
spamscanner spamd --port 783 --auth
spamc -c < message.eml # prints 16.3/5.0 and exits 1SpamAssassin-kompatibilis spamd szerver: le kell állítani a spamd-t, el kell indítani a Spam Scannert ugyanazon a porton, és a SpamAssassin-kliensek tovább működnek. spamd-útmutató
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
}A könyvtár, az smtp-serverhez, Haraka-bővítményekhez vagy bármely levelet kezelő szolgáltatáshoz. API-referencia
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"Bármely programozási nyelvhez és bármely szerverhez, amely HTTP-kérést tud küldeni. HTTP API-útmutató
Nyelvi modell a kétes esetekre
Az egyértelmű spam és az egyértelmű ham soha nem jut el hozzá. Ha a pontszám a küszöb közelében van, vagy az osztályozó bizonytalan, egy modell elolvassa a levelet, és azt feleli: spam, adathalászat, csalás, kártevő vagy ham. A modell futhat a saját gépen vagy egy szolgáltatónál, bármilyen URL-en, porton és hitelesítéssel.
A levélben az MI-szűrőknek elrejtett utasítások spamnek számítanak, és a modell azt az utasítást kapja, hogy a levél adat. A végpontok közötti tesztek ezt egy valódi modellel, Ollamán keresztül ellenőrzik.
- 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:4bKörvonalas: a saját gépen fut. A személyes adatok eltávolításra kerülnek, mielőtt a levél egy külső szolgáltatóhoz kerül.
| Ollama | Licenc | Méret |
|---|---|---|
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 |
Ajánlott nyílt modellek. Összes ajánlás
Mérhető és tanítható
A beépített modellt nyilvános adatkészleteken tanították, és olyan leveleken tesztelték, amelyeket nem látott. A saját leveleken tanított modell jobban teljesít: tanítható mbox-fájlokból, Maildirekből vagy adatkészletekből, mérhető, és a „spam jelentése” gombokból is tanulhat.
| Félretett levelek | Levelek | Precizitás | Felidézés | Téves pozitívok |
|---|---|---|---|---|
| angol | 6564 | 100,0% | 97,1% | 0,0% |
| orosz | 1682 | 100,0% | 97,4% | 0,0% |
| olasz | 1389 | 98,1% | 85,3% | 1,8% |
| német | 1309 | 97,7% | 76,1% | 2,2% |
| spanyol | 1281 | 97,5% | 82,6% | 2,6% |
| Mind | 13 840 | 99,2% | 85,1% | 0,6% |
Csak az osztályozó, a nyilvános tanítóadatai minden tizedik, félretett levelén. A bizonytalan levelek kihagyottnak számítanak. A német, az olasz és a spanyol adatok zajos címkéjű szintetikus adatkészletekből származnak. A beépített modellről
A Forward Email számára készült
A Forward Email nem naplózza a levelek tartalmát, ezért nem küldhette a leveleket külső szűrőszolgáltatáshoz. A Spam Scanner a saját szervereken fut, beállítás nélkül semmit nem küld sehova, és minden döntését megindokolja anélkül, hogy bárki elolvasná a levelet. Forward Email és frissítés
Az adatvédelemre összpontosító e-mail-szolgáltatás, a Forward Email projektje.
