Filter spam yang membaca setiap bahasa dan menjelaskan setiap keputusan.

Spam Scanner menangkap spam, phishing, penipuan, dan malware untuk Node.js, baris perintah, dan server email seperti Postfix, Exim, dan Haraka. Setiap hasil mencantumkan tes yang terpicu beserta alasannya.

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

Cara sebuah pesan dinilai

Setiap pemeriksaan menambahkan atau mengurangi poin, dan totalnya yang menentukan. Ambang batas dan poin dapat diubah, dan tidak ada yang berupa kotak hitam: hasilnya menyebutkan setiap tes.

  1. Baca

    Pesan diurai dan teksnya dinormalisasi: huruf bergaya, karakter tak terlihat, dan alfabet tiruan dikembalikan ke bentuk aslinya.

  2. Periksa

    Pemeriksaan pengklasifikasi, tautan, lampiran, autentikasi, daftar blokir, dan aturan berjalan bersamaan, masing-masing dengan batas waktu.

  3. Skor

    Setiap tes menambahkan atau mengurangi poin. Pada skor 5 sebuah pesan dianggap spam; pada 15 server email sebaiknya menolaknya.

  4. Tanya

    Kasus yang meragukan dapat diteruskan ke model bahasa, yang menambahkan hingga 6 poin atau mengurangi hingga 3.

  • di bawah 5terima
  • 5 sampai 15tandai sebagai spam
  • 15 ke atastolak

Lihat dalam 1:58

Cara sebuah pesan diberi skor, cara setiap bahasa dibaca, kapan model bahasa ditanya, dan cara memasangnya ke Postfix, Exim, Haraka, dan Node.js.

Dinarasikan dalam bahasa Inggris, dengan teks bahasa Inggris.

Bingkai judul video: logo Spam Scanner.

Apa yang diperiksa

Kata-kata hanyalah satu sinyal. Tautan, pengirim, lampiran, dan autentikasi sama pentingnya, dan tidak satu pun bergantung pada bahasa pesan.

  • Pengklasifikasi untuk setiap aksara

    Kata, pasangan kata, tautan, pengirim, HTML, dan lampiran, dihitung dan digabungkan seperti cara SpamBayes, dengan jawaban "ragu" yang jujur ketika petunjuknya saling bertentangan.

    Cara memutuskan
  • Setiap bahasa, dengan cermat

    Segmentasi kata Unicode untuk bahasa Tionghoa, Jepang, dan Thai, penyamaran dibongkar, dan tanpa penalti untuk bahasa yang jarang muncul dalam ham pada data model.

    Bahasa
  • Phishing

    Domain tiruan dengan huruf Sirilik atau huruf yang ditukar, tautan yang teksnya menampilkan alamat lain, merek di nama tampilan, dan resolver malware Cloudflare.

    Pemeriksaan phishing
  • Lampiran

    File executable dikenali dari byte-nya, juga yang diganti namanya menjadi .pdf; ekstensi ganda; program di dalam file ZIP; makro Office; PDF aktif; ClamAV.

    Pemeriksaan lampiran
  • Autentikasi

    SPF, DKIM, DMARC, dan ARC, daftar blokir DNS, daftar izin dan daftar tolak, serta aturan untuk email yang memalsukan domain Anda sendiri.

    Autentikasi
  • Model bahasa

    Kasus yang meragukan diteruskan ke model: Ollama di mesin Anda sendiri, atau Claude, ChatGPT, Gemini, dan server apa pun yang kompatibel dengan OpenAI.

    Model bahasa

Setiap tes dan poinnyaCara kerja

Setiap bahasa, tanpa menebak

Kata-kata ditemukan dengan aturan Unicode, sehingga bahasa yang ditulis tanpa spasi tetap berfungsi, dan penyamaran dibongkar sebelum dihitung. Inilah kata-kata yang dihitung pengklasifikasi, dihitung saat halaman ini dibuat.

Bahasa yang jarang muncul dalam ham pada data model bawaan mendapat "ragu", bukan "spam", sehingga email biasa dalam bahasa Arab atau Korea tidak pernah ditandai karena aksaranya. Bahasa

Bahasa Inggris yang disamarkan

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

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

Spasi lebar nol, і Sirilik, angka sebagai pengganti huruf, dan huruf tebal matematis

Tionghoa, tanpa spasi

恭喜您获得一百万元大奖

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

Disegmentasi dengan kamus

Thai, tanpa spasi

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

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

Disegmentasi dengan kamus

Rusia

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

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

Diubah ke huruf kecil dengan aturan Unicode

Terpasang ke server email Anda

Milter untuk Postfix dan Sendmail, server spamd yang kompatibel dengan SpamAssassin untuk spamc, Exim, dan Haraka, filter konten, HTTP API, server TCP, dan pustaka.

Semuanya menambahkan header X-Spam-Flag, X-Spam-Score, X-Spam-Status, dan menghapus header serupa yang dipalsukan pengirim.

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 memeriksa email selama sesi SMTP, sehingga spam yang mencapai ambang tolak ditolak sebelum diterima. Panduan Postfix

Model bahasa untuk kasus yang meragukan

Spam yang jelas dan ham yang jelas tidak pernah sampai ke sana. Ketika skornya tipis atau pengklasifikasi ragu, sebuah model membaca pesan dan menjawab spam, phishing, penipuan, malware, atau ham. Jalankan model di mesin Anda sendiri, atau gunakan yang di-hosting, dengan URL, port, dan autentikasi apa pun.

Instruksi untuk filter AI yang disembunyikan di dalam pesan diberi skor sebagai spam, dan model diberi tahu bahwa pesan tersebut adalah data. Tes end-to-end memeriksanya dengan model sungguhan melalui 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

Bergaris tepi: berjalan di mesin Anda sendiri. Data pribadi dihapus sebelum pesan dikirim ke penyedia yang di-hosting.

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

Model terbuka yang direkomendasikan. Semua rekomendasi

Terukur, dan dapat dilatih

Model bawaan dilatih dengan dataset publik dan diuji pada pesan yang belum pernah dilihatnya. Model yang dilatih dengan email Anda sendiri bekerja lebih baik: latih dari file mbox, Maildir, atau dataset, ukur hasilnya, dan ajari dari tombol "laporkan spam".

Pelatihan

Pesan yang disisihkanPesanPresisiRecallPositif palsu
Inggris6.564100,0%97,1%0,0%
Rusia1.682100,0%97,4%0,0%
Italia1.38998,1%85,3%1,8%
Jerman1.30997,7%76,1%2,2%
Spanyol1.28197,5%82,6%2,6%
Semua13.84099,2%85,1%0,6%

Hanya pengklasifikasi, pada setiap pesan kesepuluh dari data latih publiknya, yang disisihkan. Pesan yang ragu dihitung sebagai terlewat. Bahasa Jerman, Italia, dan Spanyol berasal dari dataset sintetis dengan label yang tidak rapi. Tentang model bawaan

Dibuat untuk Forward Email

Forward Email tidak menyimpan log isi pesan, sehingga tidak dapat mengirim email ke layanan penyaringan luar. Spam Scanner berjalan di server Anda sendiri, tidak mengirim apa pun ke mana pun kecuali dikonfigurasi demikian, dan menjelaskan setiap keputusan tanpa ada orang yang membaca email. Forward Email dan peningkatan versi

Proyek dari Forward Email, layanan email yang berfokus pada privasi.