Beranda › Panduan

Pemantauan Blacklist: Skrip, API, dan Notifikasi Webhook

Diterbitkan 2026-11-03 / Diperbarui 2026-11-03 / Oleh Yuki Nakazawa

Pemantauan blacklist berarti melakukan kueri ke beberapa daftar blokir DNS (DNSBL) untuk IP dan domain pengirim Anda secara terjadwal, dan baru memunculkan peringatan ketika ada hasil yang berubah. Mengetahui pencantuman saat itu juga, bukan ketika pelanggan melaporkan email yang terpental, memberi Anda waktu untuk menemukan penyebabnya dan meminta penghapusan sebelum dampaknya meluas.

Ada dua cara praktis untuk melakukannya: menjalankan sendiri skrip kecil berbasis dig dan cron, atau menyerahkan pengecekan kepada sebuah layanan melalui API dan webhook. Apa pun caranya, ada dua detail yang menentukan apakah pemantauan memberikan hasil yang benar: kueri yang dikirim melalui resolver publik ditolak oleh daftar seperti Spamhaus dan menghasilkan jawaban yang menyesatkan, dan kode galat sama sekali tidak boleh dihitung sebagai pencantuman.

Aturan operator daftar yang dikutip di sini didasarkan pada halaman resmi mereka per November 2026. Kebijakan dapat berubah, jadi pastikan kembali sebelum Anda mengandalkan sebuah konfigurasi. Untuk latar belakang cara kerja DNSBL, lihat apa itu DNSBL (RBL).

Periksa secara gratis apakah domain atau alamat IP Anda tercantum di salah satu dari sekitar 345 blacklist.

Tentukan apa yang dipantau dan daftar mana yang dikueri

Mulailah dengan mencatat objek yang benar-benar perlu Anda pantau.

Format kueri didefinisikan dalam RFC 5782. Untuk IPv4, Anda membalik urutan oktet lalu menambahkan zona daftar, sehingga 192.0.2.99 pada sebuah daftar menjadi 99.2.0.192 diikuti nama zona. Untuk IPv6, alamat ditulis sebagai 32 nibble heksadesimal dalam urutan terbalik. Domain cukup ditempatkan di depan zona. Entri yang tercantum mengembalikan record A, menurut konvensi dalam rentang 127.0.0.0/8; entri yang tidak tercantum mengembalikan NXDOMAIN. RFC juga mencatat bahwa daftar sebaiknya memublikasikan record TXT yang menjelaskan alasan pencantuman.

Pantau beberapa daftar, bukan hanya satu, karena tidak semua penerima memakai daftar yang sama. Arti setiap kode balasan berbeda-beda menurut operatornya; panduan kami tentang kode balasan DNSBL membahas kode-kode yang umum.

Mengapa resolver publik memberikan jawaban yang salah

Kesalahan umum pada pemantauan buatan sendiri adalah mengirim kueri melalui resolver publik seperti Google Public DNS (8.8.8.8) atau Cloudflare (1.1.1.1). FAQ resmi penggunaan DNSBL dari Spamhaus menjelaskan apa yang terjadi:

Rekomendasi utama FAQ tersebut adalah menjalankan resolver DNS sendiri. Bagi pengguna yang harus tetap memakai resolver publik, Spamhaus mengarahkan ke Data Query Service (DQS) miliknya; periksa ketentuannya untuk mengetahui apa yang gratis. FAQ tersebut menyarankan dig txt whoami.fastly.net untuk melihat resolver mana yang sebenarnya Anda pakai.

RFC 5782 menambahkan pemeriksaan kewajaran bawaan: daftar IPv4 harus memuat entri untuk 127.0.0.2 dan tidak boleh memuat 127.0.0.1, dan klien sebaiknya memeriksa entri uji ini secara berkala untuk memastikan daftar berfungsi. Dalam contoh Spamhaus, 2.0.0.127.zen.spamhaus.org mengembalikan 127.0.0.10, 127.0.0.4, dan 127.0.0.2, sedangkan 1.0.0.127.zen.spamhaus.org mengembalikan NXDOMAIN. Pemantauan sebaiknya menguji hal ini terlebih dahulu dan membuang hasil putaran tersebut jika gagal.

Opsi 1: skrip dig dan cron

Berikut skrip minimal yang memeriksa satu alamat IPv4 terhadap Spamhaus ZEN dan SpamCop (bl.spamcop.net, yang menurut dokumentasi SpamCop menjawab 127.0.0.2 untuk IP yang tercantum). Ganti alamat dan zonanya dengan milik Anda.

#!/bin/sh
# Kueri ke resolver rekursif milik sendiri (misalnya unbound di host yang sama), jangan ke resolver publik
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
  # Jika entri uji 127.0.0.2 tidak menghasilkan kode pencantuman, jangan percayai putaran ini
  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

Yang dilakukan skrip ini:

Kemudian biarkan cron membandingkan setiap putaran dengan putaran sebelumnya dan hanya mengirim email ketika ada perubahan:

# Contoh: jalankan tiap jam, kirim email hanya jika output berbeda dari putaran sebelumnya
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

Interval per jam ini hanya contoh. Spamhaus menyediakan akses gratis untuk penggunaan bervolume rendah dan nonkomersial, dan klien yang melampaui ambang volume kuerinya memerlukan opsi berbayar; periksa ketentuan setiap daftar seiring bertambahnya jumlah IP yang Anda pantau. FAQ tersebut juga menyarankan untuk mencoba perintah beberapa kali guna memastikan hasilnya tetap sama.

Opsi 2: API batch dan webhook DNSBL Checker

Jika Anda tidak ingin mengelola resolver dan aturan parsing per daftar, Anda dapat menyerahkan pengecekan kepada sebuah layanan. Berikut adalah API v1 situs ini, sebatas apa yang benar-benar dilakukan oleh implementasi servernya. Referensinya ada di /en/api-docs dan kunci diterbitkan di halaman anggota di /account. Pendaftaran hanya memerlukan alamat email, dan Anda masuk dengan tautan yang dikirim melalui email.

Autentikasi dan batasan

Pengecekan batch

Kirim array targets berisi nama domain atau alamat IP ke 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"]}'

Jika masih ada target yang perlu diperiksa, responsnya adalah 202 dengan batch_id. Lakukan polling ke GET /api/v1/batch/{batch_id} setiap beberapa detik hingga status bernilai done (contoh ringkas; angka dan nama daftar hanya ilustrasi, bukan hasil sebenarnya):

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

Pemantauan dengan webhook

Daftarkan target dan callback_url dengan POST /api/v1/monitors. Setiap target yang terdaftar kemudian diperiksa sekali sehari tanpa memakai cache (pengecekan pertama berjalan dalam waktu sekitar satu hari setelah pendaftaran), dan POST berformat JSON dikirim ke URL Anda hanya pada pengecekan pertama (monitor.initial) dan ketika verdict berubah antara listed dan 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", ""))

Merancang notifikasi: frekuensi, banyak daftar, dan alarm palsu

Pemantauan hanya berguna jika orang masih membaca peringatannya setelah beberapa bulan. Pemantauan yang terus-menerus berbunyi akan segera diabaikan.

Frekuensi

Beberapa daftar

False positive dan jawaban sesaat

Yang perlu dilakukan saat pencantuman terdeteksi

  1. Konfirmasikan. Periksa halaman pengecekan milik operator dan catat nama daftar, waktunya, serta alasan apa pun yang ditampilkan.
  2. Atasi penyebabnya terlebih dahulu. Cari akun yang disusupi, formulir web yang disalahgunakan, mesin yang terinfeksi, pengelolaan daftar penerima yang buruk, serta reverse DNS (PTR) atau nama HELO yang tidak cocok. Meminta penghapusan selagi penyebabnya masih ada biasanya berujung pada pencantuman baru.
  3. Ikuti proses penghapusan daftar tersebut. Keputusan penghapusan berada di tangan masing-masing operator daftar, dan mengajukan permintaan tidak menjamin pencantuman akan dicabut. Jika Anda tidak mengendalikan IP tersebut, seperti pada shared hosting, hubungi penyedia hosting atau ISP Anda.
  4. Biarkan pemantauan mengonfirmasi hasilnya. Penerima juga menjalankan filter sendiri, jadi tetap pantau pengiriman setelah verdict kembali menjadi clean.

Untuk pengecekan sekali waktu terhadap IP atau domain, gunakan pemeriksa blacklist. Jika menelusuri penyebab atau menangani permintaan terlalu berat bagi Anda, Anda dapat meminta bantuan kami. Untuk jalur pemecahan masalah selengkapnya ketika email terpental, lihat email yang diblokir karena blacklist.

Jika Anda tidak ingin menanganinya sendiri

Kami memperkenalkan penyedia jasa yang menangani permintaan delisting, konsultasi, dan saran (mulai JPY 50,000). Keputusan delisting ada di tangan masing-masing pengelola daftar dan tidak dapat dijanjikan.

Minta bantuan

Situs ini dapat menerima komisi rujukan dari penyedia jasa yang tercantum. About

Tanya jawab

Saya mengecek melalui 8.8.8.8 dan tidak ada pencantuman. Apakah saya bersih?

Belum tentu. FAQ Spamhaus menyebutkan bahwa kueri melalui resolver terbuka gratis seperti Google Public DNS dalam sebagian besar kasus akan mendapat balasan tidak tercantum (NXDOMAIN), sehingga IP yang tercantum bisa tampak bersih. Lakukan kueri dari resolver Anda sendiri, atau gunakan halaman pengecekan milik operator.

Saya mendapat 127.255.255.254. Apakah itu berarti saya tercantum?

Tidak. Itu adalah kode galat yang dikembalikan untuk kueri melalui resolver publik atau terbuka, dan Spamhaus menyatakan bahwa kode itu tidak berarti objek tersebut tercantum. Catat sebagai galat dan jangan kirim peringatan pencantuman.

Bisakah saya cukup memanggil API batch setiap hari sebagai pemantauan?

Batch dapat mengembalikan hasil tersimpan yang berusia hingga 30 hari, sehingga tidak selalu mencerminkan kondisi hari ini. Periksa checked_at, atau gunakan pemantauan webhook (POST /api/v1/monitors), yang menjalankan pengecekan baru setiap hari.

Haruskah saya meminta penghapusan begitu peringatan muncul?

Atasi penyebabnya terlebih dahulu. Permintaan yang diajukan selagi masalahnya masih ada biasanya berakhir dengan pencantuman baru. Keputusannya selalu berada di tangan operator daftar.

Halaman resmi yang digunakan

Fakta dalam artikel ini telah diperiksa berdasarkan halaman resmi di bawah ini pada saat diterbitkan. Kebijakan dan perilaku layanan dapat berubah tanpa pemberitahuan, jadi periksa halaman resmi sebelum mengandalkan informasi yang penting.

Panduan terkait

Arti Kode Balasan DNSBL: 127.0.0.2, 127.255.255.x, dan NXDOMAIN

Cara membaca kode balasan DNSBL: arti 127.0.0.2 menurut RFC 5782, kode Spamhaus, SpamCop, dan UCEPROTECT, kode galat, serta NXDOMAIN vs SERVFAIL.

Cara Delist dari Spamhaus: Menghapus IP atau Domain Anda

Tercantum di Spamhaus? Ketahui daftar mana yang mencantumkan Anda (ZEN, PBL, XBL, CSS, SBL, DBL), arti kode balasannya, dan jalur delisting yang tepat.

Email Kena Blacklist? Cara Membaca Bounce dan Keluar dari Blacklist

Email diblokir blacklist? Baca kode bounce, periksa penyebab secara berurutan, ketahui daftar yang penting, dan ajukan penghapusan dengan cara yang benar.

Semua panduan →