DMARC Monitoring is coming soon: collect and analyze DMARC and TLS-RPT reports in one place. Learn more
Blacklist Monitoring

What Does Blacklisted Mean?

Blacklisted means your IP or domain is on a list that mail servers and DNS filters check before accepting traffic. How the lists work and how to get off one.

To be blacklisted is to be on a list that other people use to turn you away. For an IP address or a domain, it means a blocklist operator has flagged it as a source of spam, malware, or abuse, and every mail server, spam filter, or DNS resolver that consults that list will act on the flag. A listed mail server IP gets its messages rejected or sent to junk. A listed domain gets filtered wherever it shows up in a message, and on some networks the website behind it stops resolving. The flag can come from spam the list caught from that address, from malware on the host, or simply from the address sitting in a range that shouldn't send mail directly.

What Is an RBL?

An RBL is a blocklist that mail servers query in real time, while deciding whether to accept a message. The name comes from the first one: the Real-time Blackhole List, which Paul Vixie's Mail Abuse Prevention System (MAPS) started in 1997 as a BGP routing feed. Eric Ziegast then rebuilt it to answer over DNS. Almost every public list still works that way, because every mail server already has a resolver and answers get cached.

Term What it means
Blacklist, blocklist, denylist The general idea: a list of addresses to refuse
RBL Real-time Blackhole List; now used for any of these lists
DNSBL A blocklist published as a DNS zone, which is nearly all of them
URIBL, RHSBL A DNSBL that lists domain names

How a Blacklist Lookup Works

A DNSBL is just a DNS zone. To ask whether an IPv4 address is listed, reverse its four octets, append the list's zone, and look up an A record. Checking 192.0.2.10 against SpamCop means querying 10.2.0.192.bl.spamcop.net. NXDOMAIN means not listed. An answer in 127.0.0.0/8 means listed, and the TXT record for the same name usually says why.

RFC 5782, which documents how these lists work, says every IPv4 list must carry a test entry for 127.0.0.2 and must never list 127.0.0.1. That gives you both answers on demand:

$ dig +short 2.0.0.127.bl.spamcop.net
127.0.0.2

$ dig +short TXT 2.0.0.127.bl.spamcop.net
"Blocked - see https://www.spamcop.net/bl.shtml?127.0.0.2"

$ dig 1.0.0.127.bl.spamcop.net | grep status
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 37578

The value of the A record is a code. Lists that bundle several datasets use it to say which one fired: Spamhaus ZEN answers 127.0.0.2 for a manual SBL listing, 127.0.0.4 for a compromised host on the XBL, and 127.0.0.10 or 127.0.0.11 for the PBL. Our walkthrough of reading a Spamhaus listing maps every code to who has to file the removal.

IPv6 addresses are reversed one hex nibble at a time, all 32 of them. Domain lists skip the reversal, since the name is already the key:

IPv6:    2001:db8::25
query:   5.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.dnsbl.example.net

domain:  example.com
query:   example.com.dbl.spamhaus.org

One trap catches a lot of homemade checkers. Spamhaus won't answer queries that arrive through a public or open resolver, and it says so with an error code that sits in the same 127.x space as a real listing:

$ dig +short 2.0.0.127.zen.spamhaus.org
127.255.255.254

$ dig +short TXT 2.0.0.127.zen.spamhaus.org
"Error: open resolver; https://check.spamhaus.org/returnc/pub/203.0.113.53/"

Spamhaus reserves 127.255.255.0/24 for these errors. Read every 127.x answer as "listed" and every address you check looks blacklisted. Postfix's documentation gives the same advice: keep DNSBL queries off public and ISP resolvers.

The Main Kinds of Blacklists

Hundreds of lists are published, and they don't all measure the same thing. What a list is built to catch tells you what a listing on it means.

Kind What gets listed Examples
Spam-source IP lists IPs seen sending spam or hitting spamtraps Spamhaus SBL and CSS, SpamCop, Barracuda
Compromised-host lists IPs running malware or botnet code Spamhaus XBL
Policy lists Ranges that shouldn't send mail straight to MX hosts, like residential broadband Spamhaus PBL
Domain and URI lists Domains in the sender address or in links in the body Spamhaus DBL, SURBL, URIBL
DNS security filters Domains and IPs tied to malware or phishing, blocked at the resolver Quad9, OpenDNS, Cloudflare's filtered resolvers
Mailbox provider lists Whatever the provider decides Gmail and Microsoft's internal reputation systems

The evidence varies too. SpamCop lists an IP when its users and spamtraps receive enough spam from it; a spamtrap is an address that never signed up for anything, so whatever reaches it is unsolicited. The Spamhaus SBL is curated by people. Policy listings accuse no one: they mark address space that's meant to relay through a provider.

Moving to a clean IP does nothing for a listed domain, which is why domain-based blocklists need watching on their own. Mailbox provider lists can't be queried at all; the only views into them are bounce text and the providers' postmaster tools, Microsoft SNDS and Google Postmaster Tools.

What a Listing Does to Your Mail

Each receiver decides what a listing is worth. Some reject outright during the SMTP conversation. A common Postfix setup:

smtpd_recipient_restrictions =
    permit_mynetworks,
    reject_unauth_destination,
    reject_rbl_client zen.spamhaus.org=127.0.0.[2..11],
    reject_rbl_client bl.spamcop.net,
    permit

From the sending side, that rejection shows up in your mail log as a hard bounce, with the list's name in it:

postfix/smtp[18231]: 4XkP2r1QbZz9t: to=<jane@example.net>, relay=mx.example.net[198.51.100.7]:25,
  delay=0.9, dsn=5.7.1, status=bounced (host mx.example.net[198.51.100.7] said: 554 5.7.1 Service
  unavailable; Client host [203.0.113.25] blocked using bl.spamcop.net; Blocked - see
  https://www.spamcop.net/bl.shtml?203.0.113.25 (in reply to RCPT TO command))

Other receivers weigh lists against each other. With Postfix's postscreen, this config blocks an IP listed on Spamhaus alone, or on SpamCop and Barracuda together, but lets through an IP listed on only one of those two:

postscreen_dnsbl_action = enforce
postscreen_dnsbl_threshold = 3
postscreen_dnsbl_sites =
    zen.spamhaus.org=127.0.0.[2..11]*3,
    bl.spamcop.net*2,
    b.barracudacentral.org*2

Content filters do the same thing at a finer grain, adding points to a spam score for each list hit. Put together, the effect depends on what's listed and who's checking:

What's listed What happens
Sending IP, on a list the receiver rejects on 5xx bounce; the message never arrives
Sending IP, on a list the receiver scores Accepted, but more likely to land in junk
A domain in your From: or your links Filtered no matter which IP sends it
A domain on a DNS security filter Your site and links don't resolve for anyone on that resolver
An IP on a mailbox provider's internal list Bounces or junking at that provider only

A listing on a list that few receivers consult may cost you nothing you can measure.

Why Clean Senders Get Listed

Most listings land on people who never meant to send spam. The lists record what came from the address and leave intent out of it:

What happened What ends up listed
A mailbox password got phished and the account started sending Your outbound mail server IP
A contact form with no rate limit got used to mail strangers Your web server or mail relay IP
An outdated CMS plugin got exploited to host a phishing page Your domain, on domain lists and DNS filters
A customer on a shared platform mailed a purchased list The shared IP, for every customer on it
An MTA was left open as a relay The server's IP
A desktop picked up malware that sends spam Your office's public IP, on compromised-host lists

The common blacklist triggers post goes through the patterns that get legitimate senders listed most often.

How to Find Out You're Listed

The slowest way is from your own bounces. If you run Postfix, the evidence is already in the log:

$ grep -E 'status=(bounced|deferred)' /var/log/maillog | grep -iE 'blocked using|blocklist|blacklist|listed'

By the time that grep returns anything, mail is already lost, and a list that only junks your mail never shows up there at all.

Faster is to ask the lists. A few lines of shell will do it, as long as the script tells a refusal apart from a listing:

#!/bin/sh
# usage: ./rblcheck.sh 203.0.113.25
rev=$(echo "$1" | awk -F. '{print $4"."$3"."$2"."$1}')
for zone in zen.spamhaus.org bl.spamcop.net b.barracudacentral.org; do
    answer=$(dig +short "$rev.$zone" A | head -n 1)
    case "$answer" in
        "")            echo "$zone: not listed" ;;
        127.255.255.*) echo "$zone: query refused ($answer)" ;;
        *)             echo "$zone: LISTED ($answer)" ;;
    esac
done

Run against the test address from a machine behind a public resolver:

$ ./rblcheck.sh 127.0.0.2
zen.spamhaus.org: query refused (127.255.255.254)
bl.spamcop.net: LISTED (127.0.0.2)
b.barracudacentral.org: LISTED (127.0.0.2)

Our free blacklist check does the same across the major lists, for IPs and domains, without the resolver problem. Either way it's a snapshot. The listing that hurts is the one that appears while nobody's looking.

How to Get Off a Blacklist

Work through it in this order:

  1. Find the exact list and code. The TXT record or the bounce text names the list and usually links to its lookup page.
  2. Fix the cause. Reset the phished password, clean the infected host, close the relay, pull the plugin. Request removal before this and you'll be relisted, and some lists slow down repeat requests.
  3. Request removal, or wait. Use the list's own site. Many lists expire entries on their own once the abuse stops.
  4. Check again after removal. Delisting can take hours to reach every mirror, and a relisting says step 2 wasn't finished.

How removal works depends on the list:

List How removal works
SpamCop Automatic, 24 hours after the last spam report
Spamhaus SBL Requested by the network operator that controls the IP range
Spamhaus CSS and XBL Self-service through Spamhaus, after the cause is fixed
Spamhaus PBL Send through your provider's relay, or file an exclusion if it's a static IP running a real mail server
UCEPROTECT Every level expires on its own (Level 1 after 7 days without spam); express removal is sold but never required
Domain lists (DBL, SURBL, URIBL) Clean up the domain, then request removal from each list

Spamhaus doesn't charge for removal, and a page asking you to pay to delist from it is a scam. Our delisting checklist covers the request itself: what to include, and the mistakes that get a request ignored.

The gap between getting listed and finding out is where the damage happens. Generator Labs Blacklist Monitoring checks your IPs, domains, and CIDR ranges against 90+ blocklists, DNS security filters, and threat sources, and alerts you by email, Slack, SMS, or webhook when a listing appears or clears. The free plan covers one IP or domain with no time limit.

NewerSnowshoe Spam and Why Fresh IP Ranges Get Blocked

Start Monitoring Today

Free plan available. No credit card required.