مرشِّح بريد مزعج مستضاف ذاتيًا
يعمل Spam Scanner على خادمك ويُبقي البريد هناك. نموذج المصنِّف داخل الحزمة، ولا توجد قياسات عن بُعد ولا تحقق من التحديثات، وافتراضيًا لا يرسل سوى استعلام DNS عن اسم المضيف في كل رابط.
ما الذي يغادر الخادم#
افتراضيًا، أسماء المضيفين في روابط الرسالة فقط. يُبحث عنها لدى محلِّلات Cloudflare المرشِّحة (1.1.1.2 و1.1.1.3) باستعلامات DNS عادية، ولا يُرسل أي جزء من الرسالة أو عناوينها. ويُوقف --no-cloudflare هذا أيضًا.
كل فحص آخر يستخدم الشبكة يبقى متوقفًا حتى تشغّله:
| الفحص | يُشغَّل بـ | ما الذي يرسله |
|---|---|---|
| SPF, DKIM, DMARC, ARC | --auth | استعلامات DNS عن سجلات المرسل |
| قوائم حظر DNS | --dnsbl, --uribl | عنوان IP للعميل ونطاقات الروابط، كاستعلامات DNS |
| ClamAV | --clamav | المرفقات، إلى clamd الخاص بك |
| نموذج لغوي | --llm | ملخّص للرسالة، إلى الخادم الذي تحدده |
لا تُسجَّل عمليات الفحص ولا تُحفظ. الأمان والخصوصية
التثبيت على خادم#
npm install --global spamscannerأو الملف التنفيذي المستقل، مع Node.js والنموذج مدمجين:
curl -fsSL https://github.com/spamscanner/spamscanner/releases/latest/download/install.sh | bashيتحقق سكربت التثبيت من الملف التنفيذي مقابل ملف SHA256SUMS الخاص بالإصدار قبل تثبيته، ولكل ملف تنفيذي شهادة موقَّعة بمصدر البناء يتحقق منها gh attestation verify. تتوفر ملفات لـ Linux (x64 وarm64) وmacOS وWindows. تحتاج ملفات Linux إلى glibc، لذا ثبّت عبر npm على Alpine. البدء
لا يوجد تحقق من التحديثات. للتحديث، شغّل أمر التثبيت مرة أخرى: كلا الأمرين يثبّت أحدث إصدار.
التشغيل كخدمة#
تستمع خوادم milterمرشِّح البريد: بروتوكول من Sendmail، يستخدمه Postfix أيضًا، يتيح لبرنامج منفصل فحص كل رسالة أثناء جلسة SMTP. وHTTP وTCP وspamd على 127.0.0.1 ما لم يحدد --host غير ذلك. شغّلها بمستخدم بلا صلاحيات، مثلًا تحت systemd:
[Service]
ExecStart=/usr/local/bin/spamscanner milter --port 7831 --auth --subject-tag [SPAM]
User=spamscanner
Group=spamscanner
Restart=on-failure
NoNewPrivileges=yes
ProtectSystem=strict
ProtectHome=yes
PrivateTmp=yesالوحدة الكاملة وإعدادها في دليل Postfix. لا يدعم أي من الخوادم TLS، فللوصول إلى أحدها من جهاز آخر استخدم شبكة خاصة أو نفق SSH أو وكيلًا عكسيًا مع TLS.
ربط خادم بريدك#
| خادم البريد | الأمر | المنفذ |
|---|---|---|
| Postfix أو Sendmail | spamscanner milter | 7831 |
| Postfix دون رفض أي بريد أبدًا | spamscanner filter، مرشِّح محتوى | لا يوجد |
| Exim أو Haraka أو spamc | spamscanner spamd | 783 |
| أي شيء يتحدث HTTP | spamscanner http | 7832 |
| عميل TCP بسيط | spamscanner server | 7830 |
| خادم بريد مكتوب بـ Node.js | import SpamScanner from 'spamscanner' | لا يوجد |
يمكن للخوادم إضافة الترويسات X-Spam-Flag وX-Spam-Score وX-Spam-Status إلى الرسالة، وتعيد المكتبة الدرجة وكل اختبار انطبق. الأدلة: مرشِّح بريد مزعج لـ Postfix، وخوادم بريد أخرى، وواجهة HTTP.
إبقاء النماذج اللغوية محلية#
النموذج اللغوي اختياري ولا يقرأ إلا الحالات الملتبسة: البريد المزعج الواضح والـ hamالبريد المرغوب: عكس البريد المزعج. الواضح لا يصلان إليه أبدًا. مع Ollamaبرنامج ينزّل النماذج اللغوية المفتوحة ويشغّلها على جهازك، مع واجهة HTTP API. يعمل على الخادم نفسه، فلا تغادره أي رسالة:
ollama pull qwen3.5:4b
spamscanner milter --llm ollama --llm-model qwen3.5:4bيعمل qwen3.5:4b على معالج CPU. أما مع مزوّد مستضاف فتُزال البيانات الشخصية من الرسالة قبل إرسالها. النماذج اللغوية
تدريبه على بريدك#
النموذج المرفق مدرَّب على مجموعات بيانات عامة. النموذج المدرَّب على البريد الذي يستقبله خادمك أفضل أداءً، ويبقى على ذلك الخادم:
spamscanner train --spam ~/Maildir/.Junk --ham ~/Maildir/cur --out /var/lib/spamscanner/model.json
SPAMSCANNER_MODEL=/var/lib/spamscanner/model.json spamscanner milterيحتوي ملف النموذج على أعداد مجزّأة للسمات، لا على كلمات أو نصوص رسائل. التدريب
المتطلبات#
Node.js 18 أو أحدث على Linux أو macOS أو Windows، أو لا شيء مع ملف تنفيذي مستقل. ClamAVمحرك مفتوح المصدر لمكافحة الفيروسات. خدمته الخلفية clamd تفحص الملفات المرسلة عبر مقبس. وOllama اختياريان ويعملان كخدمتين مستقلتين.