HTTP API وخادم TCP وspamd

HTTP API#

Shell
spamscanner http --port 7832 --token "$SPAMSCANNER_TOKEN"

يستمع على 127.0.0.1 ما لم يحدّد --host غير ذلك. مع رمز مميز، يحتاج كل طلب باستثناء /health إلى Authorization: Bearer <token>. ضعه خلف وكيل عكسي مع TLS قبل إتاحته خارج الجهاز.

الطريقة والمسارالمتنالإجابة
GET /health{"ok": true, "version": "7.0.0"}
POST /scanالرسالة الخامنتيجة الفحص بصيغة JSON
POST /checkالرسالة الخامالرسالة مع إضافة ترويسات X-Spam-*، بنوع message/rfc822
POST /learn/spamالرسالة الخام{"ok": true, "learned": "spam"}؛ يحتاج إلى رمز مميز
POST /learn/hamالرسالة الخام{"ok": true, "learned": "ham"}؛ يحتاج إلى رمز مميز

تصف معاملات الاستعلام جلسة SMTP:

المعاملالمعنى
ipعنوان IP للعميل
hostnameاسم DNS العكسي الموثَّق له
heloاسمه في HELO أو EHLO
fromمرسل المغلّف
toمستلم؛ كرّره أو افصل بين عدة مستلمين بفواصل
verbose=1/scan: إرجاع قائمة الكلمات والعنوان أيضًا
subjectTag/check: إضافة بادئة إلى عنوان البريد المزعج، مثل %5BSPAM%5D

تُرجع /check أيضًا X-Spam-Flag وX-Spam-Score وX-Spam-Action كترويسات استجابة، فيستطيع العميل أن يقرر دون تحليل الرسالة.

الرسائل الأكبر من 25 ميغابايت تحصل على 413. والفحص الذي يفشل يحصل على 500 مع {"error": "..."}.

Shell
curl -s -X POST -H "Authorization: Bearer $SPAMSCANNER_TOKEN" \
  --data-binary @message.eml "http://127.0.0.1:7832/scan?ip=203.0.113.5&to=bob@example.org" | jq '.isSpam, .score, .tests'

مع --out model.json، يُحفظ ما تعلّمه /learn في ذلك الملف بعد كل طلب. ودونه، يدوم التعلّم حتى إعادة تشغيل الخادم.

من Node.js:

JavaScript
const response = await fetch('http://127.0.0.1:7832/scan?ip=203.0.113.5', {
  method: 'POST',
  headers: {authorization: `Bearer ${process.env.SPAMSCANNER_TOKEN}`},
  body: rawMessage,
});
const {isSpam, score, action} = await response.json();

من Python:

Python
import os, urllib.request

request = urllib.request.Request(
    'http://127.0.0.1:7832/scan',
    data=open('message.eml', 'rb').read(),
    headers={'Authorization': f"Bearer {os.environ['SPAMSCANNER_TOKEN']}"},
    method='POST',
)
print(urllib.request.urlopen(request).read().decode())

خادم TCP#

Shell
spamscanner server --port 7830

أرسل الرسالة الخام، وأغلق جانب الإرسال من الاتصال، واقرأ سطرًا واحدًا من JSON:

Shell
nc -N 127.0.0.1 7830 < message.eml

مع --verbose، تكون الإجابة سطرًا نصيًا بدلًا من ذلك: SPAM 16.3/5.0 BAYES_999,PHISHING_LOOKALIKE_DOMAIN,DECEPTIVE_LINK,FROM_NAME_BRAND أو HAM -2.5/5.0 BAYES_00.

spamd#

Shell
spamscanner spamd --port 783

خادم متوافق مع SpamAssassin لـ spamc وExim وHaraka وغيرها من عملاء SpamAssassin. إعداد Exim وHaraka

الأمرالإجابة
CHECKSpam: True ; 16.3 / 5.0
SYMBOLSالحكم وأسماء الاختبارات التي انطبقت
REPORTالحكم وجدول بالاختبارات والنقاط والأسباب
REPORT_IFSPAMمثل REPORT، مع تقرير فارغ للبريد المرغوب
PROCESSالحكم والرسالة مع ترويسات X-Spam-*
HEADERSالحكم وكتلة ترويسات الرسالة مع ترويسات X-Spam-*
PINGPONG
SKIPلا شيء
TELLيتعلّم بريدًا مزعجًا أو مرغوبًا، مع --allow-tell؛ ويحفظ في --out

تُرفض الطلبات المضغوطة (Compress: zlib).

عدّل هذه الصفحة على GitHub · Markdown ·