Bộ lọc spam đọc được mọi ngôn ngữ và giải thích mọi quyết định.

Spam Scanner phát hiện spam, phishing, lừa đảo và mã độc cho Node.js, dòng lệnh và các máy chủ thư như Postfix, Exim và Haraka. Mỗi kết quả liệt kê các phép kiểm tra đã kích hoạt và lý do.

npm install -g spamscanner
  • Node.js 18+
  • Milter, spamd, HTTP
  • Ollama, Claude, ChatGPT
  • Không thu thập dữ liệu sử dụng
$ 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

Cách một thư được đánh giá

Mỗi phép kiểm tra cộng hoặc trừ điểm, và tổng điểm quyết định. Có thể thay đổi ngưỡng và điểm, và không có gì là hộp đen: kết quả nêu tên từng phép kiểm tra.

  1. Đọc

    Thư được phân tích và văn bản được chuẩn hóa: chữ cái cách điệu, ký tự vô hình và bảng chữ cái trông giống nhau được hoàn nguyên.

  2. Kiểm tra

    Bộ phân loại và các phép kiểm tra liên kết, tệp đính kèm, xác thực, danh sách chặn và quy tắc chạy đồng thời, mỗi phép có một thời gian chờ.

  3. Điểm

    Mỗi phép kiểm tra cộng hoặc trừ điểm. Từ 5 điểm, thư là spam; từ 15 điểm, máy chủ thư nên từ chối nó.

  4. Hỏi

    Các trường hợp sát nút có thể được chuyển cho một mô hình ngôn ngữ, mô hình này cộng tối đa 6 điểm hoặc trừ tối đa 3 điểm.

  • dưới 5chấp nhận
  • từ 5 đến 15gắn nhãn spam
  • từ 15 trở lêntừ chối

Xem trong 1:58

Cách một thư được chấm điểm, cách mọi ngôn ngữ được đọc, khi nào mô hình ngôn ngữ được hỏi, và cách tích hợp với Postfix, Exim, Haraka và Node.js.

Thuyết minh bằng tiếng Anh, kèm phụ đề tiếng Anh.

Khung tiêu đề của video: logo Spam Scanner.

Những gì nó kiểm tra

Từ ngữ chỉ là một tín hiệu. Liên kết, người gửi, tệp đính kèm và xác thực cũng cho biết nhiều như vậy, và không cái nào phụ thuộc vào ngôn ngữ của thư.

  • Bộ phân loại cho mọi hệ chữ viết

    Từ, cặp từ, liên kết, người gửi, HTML và tệp đính kèm, được đếm và kết hợp theo cách của SpamBayes, với kết quả “không chắc” trung thực khi các dấu hiệu mâu thuẫn.

    Cách nó quyết định
  • Mọi ngôn ngữ, một cách cẩn trọng

    Tách từ theo Unicode cho tiếng Trung, tiếng Nhật và tiếng Thái, hoàn nguyên các kiểu ngụy trang, và không phạt ngôn ngữ mà mô hình ít thấy thư hợp lệ.

    Ngôn ngữ
  • Phishing

    Tên miền giả mạo dùng chữ Kirin hoặc chữ cái bị tráo, liên kết có văn bản hiển thị một địa chỉ khác, thương hiệu trong tên hiển thị, và DNS resolver chặn mã độc của Cloudflare.

    Kiểm tra phishing
  • Tệp đính kèm

    Tệp thực thi được nhận diện qua các byte của chúng, kể cả khi bị đổi tên thành .pdf; đuôi tệp kép; chương trình trong tệp ZIP; macro Office; PDF chứa nội dung chủ động; ClamAV.

    Kiểm tra tệp đính kèm
  • Xác thực

    SPF, DKIM, DMARC và ARC, danh sách chặn DNS, danh sách cho phép và từ chối, và một quy tắc cho thư giả mạo tên miền của chính bạn.

    Xác thực
  • Mô hình ngôn ngữ

    Các trường hợp sát nút được chuyển cho một mô hình: Ollama trên máy của bạn, hoặc Claude, ChatGPT, Gemini và mọi máy chủ tương thích OpenAI.

    Mô hình ngôn ngữ

Mọi phép kiểm tra và điểm của nóCách hoạt động

Mọi ngôn ngữ, không phỏng đoán

Từ được tách theo quy tắc Unicode, nên các ngôn ngữ viết không có khoảng trắng vẫn hoạt động, và các kiểu ngụy trang được hoàn nguyên trước khi đếm. Đây là các từ mà bộ phân loại đếm, được tính khi trang này được tạo.

Với ngôn ngữ mà mô hình đi kèm ít thấy thư hợp lệ, kết quả là “không chắc” thay vì “spam”, nên thư bình thường bằng tiếng Ả Rập hay tiếng Hàn không bao giờ bị đánh dấu chỉ vì chữ viết của nó. Ngôn ngữ

Tiếng Anh bị ngụy trang

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

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

Một khoảng trắng độ rộng bằng không, một chữ і Kirin, một chữ số thay cho chữ cái và các chữ in đậm toán học

Tiếng Trung, không có khoảng trắng

恭喜您获得一百万元大奖

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

Tách từ bằng từ điển

Tiếng Thái, không có khoảng trắng

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

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

Tách từ bằng từ điển

Tiếng Nga

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

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

Chuyển thành chữ thường theo quy tắc Unicode

Tích hợp vào máy chủ thư của bạn

Một milter cho Postfix và Sendmail, một máy chủ spamd tương thích SpamAssassin cho spamc, Exim và Haraka, một content filter, một HTTP API, một máy chủ TCP và thư viện.

Tất cả đều thêm các header X-Spam-Flag, X-Spam-Score, X-Spam-Status và xóa mọi header mà người gửi giả mạo.

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 kiểm tra thư ngay trong phiên SMTP, nên spam đạt ngưỡng từ chối bị chặn trước khi được chấp nhận. Hướng dẫn Postfix

Mô hình ngôn ngữ cho các trường hợp sát nút

Spam rõ ràng và thư hợp lệ rõ ràng không bao giờ đến được nó. Khi điểm sát ngưỡng hoặc bộ phân loại không chắc, một mô hình đọc thư và trả lời spam, phishing, scam, malware hoặc ham. Chạy mô hình trên máy của bạn, hoặc dùng một mô hình được lưu trữ, với bất kỳ URL, cổng và cách xác thực nào.

Các chỉ dẫn giấu trong thư nhằm vào bộ lọc AI được chấm điểm là spam, và mô hình được báo rằng thư chỉ là dữ liệu. Các bài kiểm thử đầu cuối kiểm tra điều này với một mô hình thật qua 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

Có viền: chạy trên máy của bạn. Dữ liệu cá nhân được xóa trước khi thư được gửi đến nhà cung cấp lưu trữ mô hình.

OllamaHugging FaceGiấy phépKích thước
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

Các mô hình mở được đề xuất. Tất cả đề xuất

Được đo lường, và có thể huấn luyện

Mô hình đi kèm được huấn luyện trên các bộ dữ liệu công khai và được kiểm tra trên những thư nó chưa thấy. Một mô hình được huấn luyện trên thư của chính bạn cho kết quả tốt hơn: huấn luyện từ tệp mbox, Maildir hoặc bộ dữ liệu, đo lường nó, và dạy nó từ các nút “báo cáo spam”.

Huấn luyện

Thư được giữ lại để kiểm traThưĐộ chính xác (precision)Độ phủ (recall)Dương tính giả
Tiếng Anh6.564100,0%97,1%0,0%
Tiếng Nga1.682100,0%97,4%0,0%
Tiếng Italy1.38998,1%85,3%1,8%
Tiếng Đức1.30997,7%76,1%2,2%
Tiếng Tây Ban Nha1.28197,5%82,6%2,6%
Tất cả13.84099,2%85,1%0,6%

Chỉ riêng bộ phân loại, trên mỗi thư thứ mười trong dữ liệu huấn luyện công khai của nó, được giữ lại để kiểm tra. Thư không chắc được tính là bỏ sót. Tiếng Đức, tiếng Ý và tiếng Tây Ban Nha lấy từ các bộ dữ liệu tổng hợp có nhãn nhiễu. Về mô hình đi kèm

Xây dựng cho Forward Email

Forward Email không lưu nhật ký nội dung thư, nên không thể gửi thư cho một dịch vụ lọc bên ngoài. Spam Scanner chạy trên máy chủ của bạn, không gửi gì đi đâu trừ khi được cấu hình, và giải thích mọi quyết định mà không cần ai đọc thư. Forward Email và nâng cấp

Một dự án của Forward Email, dịch vụ email chú trọng quyền riêng tư.