her dili okuyan ve her kararını açıklayan bir spam filtresi.

Spam Scanner; Node.js, komut satırı ve Postfix, Exim, Haraka gibi posta sunucuları için spam, kimlik avı, dolandırıcılık ve kötü amaçlı yazılımı yakalar. Her sonuç tetiklenen testleri ve nedenlerini listeler.

npm install -g spamscanner
  • Node.js 18+
  • Milter, spamd, HTTP
  • Ollama, Claude, ChatGPT
  • Telemetri yok
$ 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

Bir ileti nasıl değerlendirilir

Her denetim puan ekler veya düşer ve kararı toplam verir. Eşikler ve puanlar değiştirilebilir; hiçbir şey kara kutu değildir: sonuç her testi adıyla belirtir.

  1. Oku

    İleti ayrıştırılır ve metni normalleştirilir: süslü harfler, görünmez karakterler ve benzer görünümlü alfabeler geri çözülür.

  2. Denetle

    Sınıflandırıcı, bağlantı, ek, kimlik doğrulama, engelleme listesi ve kural denetimleri her biri bir zaman aşımıyla aynı anda çalışır.

  3. Puan

    Her test puan ekler veya düşer. 5 puanda ileti spamdır; 15 puanda posta sunucusunun onu reddetmesi gerekir.

  4. Sor

    Kararsız kalınan durumlar bir dil modeline gönderilebilir; model en fazla 6 puan ekler veya en fazla 3 puan düşer.

  • 5'in altıkabul et
  • 5 ile 15 arasıspam olarak etiketle
  • 15 ve üzerireddet

1:58 içinde görün

Bir iletinin nasıl puanlandığı, her dilin nasıl okunduğu, bir dil modeline ne zaman danışıldığı ve Postfix, Exim, Haraka ve Node.js ile nasıl bütünleştiği.

İngilizce anlatımlı, İngilizce altyazılı.

Videonun başlık karesi: Spam Scanner logosu.

Neleri denetler

Sözcükler sinyallerden yalnızca biridir. Bağlantılar, göndericiler, ekler ve kimlik doğrulama da en az o kadar bilgi verir ve hiçbiri iletinin diline bağlı değildir.

  • Her yazı sistemi için bir sınıflandırıcı

    Sözcükler, sözcük çiftleri, bağlantılar, göndericiler, HTML ve ekler SpamBayes'in yaptığı gibi sayılıp birleştirilir; ipuçları çeliştiğinde dürüst bir "emin değil" sonucu verilir.

    Nasıl karar verir
  • Her dil, özenle

    Çince, Japonca ve Tayca için Unicode sözcük bölütleme, geri çözülen kamuflajlar ve modelin az ham gördüğü bir dil için ceza yok.

    Diller
  • Kimlik avı

    Kiril ya da yer değiştirmiş harflerle yazılmış benzer alan adları, metni başka bir adres gösteren bağlantılar, görünen adlardaki markalar ve Cloudflare'in kötü amaçlı yazılım çözümleyicisi.

    Kimlik avı denetimleri
  • Ekler

    Baytlarından tanınan yürütülebilir dosyalar (adı .pdf olarak değiştirilmiş olsa bile); çift uzantılar; ZIP dosyalarındaki programlar; Office makroları; etkin içerikli PDF'ler; ClamAV.

    Ek denetimleri
  • Kimlik doğrulama

    SPF, DKIM, DMARC ve ARC, DNS engelleme listeleri, izin ve engelleme listeleri ve kendi alan adınızı taklit eden posta için bir kural.

    Kimlik doğrulama
  • Dil modelleri

    Kararsız kalınan durumlar bir modele gider: kendi makinenizde Ollama ya da Claude, ChatGPT, Gemini ve OpenAI uyumlu herhangi bir sunucu.

    Dil modelleri

Tüm testler ve puanlarıNasıl çalışır

Her dil, tahmin yürütmeden

Sözcükler Unicode kurallarıyla bulunur; böylece boşluksuz yazılan diller de çalışır ve kamuflajlar sayımdan önce geri çözülür. Bunlar sınıflandırıcının saydığı sözcüklerdir ve bu sayfa oluşturulurken hesaplanmıştır.

Paketle gelen modelin az ham gördüğü bir dil "spam" yerine "emin değil" sonucunu alır; böylece Arapça veya Korece sıradan posta, yazı sistemi yüzünden asla işaretlenmez. Diller

Kamufle edilmiş İngilizce

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

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

Sıfır genişlikli boşluk, Kiril і harfi, harf yerine rakam ve matematiksel kalın harfler

Çince, boşluksuz

恭喜您获得一百万元大奖

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

Sözlükle bölütlenmiş

Tayca, boşluksuz

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

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

Sözlükle bölütlenmiş

Rusça

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

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

Unicode kurallarına göre küçük harfe çevrilmiş

Posta sunucunuza bağlanır

Postfix ve Sendmail için bir milter; spamc, Exim ve Haraka için SpamAssassin uyumlu bir spamd sunucusu; bir içerik filtresi, bir HTTP API, bir TCP sunucusu ve kitaplık.

Hepsi X-Spam-Flag, X-Spam-Score, X-Spam-Status üst bilgilerini ekler ve göndericinin sahtesini yaptıklarını kaldırır.

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 postayı SMTP oturumu sırasında denetler; bu nedenle reddetme eşiğine ulaşan spam kabul edilmeden önce geri çevrilir. Postfix kılavuzu

Kararsız kalınan durumlar için bir dil modeli

Açıkça spam ve açıkça ham olan iletiler ona hiç ulaşmaz. Puan sınırdaysa veya sınıflandırıcı emin değilse bir model iletiyi okur ve spam, kimlik avı, dolandırıcılık, kötü amaçlı yazılım ya da ham yanıtını verir. Modeli kendi makinenizde çalıştırın ya da herhangi bir URL, bağlantı noktası ve kimlik doğrulamayla barındırılan bir model kullanın.

Bir iletide yapay zekâ filtreleri için gizlenmiş talimatlar spam olarak puanlanır ve modele iletinin yalnızca veri olduğu söylenir. Uçtan uca testler bunu Ollama üzerinden gerçek bir modelle doğrular.

  • 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

Çerçeveli: kendi makinenizde çalışır. Bir ileti barındırılan bir sağlayıcıya gitmeden önce kişisel veriler çıkarılır.

OllamaHugging FaceLisansBoyut
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

Önerilen açık modeller. Tüm öneriler

Ölçülmüş ve eğitilebilir

Paketle gelen model herkese açık veri kümeleriyle eğitilir ve görmediği iletilerle test edilir. Kendi postanızla eğitilen bir model daha iyi sonuç verir: onu mbox dosyalarından, Maildir'lerden veya veri kümelerinden eğitin, ölçün ve "spam bildir" düğmelerinden öğrenmesini sağlayın.

Eğitim

Ayrılmış iletilerİletilerKesinlikDuyarlılıkYanlış pozitifler
İngilizce6.564%100,0%97,1%0,0
Rusça1.682%100,0%97,4%0,0
İtalyanca1.389%98,1%85,3%1,8
Almanca1.309%97,7%76,1%2,2
İspanyolca1.281%97,5%82,6%2,6
Tümü13.840%99,2%85,1%0,6

Yalnızca sınıflandırıcı, herkese açık eğitim verisinden ayrılan her onuncu ileti üzerinde. Emin olunamayan iletiler kaçırılmış sayılır. Almanca, İtalyanca ve İspanyolca, etiketleri gürültülü yapay veri kümelerinden gelir. Paketle gelen model hakkında

Forward Email için geliştirildi

Forward Email ileti içeriğinin günlüğünü tutmaz, bu yüzden postayı dışarıdaki bir filtreleme hizmetine gönderemezdi. Spam Scanner kendi sunucularınızda çalışır, aksi yapılandırılmadıkça hiçbir yere bir şey göndermez ve postayı bir insan okumadan her kararını açıklar. Forward Email ve yükseltme

Gizlilik odaklı e-posta hizmeti Forward Email tarafından geliştirilen bir proje.