होम › गाइड

Blacklist monitoring: scripts, API और webhook alerts

प्रकाशित 2026-11-03 / अपडेट 2026-11-03 / लेखक Yuki Nakazawa

Blacklist monitoring का मतलब है अपने sending IPs और domains के लिए तय समय पर कई DNS blocklists (DNSBLs) से query करना, और alert केवल तब देना जब परिणाम बदले। listing को उसी समय पकड़ लेना, न कि तब जब ग्राहक bounce हुए मेल की शिकायत करें, आपको नुकसान फैलने से पहले कारण खोजने और removal का अनुरोध करने का समय देता है।

इसके दो व्यावहारिक तरीके हैं: खुद एक छोटी dig और cron script चलाएँ, या API और webhooks के ज़रिए जाँच किसी service को सौंप दें। दोनों ही स्थितियों में दो बातें तय करती हैं कि monitor सच बताता है या नहीं: public resolvers के ज़रिए भेजी गई queries को Spamhaus जैसी सूचियाँ अस्वीकार कर देती हैं और इनसे भ्रामक जवाब मिलते हैं, और error codes को कभी भी listings नहीं गिनना चाहिए।

यहाँ उद्धृत सूची operators के नियम नवंबर 2026 तक के उनके आधिकारिक पेजों पर आधारित हैं। नीतियाँ बदलती हैं, इसलिए किसी setup पर भरोसा करने से पहले उनकी पुष्टि करें। DNSBLs कैसे काम करती हैं, इसकी पृष्ठभूमि के लिए DNSBL (RBL) क्या है देखें।

मुफ़्त में जाँचें कि आपका डोमेन या IP पता लगभग 345 ब्लैकलिस्ट में से किसी पर है या नहीं।

तय करें कि किस पर नज़र रखनी है और कौन-सी सूचियाँ query करनी हैं

सबसे पहले उन चीज़ों को लिख लें जिन पर आपको वास्तव में नज़र रखनी है।

query का format RFC 5782 में परिभाषित है। IPv4 के लिए आप octets को उल्टा करके सूची का zone जोड़ते हैं, इसलिए किसी सूची पर 192.0.2.99 बन जाता है 99.2.0.192 और उसके बाद zone name। IPv6 के लिए पता उल्टे क्रम में 32 hex nibbles के रूप में लिखा जाता है। domain को सीधे zone के आगे जोड़ दिया जाता है। सूचीबद्ध entry एक A record लौटाती है, परंपरा के अनुसार 127.0.0.0/8 में; जो सूचीबद्ध नहीं है वह NXDOMAIN लौटाती है। RFC यह भी बताता है कि सूचियों को listing का कारण बताने वाला TXT record प्रकाशित करना चाहिए।

एक के बजाय कई सूचियों पर नज़र रखें, क्योंकि सभी receivers एक जैसी सूचियाँ इस्तेमाल नहीं करते। हर return code का अर्थ operator के हिसाब से बदलता है; आम codes के लिए हमारी DNSBL return codes गाइड देखें।

public resolvers गलत जवाब क्यों देते हैं

खुद बनाई गई monitoring में एक आम गलती है Google Public DNS (8.8.8.8) या Cloudflare (1.1.1.1) जैसे public resolver के ज़रिए queries भेजना। Spamhaus का आधिकारिक DNSBL usage FAQ बताता है कि तब क्या होता है:

FAQ की सबसे बड़ी सलाह है अपना खुद का DNS resolver चलाएँ। जिन उपयोगकर्ताओं को public resolver पर ही रहना है, उनके लिए Spamhaus अपनी Data Query Service (DQS) बताता है; क्या मुफ़्त है, इसके लिए उसकी शर्तें देखें। आप वास्तव में कौन-सा resolver इस्तेमाल कर रहे हैं, यह देखने के लिए FAQ dig txt whoami.fastly.net सुझाता है।

RFC 5782 एक अंतर्निहित जाँच जोड़ता है: IPv4 सूची में 127.0.0.2 की entry होनी चाहिए और 127.0.0.1 नहीं होनी चाहिए, और clients को समय-समय पर इन test entries की जाँच करके पुष्टि करनी चाहिए कि सूची काम कर रही है। 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 लौटाता है। monitor को पहले यह जाँचना चाहिए और विफल होने पर उस run को खारिज कर देना चाहिए।

विकल्प 1: dig और cron script

यह एक छोटी script है जो एक IPv4 पते को Spamhaus ZEN और SpamCop (bl.spamcop.net, जिसके बारे में SpamCop का documentation कहता है कि सूचीबद्ध IP के लिए यह 127.0.0.2 जवाब देता है) पर जाँचती है। पता और zones अपने हिसाब से बदलें।

#!/bin/sh
# अपने खुद के recursive resolver से query करें (जैसे उसी host पर unbound), कभी public resolver से नहीं
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 test entry किसी listing code पर resolve नहीं होती, तो इस run पर भरोसा न करें
  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

script क्या कर रही है:

फिर cron से हर run की तुलना पिछले run से करवाएँ और मेल केवल तब भेजें जब कुछ बदला हो:

# उदाहरण: हर घंटे चलाएँ, मेल केवल तब भेजें जब output पिछले run से अलग हो
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 कम मात्रा वाले, non-commercial उपयोग के लिए मुफ़्त पहुँच देता है, और जो clients उसकी query volume सीमा पार करते हैं उन्हें सशुल्क विकल्प चाहिए; निगरानी वाले IPs की संख्या बढ़ने पर हर सूची की शर्तें जाँचें। FAQ यह भी सलाह देता है कि commands को कुछ बार चलाकर पुष्टि करें कि परिणाम एक जैसे रहते हैं।

विकल्प 2: DNSBL Checker batch API और webhooks

अगर आप resolver और हर सूची के parsing नियम खुद नहीं संभालना चाहते, तो जाँच किसी service से करवा सकते हैं। नीचे इस साइट की v1 API है, केवल उतनी जितना server implementation वास्तव में करता है। reference /en/api-docs पर है और keys members पेज /account पर जारी होती हैं। Sign-up के लिए केवल ईमेल पता चाहिए, और आप ईमेल से भेजे गए link से log in करते हैं।

Authentication और सीमाएँ

Batch checks

domain names या IP पतों का targets array 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"]}'

अगर किसी target की जाँच अभी बाकी है, तो response batch_id के साथ 202 होता है। status के done होने तक हर कुछ सेकंड में GET /api/v1/batch/{batch_id} poll करें (संक्षिप्त उदाहरण; संख्याएँ और सूची का नाम केवल उदाहरण हैं, असली परिणाम नहीं):

{
  "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 monitoring

POST /api/v1/monitors से एक target और एक callback_url register करें। इसके बाद हर registered target की जाँच दिन में एक बार cache का उपयोग किए बिना होती है (पहली जाँच register करने के लगभग एक दिन के भीतर होती है), और आपके URL पर JSON POST केवल पहली जाँच (monitor.initial) पर और तब भेजा जाता है जब verdict listed और clean के बीच बदलता है (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", ""))

alerts की रूपरेखा: आवृत्ति, कई सूचियाँ और झूठे alarm

monitor तभी उपयोगी है जब कुछ महीनों बाद भी लोग उसके alerts पढ़ते रहें। जो लगातार बजता रहता है, उसे जल्द ही अनदेखा कर दिया जाता है।

आवृत्ति

कई सूचियाँ

False positives और अस्थायी जवाब

listing पकड़ी जाने पर क्या करें

  1. इसकी पुष्टि करें। operator का अपना lookup पेज देखें और सूची का नाम, समय और दिखाया गया कोई भी कारण नोट करें।
  2. पहले कारण ठीक करें। compromised accounts, दुरुपयोग किए गए web forms, संक्रमित मशीनें, सूचियों का खराब रखरखाव और मेल न खाते reverse DNS (PTR) या HELO names देखें। कारण बने रहते हुए removal का अनुरोध करने से आमतौर पर नई listing होती है।
  3. उस सूची की removal प्रक्रिया का पालन करें। delist करने का फ़ैसला हर सूची के operator का होता है, और अनुरोध भेजना इस बात का वादा नहीं कि listing हटेगी। अगर IP आपके नियंत्रण में नहीं है, जैसे shared hosting में, तो अपने hosting provider या ISP से संपर्क करें।
  4. monitor से परिणाम की पुष्टि होने दें। receivers अपने filters भी चलाते हैं, इसलिए verdict के clean होने के बाद भी delivery पर नज़र रखें।

किसी IP या domain को एक बार देखने के लिए blacklist checker का उपयोग करें। अगर कारण खोजना या अनुरोध संभालना आपके बस से बाहर हो, तो आप हमसे मदद माँग सकते हैं। मेल bounce होने पर troubleshooting के पूरे रास्ते के लिए blacklist के कारण ब्लॉक हुआ ईमेल देखें।

अगर आप यह काम खुद नहीं करना चाहते

हम ऐसे सेवा प्रदाताओं से परिचय कराते हैं जो delisting अनुरोध, परामर्श और सलाह का काम लेते हैं (JPY 50,000 से)। Delisting का निर्णय हर लिस्ट ऑपरेटर करता है, इसलिए इसकी गारंटी नहीं दी जा सकती।

सहायता लें

इस साइट को सूचीबद्ध सेवा प्रदाताओं से रेफ़रल शुल्क मिल सकता है। About

अक्सर पूछे जाने वाले प्रश्न

मैंने 8.8.8.8 के ज़रिए जाँचा और कोई listing नहीं मिली। क्या मैं साफ़ हूँ?

ज़रूरी नहीं। Spamhaus का FAQ कहता है कि Google Public DNS जैसे मुफ़्त open resolvers के ज़रिए queries को ज़्यादातर मामलों में not-listed (NXDOMAIN) जवाब मिलेगा, इसलिए सूचीबद्ध IP भी साफ़ दिख सकता है। अपने खुद के resolver से query करें, या operator का lookup पेज इस्तेमाल करें।

मुझे 127.255.255.254 मिला। क्या इसका मतलब है कि मैं सूचीबद्ध हूँ?

नहीं। यह public या open resolver के ज़रिए की गई queries के लिए लौटाया जाने वाला error code है, और Spamhaus कहता है कि इसका मतलब यह नहीं कि चीज़ सूचीबद्ध है। इसे error के रूप में log करें और listing alert न भेजें।

क्या मैं monitor के रूप में बस हर दिन batch API call कर सकता हूँ?

batch 30 दिन तक पुराना संग्रहीत परिणाम लौटा सकता है, इसलिए यह हमेशा आज की स्थिति नहीं होती। checked_at जाँचें, या webhook monitoring (POST /api/v1/monitors) का उपयोग करें, जो हर दिन नई जाँच चलाती है।

क्या alert आते ही मुझे removal का अनुरोध करना चाहिए?

पहले कारण ठीक करें। समस्या बने रहते हुए किया गया अनुरोध आमतौर पर नई listing में खत्म होता है। फ़ैसला हमेशा सूची के operator के पास होता है।

उपयोग किए गए आधिकारिक पेज

इस लेख के तथ्य प्रकाशन के समय नीचे दिए गए आधिकारिक पेजों से मिलाए गए थे। नीतियाँ और व्यवहार बिना सूचना के बदल सकते हैं, इसलिए किसी महत्वपूर्ण बात पर भरोसा करने से पहले आधिकारिक पेज देख लें।

संबंधित गाइड

DNSBL return codes की व्याख्या: 127.0.0.2, 127.255.255.x और NXDOMAIN

DNSBL return codes कैसे पढ़ें: RFC 5782 में 127.0.0.2 का अर्थ, Spamhaus, SpamCop और UCEPROTECT के codes, error codes, और NXDOMAIN बनाम SERVFAIL।

Spamhaus से हटना: अपने IP या डोमेन को delist कैसे कराएँ

Spamhaus में लिस्टेड? जानें आप किस लिस्ट में हैं (ZEN, PBL, XBL, CSS, SBL, DBL), return code का क्या मतलब है, और हर लिस्ट के लिए delisting का सही तरीका।

ईमेल ब्लैकलिस्ट में? बाउंस कैसे पढ़ें और ब्लैकलिस्ट से कैसे हटें

ब्लैकलिस्ट की वजह से ईमेल ब्लॉक? बाउंस कोड पढ़ें, कारणों को सही क्रम में जाँचें, जानें कौन-सी लिस्टिंग मायने रखती है, और सही तरीके से हटाने का अनुरोध करें।

सभी गाइड →