مرشِّح بريد مزعج يقرأ كل لغة ويشرح كل قرار.
يلتقط Spam Scanner البريد المزعج والتصيّد الاحتيالي والاحتيال والبرمجيات الخبيثة لـ Node.js وسطر الأوامر وخوادم البريد مثل Postfix وExim وHaraka. كل نتيجة تسرد الاختبارات التي انطبقت وسببها.
npm install -g spamscanner
- Node.js 18+
- Milter وspamd وHTTP
- Ollama, Claude, ChatGPT
- بلا قياس عن بُعد
$ 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
كيف يُحكم على الرسالة
كل فحص يضيف نقاطًا أو يحذفها، والمجموع هو الذي يقرر. يمكن تغيير العتبات والنقاط، ولا شيء فيه صندوق أسود: النتيجة تسمّي كل اختبار.
اقرأ
تُحلَّل الرسالة ويُوحَّد نصها: تُلغى الحروف المزخرفة والمحارف غير المرئية والأبجديات المشابهة.
فحص
تعمل فحوص المصنِّف والروابط والمرفقات والمصادقة وقوائم الحظر والقواعد في الوقت نفسه، ولكل منها مهلة زمنية.
الدرجة
كل اختبار يضيف نقاطًا أو يحذفها. عند 5 تكون الرسالة مزعجة؛ وعند 15 ينبغي لخادم البريد رفضها.
سؤال
يمكن إرسال الحالات المتقاربة إلى نموذج لغوي، يضيف حتى 6 نقاط أو يحذف حتى 3.
- أقل من 5قبول
- من 5 إلى 15وسم كمزعج
- 15 فأكثررفض
ما الذي يفحصه
الكلمات إشارة واحدة. الروابط والمرسلون والمرفقات والمصادقة تقول بالقدر نفسه، ولا يعتمد أي منها على لغة الرسالة.
مصنِّف لكل نظام كتابة
الكلمات وأزواج الكلمات والروابط والمرسلون وHTML والمرفقات، تُعدّ وتُجمع بطريقة SpamBayes، مع «غير متأكد» صريح عندما تتعارض القرائن.
كيف يقرركل لغة، بعناية
تقسيم الكلمات وفق Unicode للصينية واليابانية والتايلاندية، وإلغاء التنكّر، ولا عقوبة على لغة لم يرَ فيها النموذج إلا القليل من البريد المرغوب.
اللغاتالتصيّد الاحتيالي
نطاقات مشابهة بحروف سيريلية أو مبدّلة، وروابط يُظهر نصها عنوانًا آخر، وعلامات تجارية في أسماء العرض، ومحلِّل البرمجيات الخبيثة من Cloudflare.
فحوص التصيّد الاحتياليالمرفقات
ملفات تنفيذية تُكتشف من بايتاتها، حتى لو أُعيدت تسميتها إلى .pdf؛ والامتدادات المزدوجة؛ والبرامج داخل ملفات ZIP؛ ووحدات الماكرو في Office؛ وملفات PDF النشطة؛ وClamAV.
فحوص المرفقاتالمصادقة
SPF وDKIM وDMARC وARC، وقوائم حظر DNS، وقوائم السماح والمنع، وقاعدة للبريد الذي ينتحل نطاقك.
المصادقةالنماذج اللغوية
تذهب الحالات المتقاربة إلى نموذج: Ollama على جهازك، أو Claude وChatGPT وGemini وأي خادم متوافق مع OpenAI.
النماذج اللغوية
كل لغة، دون تخمين
تُستخرج الكلمات وفق قواعد Unicode، فتعمل اللغات المكتوبة بلا مسافات، ويُلغى التنكّر قبل العدّ. هذه هي الكلمات التي يعدّها المصنِّف، وقد حُسبت عند بناء هذه الصفحة.
اللغة التي لم يرَ فيها النموذج المرفق إلا القليل من البريد المرغوب تحصل على «غير متأكد» بدل «مزعج»، فلا يُوسم البريد العادي بالعربية أو الكورية بسبب نظام كتابته. اللغات
Claim your fr␣ee prіze: V1agra 𝐅𝐑𝐄𝐄
- claim
- your
- free
- prize
- viagra
- free
مسافة صفرية العرض، وحرف і سيريلي، ورقم مكان حرف، وحروف رياضية عريضة
恭喜您获得一百万元大奖
- 恭喜
- 您
- 获得
- 一
- 百万
- 元
- 大奖
مقسّم باستخدام قاموس
ยินดีด้วยคุณได้รับรางวัลหนึ่งล้านบาท
- ยินดี
- ด้วย
- คุณ
- ได้
- รับ
- รางวัล
- หนึ่ง
- ล้าน
- บาท
مقسّم باستخدام قاموس
Поздравляем! Вы выиграли миллион
- поздравляем
- вы
- выиграли
- миллион
تحويل إلى أحرف صغيرة وفق قواعد Unicode
يندمج مع خادم بريدك
milter لـ Postfix وSendmail، وخادم spamd متوافق مع SpamAssassin لـ spamc وExim وHaraka، ومرشِّح محتوى، وواجهة HTTP API، وخادم TCP، والمكتبة.
كلها تضيف ترويسات X-Spam-Flag, X-Spam-Score, X-Spam-Status، وتحذف أي ترويسات زوّرها المرسل.
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 البريد أثناء جلسة SMTP، فيُرفض البريد المزعج الذي يبلغ عتبة الرفض قبل قبوله. دليل Postfix
spamscanner spamd --port 783 --auth
spamc -c < message.eml # prints 16.3/5.0 and exits 1خادم spamd متوافق مع SpamAssassin: أوقف spamd، وشغّل Spam Scanner على المنفذ نفسه، فيستمر عملاء SpamAssassin في العمل. دليل 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
}المكتبة، لـ smtp-server أو إضافات Haraka أو أي خدمة تتعامل مع البريد. مرجع 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"لأي لغة برمجة وأي خادم يستطيع إرسال طلب HTTP. دليل HTTP API
نموذج لغوي للحالات المتقاربة
البريد المزعج الواضح والبريد المرغوب الواضح لا يصلان إليه أبدًا. عندما تكون الدرجة متقاربة أو يكون المصنِّف غير متأكد، يقرأ نموذج الرسالة ويجيب: مزعج، أو تصيّد احتيالي، أو احتيال، أو برمجيات خبيثة، أو مرغوب. شغّل نموذجًا على جهازك، أو استخدم نموذجًا مستضافًا، على أي عنوان URL ومنفذ وطريقة مصادقة.
التعليمات المخفية في الرسالة والموجّهة إلى مرشِّحات الذكاء الاصطناعي تُحسب بريدًا مزعجًا، ويُبلَّغ النموذج بأن الرسالة بيانات. تتحقق الاختبارات الشاملة من ذلك مقابل نموذج حقيقي عبر 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:4bالمحاط بإطار: يعمل على جهازك. تُحذف البيانات الشخصية قبل إرسال الرسالة إلى مزوّد مستضاف.
| Ollama | الترخيص | الحجم |
|---|---|---|
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 |
نماذج مفتوحة موصى بها. كل التوصيات
مُقاس، وقابل للتدريب
النموذج المرفق مدرَّب على مجموعات بيانات عامة ومختبَر على رسائل لم يرها. النموذج المدرَّب على بريدك أفضل أداءً: درّبه من ملفات mbox أو مجلدات Maildir أو مجموعات البيانات، وقِس أداءه، وعلّمه من أزرار «الإبلاغ عن بريد مزعج».
| الرسائل المحجوزة للاختبار | الرسائل | الدقة | الاستدعاء | الإيجابيات الكاذبة |
|---|---|---|---|---|
| الإنجليزية | 6,564 | 100.0% | 97.1% | 0.0% |
| الروسية | 1,682 | 100.0% | 97.4% | 0.0% |
| الإيطالية | 1,389 | 98.1% | 85.3% | 1.8% |
| الألمانية | 1,309 | 97.7% | 76.1% | 2.2% |
| الإسبانية | 1,281 | 97.5% | 82.6% | 2.6% |
| الكل | 13,840 | 99.2% | 85.1% | 0.6% |
المصنِّف وحده، على كل رسالة عاشرة من بيانات تدريبه العامة، محجوزة للاختبار. الرسائل غير المؤكدة تُحسب فائتة. الألمانية والإيطالية والإسبانية مأخوذة من مجموعات بيانات اصطناعية بتصنيفات غير دقيقة. عن النموذج المرفق
صُنع لـ Forward Email
لا تحتفظ Forward Email بأي سجلات لمحتوى الرسائل، ولذلك لم يكن بإمكانها إرسال البريد إلى خدمة ترشيح خارجية. يعمل Spam Scanner على خوادمك، ولا يرسل شيئًا إلى أي مكان ما لم يُضبط على ذلك، ويشرح كل قرار دون أن يقرأ أي شخص البريد. Forward Email والترقية
مشروع من Forward Email، خدمة البريد الإلكتروني التي تركّز على الخصوصية.
