Ana sayfa › Rehberler

Kara Liste İzleme: Betikler, API ve Webhook Uyarıları

Yayın tarihi 2026-11-03 / Güncelleme 2026-11-03 / Yayımlayan Yuki Nakazawa

Kara liste izleme, gönderen IP'lerinizi ve alan adlarınızı belirli aralıklarla birkaç DNS engelleme listesinde (DNSBL) sorgulamak ve yalnızca bir sonuç değiştiğinde uyarı vermek demektir. Bir kaydı müşteriler geri dönen e-postaları bildirdiğinde değil, gerçekleştiği anda yakalamak, zarar yayılmadan önce nedeni bulmanız ve kaldırma talebinde bulunmanız için size zaman kazandırır.

Bunu yapmanın iki pratik yolu vardır: küçük bir dig ve cron betiğini kendiniz çalıştırmak ya da kontrolleri bir API ve webhook'lar aracılığıyla bir hizmete devretmek. Her iki durumda da izleyicinin doğruyu söyleyip söylemediğini iki ayrıntı belirler: genel çözümleyiciler üzerinden gönderilen sorgular Spamhaus gibi listeler tarafından reddedilir ve yanıltıcı yanıtlar üretir; hata kodları da asla kayıt olarak sayılmamalıdır.

Burada aktarılan liste işletmecisi kuralları, Kasım 2026 itibarıyla resmî sayfalarına dayanır. Politikalar değişir; bir kuruluma güvenmeden önce bunları doğrulayın. DNSBL'lerin nasıl çalıştığına dair arka plan için DNSBL (RBL) nedir yazısına bakın.

Alan adınızın veya IP adresinizin yaklaşık 345 kara listeden herhangi birinde olup olmadığını ücretsiz kontrol edin.

Neyi izleyeceğinize ve hangi listeleri sorgulayacağınıza karar verin

İşe gerçekten izlemeniz gereken nesneleri yazarak başlayın.

Sorgu biçimi RFC 5782'de tanımlanmıştır. IPv4'te sekizlileri ters çevirip listenin bölgesini eklersiniz; böylece bir listede 192.0.2.99, ardından bölge adı gelen 99.2.0.192 olur. IPv6'da adres ters sırada 32 onaltılık nibble olarak yazılır. Alan adı ise doğrudan bölgenin önüne eklenir. Listelenmiş bir giriş, geleneksel olarak 127.0.0.0/8 aralığında bir A kaydı döndürür; listelenmemiş bir giriş NXDOMAIN döndürür. RFC ayrıca listelerin, listelenme nedenini açıklayan bir TXT kaydı yayımlaması gerektiğini belirtir.

Alıcıların hepsi aynı listeleri kullanmadığından tek bir liste yerine birkaç listeyi izleyin. Her dönüş kodunun anlamı işletmeciye göre değişir; DNSBL dönüş kodları rehberimiz yaygın olanları ele alır.

Genel çözümleyiciler neden yanlış yanıt verir

Kendi yazdığınız izleme sistemlerinde sık yapılan bir hata, sorguları Google Public DNS (8.8.8.8) veya Cloudflare (1.1.1.1) gibi bir genel çözümleyici üzerinden göndermektir. Spamhaus'un resmî DNSBL kullanım SSS'si ne olduğunu açıklar:

SSS'nin en önemli önerisi kendi DNS çözümleyicinizi çalıştırmanızdır. Genel bir çözümleyicide kalmak zorunda olan kullanıcılar için Spamhaus, Data Query Service'i (DQS) önerir; neyin ücretsiz olduğunu koşullarından kontrol edin. SSS, gerçekte hangi çözümleyiciyi kullandığınızı görmek için dig txt whoami.fastly.net komutunu önerir.

RFC 5782 yerleşik bir sağlamlık kontrolü de ekler: bir IPv4 listesi 127.0.0.2 için bir giriş içermeli ve 127.0.0.1'i içermemelidir; istemciler de listenin çalıştığını doğrulamak için bu test girişlerini düzenli olarak kontrol etmelidir. Spamhaus'un örneğinde 2.0.0.127.zen.spamhaus.org 127.0.0.10, 127.0.0.4 ve 127.0.0.2 döndürürken 1.0.0.127.zen.spamhaus.org NXDOMAIN döndürür. Bir izleyici önce bunu test etmeli ve başarısız olursa o çalıştırmanın sonuçlarını atmalıdır.

Seçenek 1: dig ve cron betiği

Aşağıda, bir IPv4 adresini Spamhaus ZEN ve SpamCop'ta (SpamCop'un belgelerine göre bl.spamcop.net listelenmiş bir IP için 127.0.0.2 yanıtı verir) kontrol eden minimal bir betik yer alıyor. Adresi ve bölgeleri kendinizinkilerle değiştirin.

#!/bin/sh
# Kendi özyinelemeli çözümleyicinizi sorgulayın (ör. aynı makinedeki unbound), asla genel bir çözümleyiciyi değil
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 girişi bir kayıt koduna çözümlenmiyorsa bu çalıştırmaya güvenmeyin
  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

Betiğin yaptıkları:

Ardından cron'un her çalıştırmayı bir öncekiyle karşılaştırmasını ve yalnızca bir şey değiştiğinde e-posta göndermesini sağlayın:

# Örnek: saatte bir çalıştır, yalnızca çıktı bir önceki çalıştırmadan farklıysa e-posta gönder
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

Saatlik aralık yalnızca bir örnektir. Spamhaus düşük hacimli, ticari olmayan kullanım için ücretsiz erişim sunar; sorgu hacmi eşiğini aşan istemcilerin ücretli bir seçeneğe ihtiyacı vardır. İzlediğiniz IP sayısı arttıkça her listenin koşullarını kontrol edin. SSS ayrıca sonuçların aynı kaldığını doğrulamak için komutları birkaç kez denemenizi önerir.

Seçenek 2: DNSBL Checker toplu API'si ve webhook'lar

Bir çözümleyici ve liste bazında ayrıştırma kuralları bakımıyla uğraşmak istemiyorsanız kontrolleri bir hizmete bırakabilirsiniz. Aşağıda bu sitenin v1 API'si, sunucu uygulamasının gerçekte yaptıklarıyla sınırlı olarak açıklanmaktadır. Başvuru belgeleri /en/api-docs adresindedir ve anahtarlar /account adresindeki üye sayfasında verilir. Kayıt için yalnızca bir e-posta adresi gerekir ve e-postayla gönderilen bir bağlantıyla oturum açarsınız.

Kimlik doğrulama ve sınırlar

Toplu kontroller

Alan adlarından veya IP adreslerinden oluşan bir targets dizisini POST /api/v1/batch adresine gönderin:

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"]}'

Herhangi bir hedefin hâlâ kontrol edilmesi gerekiyorsa yanıt, bir batch_id ile birlikte 202 olur. status değeri done olana kadar birkaç saniyede bir GET /api/v1/batch/{batch_id} adresini sorgulayın (kısaltılmış örnek; sayılar ve liste adı gerçek bir sonuç değil, temsilîdir):

{
  "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 ile izleme

POST /api/v1/monitors ile bir target ve bir callback_url kaydedin. Kaydedilen her hedef bundan sonra önbellek kullanılmadan günde bir kez kontrol edilir (ilk kontrol kayıttan sonra yaklaşık bir gün içinde yapılır) ve URL'nize yalnızca ilk kontrolde (monitor.initial) ve sonuç listed ile clean arasında değiştiğinde (monitor.status_changed) bir JSON POST gönderilir.

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", ""))

Uyarı tasarımı: sıklık, birden fazla liste ve yanlış alarmlar

Bir izleyici, ancak insanlar birkaç ay sonra da uyarılarını okumaya devam ediyorsa işe yarar. Sürekli uyarı veren bir izleyici kısa sürede görmezden gelinir.

Sıklık

Birden fazla liste

Yanlış pozitifler ve geçici yanıtlar

Bir kayıt tespit edildiğinde ne yapmalı

  1. Doğrulayın. İşletmecinin kendi sorgulama sayfasını kontrol edin ve liste adını, zamanı ve gösterilen nedeni not edin.
  2. Önce nedeni giderin. Ele geçirilmiş hesapları, kötüye kullanılan web formlarını, virüslü makineleri, kötü liste hijyenini ve eşleşmeyen ters DNS (PTR) veya HELO adlarını araştırın. Neden devam ederken kaldırma talep etmek genellikle yeni bir kayda yol açar.
  3. O listenin kaldırma sürecini izleyin. Listeden çıkarma kararı her liste işletmecisine aittir ve talep göndermek kaydın kaldırılacağı anlamına gelmez. Paylaşımlı hostingde olduğu gibi IP'yi siz kontrol etmiyorsanız hosting sağlayıcınızla veya İSS'nizle iletişime geçin.
  4. Sonucu izleyicinin doğrulamasına izin verin. Alıcılar kendi filtrelerini de çalıştırır; bu nedenle sonuç clean'e döndükten sonra da teslimatı gözlemlemeye devam edin.

Bir IP'ye veya alan adına tek seferlik bakmak için kara liste kontrol aracını kullanın. Nedenin izini sürmek veya talepleri yürütmek üstlenebileceğinizden fazlaysa bizden yardım isteyebilirsiniz. E-postalar geri dönüyorsa sorun gidermenin tam yolu için kara listeler yüzünden engellenen e-postalar yazısına bakın.

Bu işi kendiniz yapmak istemiyorsanız

Listeden çıkarma talepleri, danışmanlık ve tavsiye hizmeti veren sağlayıcıları tanıtıyoruz (JPY 50,000'den başlayan ücretlerle). Listeden çıkarma kararı her listenin operatörüne aittir ve garanti edilemez.

Destek alın

Bu site, listelenen sağlayıcılardan aracılık ücreti alabilir. About

Sık sorulan sorular

8.8.8.8 üzerinden kontrol ettim ve kayıt çıkmadı. Temiz miyim?

Her zaman değil. Spamhaus'un SSS'sine göre Google Public DNS gibi ücretsiz açık çözümleyiciler üzerinden yapılan sorgular çoğu durumda listelenmemiş (NXDOMAIN) yanıtı alır; bu nedenle listelenmiş bir IP temiz görünebilir. Kendi çözümleyicinizden sorgulayın veya işletmecinin sorgulama sayfasını kullanın.

127.255.255.254 yanıtı aldım. Bu listede olduğum anlamına mı geliyor?

Hayır. Bu, genel veya açık bir çözümleyici üzerinden yapılan sorgulara döndürülen bir hata kodudur ve Spamhaus bunun nesnenin listelendiği anlamına gelmediğini belirtir. Bunu hata olarak kaydedin ve kayıt uyarısı göndermeyin.

İzleme için toplu API'yi her gün çağırmam yeterli mi?

Toplu istek 30 güne kadar eski, saklanmış bir sonuç döndürebilir; bu nedenle her zaman bugünkü durumu göstermez. checked_at değerini kontrol edin ya da her gün yeni bir kontrol çalıştıran webhook izlemesini (POST /api/v1/monitors) kullanın.

Uyarı gelir gelmez kaldırma talebinde bulunmalı mıyım?

Önce nedeni giderin. Sorun devam ederken yapılan bir talep genellikle yeni bir kayıtla sonuçlanır. Karar her zaman liste işletmecisine aittir.

Kullanılan resmî sayfalar

Bu makaledeki bilgiler, yayın tarihinde aşağıdaki resmî sayfalarla karşılaştırılarak doğrulanmıştır. Politikalar ve işleyiş haber verilmeden değişebilir; önemli bir konuda karar vermeden önce resmî sayfaları kontrol edin.

İlgili rehberler

DNSBL Dönüş Kodları: 127.0.0.2, 127.255.255.x ve NXDOMAIN

DNSBL dönüş kodları nasıl okunur: RFC 5782'ye göre 127.0.0.2, Spamhaus, SpamCop ve UCEPROTECT kodları, hata kodları ve NXDOMAIN ile SERVFAIL farkı.

Spamhaus'tan Çıkma: IP veya Alan Adınızı Listeden Kaldırma

Spamhaus'ta mı listelendiniz? Hangi listede olduğunuzu (ZEN, PBL, XBL, CSS, SBL, DBL), dönüş kodlarının anlamını ve her birinin çıkarma yolunu görün.

E-posta Kara Listede mi? Hata Mesajını Okuma ve Listeden Çıkma

E-postanız bir kara liste yüzünden mi engellendi? Hata kodunu okuyun, nedenleri doğru sırayla kontrol edin ve listeden çıkarılmayı doğru biçimde isteyin.

Tüm rehberler →