الرئيسية › أدلة

مراقبة القوائم السوداء: سكربتات وواجهة API وتنبيهات Webhook

تاريخ النشر 2026-11-03 / آخر تحديث 2026-11-03 / الناشر Yuki Nakazawa

مراقبة القوائم السوداء تعني الاستعلام من عدة قوائم حظر قائمة على DNS (DNSBL) عن عناوين IP والنطاقات التي ترسل منها وفق جدول زمني، وإطلاق تنبيه فقط حين تتغير النتيجة. فاكتشاف الإدراج لحظة حدوثه، بدلًا من انتظار بلاغات العملاء عن رسائل مرتدة، يمنحك وقتًا لمعرفة السبب وطلب الإزالة قبل أن يتسع الضرر.

هناك طريقتان عمليتان لذلك: أن تشغّل بنفسك سكربتًا صغيرًا يعتمد على dig وcron، أو أن تعهد بالفحوص إلى خدمة عبر واجهة API وwebhooks. وفي الحالتين، هناك تفصيلتان تحددان ما إذا كانت المراقبة تقول الحقيقة: فالاستعلامات المرسلة عبر المحلّلات (resolvers) العامة ترفضها قوائم مثل Spamhaus وتُنتج إجابات مضلِّلة، ورموز الأخطاء يجب ألا تُحتسب إدراجات أبدًا.

تستند قواعد الجهات المشغّلة للقوائم المذكورة هنا إلى صفحاتها الرسمية كما كانت في نوفمبر 2026. والسياسات تتغير، لذا تحقّق منها قبل الاعتماد على أي إعداد. وللاطلاع على خلفية حول طريقة عمل DNSBL، راجع ما هي DNSBL (RBL).

تحقق مجانًا مما إذا كان نطاقك أو عنوان IP الخاص بك مدرجًا في أي من نحو 345 قائمة سوداء.

حدّد ما ستراقبه والقوائم التي ستستعلم منها

ابدأ بتدوين العناصر التي تحتاج فعلًا إلى مراقبتها.

صيغة الاستعلام معرّفة في RFC 5782. ففي IPv4 تعكس ترتيب الثمانيات (octets) وتضيف منطقة القائمة، فيصبح العنوان 192.0.2.99 في قائمة ما 99.2.0.192 متبوعًا باسم المنطقة. وفي IPv6 يُكتب العنوان في صورة 32 nibble ست عشري بترتيب معكوس. أما النطاق فيُوضع ببساطة قبل المنطقة. والإدخال المدرج يُرجع سجل A، يقع بحسب العرف ضمن 127.0.0.0/8؛ وغير المدرج يُرجع NXDOMAIN. وتذكر RFC أيضًا أن القوائم ينبغي أن تنشر سجل TXT يشرح سبب الإدراج.

راقب عدة قوائم لا قائمة واحدة، لأن الجهات المستقبِلة لا تستخدم جميعها القوائم نفسها. ويختلف معنى كل رمز إرجاع باختلاف الجهة المشغّلة؛ ويتناول دليلنا حول رموز الإرجاع في DNSBL الرموز الشائعة.

لماذا تعطي المحلّلات العامة إجابات خاطئة

من الأخطاء الشائعة في أدوات المراقبة المحلية الصنع إرسال الاستعلامات عبر محلّل عام مثل Google Public DNS (8.8.8.8) أو Cloudflare (1.1.1.1). وتشرح الأسئلة الشائعة الرسمية لدى Spamhaus حول استخدام DNSBL ما يحدث:

التوصية الأولى في الأسئلة الشائعة هي أن تشغّل محلّل DNS خاصًا بك. أما المستخدمون الذين لا بد لهم من البقاء على محلّل عام، فتوجّههم Spamhaus إلى Data Query Service (DQS)؛ راجع شروطها لمعرفة ما هو مجاني. وتقترح الأسئلة الشائعة الأمر dig txt whoami.fastly.net لمعرفة المحلّل الذي تستخدمه فعلًا.

وتضيف RFC 5782 فحصًا مدمجًا للتحقق من السلامة: إذ يجب أن تحتوي قائمة IPv4 على إدخال للعنوان 127.0.0.2 وألا تحتوي على 127.0.0.1، وينبغي للعملاء فحص إدخالات الاختبار هذه دوريًا للتأكد من أن القائمة تعمل. وفي مثال Spamhaus، يُرجع 2.0.0.127.zen.spamhaus.org القيم 127.0.0.10 و127.0.0.4 و127.0.0.2، بينما يُرجع 1.0.0.127.zen.spamhaus.org النتيجة NXDOMAIN. وينبغي للمراقبة أن تختبر ذلك أولًا وأن تتجاهل التشغيل كله إذا فشل الاختبار.

الخيار 1: سكربت يعتمد على dig وcron

إليك سكربتًا مبسطًا يفحص عنوان IPv4 واحدًا في Spamhaus ZEN وSpamCop (bl.spamcop.net، التي توثّق SpamCop أنها تجيب بالقيمة 127.0.0.2 عن عنوان IP المدرج). استبدل العنوان والمناطق بما يخصك.

#!/bin/sh
# استعلم عبر محلّلك التكراري الخاص (مثل unbound على الخادم نفسه)، ولا تستخدم محلّلًا عامًا أبدًا
RESOLVER=127.0.0.1
IP=192.0.2.10
ZONES="zen.spamhaus.org bl.spamcop.net"
REV=$(echo "$IP" | awk -F. '{print $4"."$3"."$2"."$1}')

q() {
  out=$(dig +time=3 +tries=1 @"$RESOLVER" "$1" A) || { echo ERR; return; }
  case "$out" in
    *"status: NOERROR"*) a=$(printf '%s\n' "$out" | awk '$4=="A"{print $5}'); echo "${a:-NX}" ;;
    *"status: NXDOMAIN"*) echo NX ;;
    *) echo ERR ;;
  esac
}

for Z in $ZONES; do
  # إذا لم يُرجع إدخال الاختبار 127.0.0.2 رمز إدراج، فلا تثق بهذا التشغيل
  case "$(q "2.0.0.127.$Z")" in
    127.255.255.*|NX|ERR) echo "$Z ERROR test-entry"; continue ;;
    127.*) ;;
    *) echo "$Z ERROR test-entry"; continue ;;
  esac
  A=$(q "$REV.$Z")
  case "$A" in
    NX)            echo "$Z CLEAN" ;;
    ERR)           echo "$Z ERROR no-answer" ;;
    127.255.255.*) echo "$Z ERROR $A" ;;
    127.*)         echo "$Z LISTED $A" ;;
    *)             echo "$Z ERROR unexpected $A" ;;
  esac
done

ما الذي يفعله السكربت:

ثم دع cron يقارن كل تشغيل بالتشغيل السابق ويرسل بريدًا فقط حين يتغير شيء:

# مثال: التشغيل كل ساعة، وإرسال بريد فقط عند اختلاف المخرجات عن التشغيل السابق
0 * * * * /usr/local/bin/dnsbl-watch.sh > /var/tmp/dnsbl.now 2>&1; cmp -s /var/tmp/dnsbl.now /var/tmp/dnsbl.prev || mail -s "DNSBL status changed" you@example.com < /var/tmp/dnsbl.now; mv /var/tmp/dnsbl.now /var/tmp/dnsbl.prev

الفاصل الزمني كل ساعة مجرد مثال. فـ Spamhaus تتيح الوصول المجاني للاستخدام غير التجاري منخفض الحجم، والعملاء الذين يتجاوزون حد حجم الاستعلامات لديها يحتاجون إلى خيار مدفوع؛ راجع شروط كل قائمة مع ازدياد عدد عناوين IP التي تراقبها. وتنصح الأسئلة الشائعة أيضًا بتجربة الأوامر بضع مرات للتأكد من أن النتائج تبقى كما هي.

الخيار 2: واجهة API الدفعية وwebhooks في DNSBL Checker

إذا كنت تفضّل عدم صيانة محلّل وقواعد تحليل خاصة بكل قائمة، فيمكنك أن تدع خدمة تتولى الفحوص. وفيما يلي واجهة API الإصدار v1 لهذا الموقع، مقتصرةً على ما يفعله تنفيذ الخادم فعليًا. والمرجع موجود في /en/api-docs، وتُصدر المفاتيح في صفحة الأعضاء على /account. ولا يتطلب التسجيل سوى عنوان بريد إلكتروني، وتسجّل الدخول عبر رابط يُرسل إليك بالبريد.

المصادقة والحدود

الفحوص الدفعية

أرسل مصفوفة targets من أسماء النطاقات أو عناوين IP إلى POST /api/v1/batch:

curl -X POST https://dnsblchecker.com/api/v1/batch \
  -H "X-API-Key: $DNSBL_API_KEY" -H "Content-Type: application/json" \
  -d '{"targets":["example.com"]}'

إذا كان أي هدف لا يزال بحاجة إلى فحص، فالاستجابة هي 202 مع batch_id. استعلم من GET /api/v1/batch/{batch_id} كل بضع ثوانٍ حتى تصبح قيمة status هي done (مثال مختصر؛ الأرقام واسم القائمة للتوضيح وليست نتيجة حقيقية):

{
  "batch_id": 1, "status": "done", "created": "2026-11-03 09:10:41", "count": 1, "pending": 0,
  "results": [
    {
      "target": "example.com", "type": "domain",
      "status": "done", "verdict": "listed",
      "checked_at": "2026-11-03 09:12",
      "lists_checked": 80, "listed_count": 1, "error_count": 4,
      "listed_on": [
        { "list": "ZapBL RHSBL", "zone": "rhsbl.zapbl.net", "response": "127.0.0.2" }
      ]
    }
  ]
}

المراقبة عبر Webhook

سجّل target وcallback_url عبر POST /api/v1/monitors. بعد ذلك يُفحص كل هدف مسجّل مرة واحدة يوميًا دون استخدام ذاكرة التخزين المؤقت (ويُجرى الفحص الأول في غضون يوم تقريبًا من التسجيل)، ويُرسل طلب POST بصيغة JSON إلى عنوانك فقط عند الفحص الأول (monitor.initial) وحين ينقلب الحكم بين مدرج ونظيف (monitor.status_changed).

curl -X POST https://dnsblchecker.com/api/v1/monitors \
  -H "X-API-Key: $DNSBL_API_KEY" -H "Content-Type: application/json" \
  -d '{"target":"example.com","callback_url":"https://your-app.example/hooks/dnsbl"}'
import hmac, hashlib
expected = "sha256=" + hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
ok = hmac.compare_digest(expected, request.headers.get("X-DNSBL-Signature", ""))

تصميم التنبيهات: التكرار وتعدد القوائم والإنذارات الكاذبة

لا تكون المراقبة مفيدة إلا إذا ظل الناس يقرؤون تنبيهاتها بعد بضعة أشهر. فالمراقبة التي تطلق التنبيهات باستمرار سرعان ما تُهمَل.

التكرار

تعدد القوائم

النتائج الإيجابية الخاطئة والإجابات العابرة

ما الذي تفعله عند اكتشاف إدراج

  1. تأكّد منه. افحص صفحة البحث الخاصة بالجهة المشغّلة، ودوِّن اسم القائمة والوقت وأي سبب معروض.
  2. عالج السبب أولًا. ابحث عن الحسابات المخترقة، ونماذج الويب المُساء استخدامها، والأجهزة المصابة، وضعف العناية بالقوائم البريدية، وعدم تطابق DNS العكسي (PTR) أو أسماء HELO. فطلب الإزالة مع بقاء السبب يؤدي عادةً إلى إدراج جديد.
  3. اتبع إجراءات الإزالة الخاصة بتلك القائمة. قرار الإزالة يعود إلى كل جهة مشغّلة للقائمة، وتقديم الطلب لا يعني وعدًا برفع الإدراج. وإن لم تكن تتحكم في عنوان IP، كما في الاستضافة المشتركة، فتواصل مع مزوّد الاستضافة أو مزوّد الإنترنت.
  4. دع المراقبة تؤكد النتيجة. فالجهات المستقبِلة تشغّل أيضًا مرشحاتها الخاصة، لذا تابع التسليم بعد أن يعود الحكم إلى نظيف.

ولإلقاء نظرة لمرة واحدة على عنوان IP أو نطاق، استخدم أداة فحص القوائم السوداء. وإن كان تتبّع السبب أو التعامل مع الطلبات أكثر مما تستطيع تحمّله، يمكنك طلب المساعدة منا. وللاطلاع على مسار استكشاف الأخطاء الكامل حين ترتد الرسائل، راجع البريد المحظور بسبب القوائم السوداء.

إذا كنت تفضّل عدم التعامل مع الأمر بنفسك

نعرّفك بمزوّدين يتولّون طلبات الإزالة من القوائم والاستشارات والنصائح (ابتداءً من JPY 50,000). قرار الإزالة يعود إلى مشغّل كل قائمة، ولا يمكن ضمانه.

اطلب المساعدة

قد يتلقى هذا الموقع عمولة إحالة من المزوّدين المذكورين. About

الأسئلة الشائعة

فحصت عبر 8.8.8.8 ولم أجد أي إدراج. هل عنواني نظيف؟

ليس بالضرورة. تقول الأسئلة الشائعة لدى Spamhaus إن الاستعلامات عبر المحلّلات المفتوحة المجانية مثل Google Public DNS ستحصل في معظم الحالات على رد "غير مدرج" (NXDOMAIN)، لذا قد يبدو عنوان IP المدرج نظيفًا. استعلم عبر محلّلك الخاص، أو استخدم صفحة البحث الخاصة بالجهة المشغّلة.

حصلت على 127.255.255.254. هل يعني ذلك أنني مدرج؟

لا. إنه رمز خطأ يُرجع للاستعلامات التي تمر عبر محلّل عام أو مفتوح، وتنص Spamhaus على أنه لا يعني أن العنصر مدرج. سجّله بوصفه خطأً ولا ترسل تنبيه إدراج.

هل يمكنني ببساطة استدعاء واجهة API الدفعية كل يوم بوصفها أداة مراقبة؟

قد تُرجع الدفعة نتيجة مخزّنة يصل عمرها إلى 30 يومًا، لذا فهي لا تمثل دائمًا حالة اليوم. افحص checked_at، أو استخدم المراقبة عبر webhook (POST /api/v1/monitors)، التي تُجري فحصًا جديدًا كل يوم.

هل ينبغي أن أطلب الإزالة فور إطلاق التنبيه؟

عالج السبب أولًا. فالطلب المقدّم مع بقاء المشكلة ينتهي عادةً بإدراج جديد. والقرار يعود دائمًا إلى الجهة المشغّلة للقائمة.

الصفحات الرسمية المعتمدة

جرى التحقق من المعلومات الواردة في هذه المقالة بالرجوع إلى الصفحات الرسمية أدناه وقت النشر. قد تتغير السياسات وطريقة العمل دون إشعار، لذا راجع الصفحات الرسمية قبل الاعتماد على أي أمر مهم.

أدلة ذات صلة

شرح رموز الإرجاع في DNSBL: 127.0.0.2 و127.255.255.x وNXDOMAIN

كيف تقرأ رموز الإرجاع في DNSBL: معنى 127.0.0.2 وفق RFC 5782، ورموز Spamhaus وSpamCop وUCEPROTECT، ورموز الأخطاء، والفرق بين NXDOMAIN وSERVFAIL.

الإزالة من Spamhaus: كيف تُخرج عنوان IP أو نطاقك من القائمة

مدرج في Spamhaus؟ اعرف القائمة التي أنت فيها (ZEN وPBL وXBL وCSS وSBL وDBL)، ومعنى رموز الإرجاع، ومسار الإزالة الصحيح لكل قائمة.

بريدك في القائمة السوداء؟ كيف تقرأ رسالة الارتداد وتخرج من القائمة

بريدك محظور بسبب قائمة سوداء؟ اقرأ رمز الارتداد، وافحص الأسباب بالترتيب الصحيح، واعرف أي الإدراجات مهمة، واطلب الإزالة بالطريقة الصحيحة.

جميع الأدلة →