Skip to main content
Network tools

Check an IP against the DNSBLs that actually block your mail

Reverse the octets, query the zone, read the 127.0.0.x code — across 8 DNSBL zones on Mac and Windows, 10 on iPhone and iPad.

Mail that arrived yesterday is bouncing today. The SMTP log shows a 5.7.1 rejection with a URL buried in it, or worse, nothing at all — the receiving side accepted the message and quietly dropped it. The first question is always the same: is the sending IP on a blocklist, and if so, which one? A DNSBL — a DNS-based blocklist, still widely called an RBL — answers that in one DNS query per zone. There is no API, no login and no scraping involved. You reverse the four octets of the address, append the zone's domain, and ask for an A record. NXDOMAIN means not listed. An answer inside 127.0.0.0/8 means listed, and the low byte tells you which sublist caught you and why. The catch is that the answer is only useful if you query the right zones and understand what each one is saying. There are hundreds of public lists; a handful are actually consulted by the mail servers that matter, and several of the rest are aggressive, stale, or shut down entirely. A tool that reports "listed on 3 of 100 lists" without naming the three is worse than no answer: it sends you filling in removal forms for zones nobody queries while the one listing that is genuinely blocking your mail stays in place. SSHive runs the check natively on whatever device you have with you. On macOS and Windows it queries 8 zones in parallel and pulls the TXT record on every hit, so you get the operator's own reason string and removal pointer next to the return code. On iPhone and iPad it queries 10 zones and shows the raw 127.0.0.x code for each. It is IPv4 only, it behaves identically in the sandboxed Mac App Store build and the direct-download DMG, and it is free on all four platforms — no account, no ads, and no server of ours anywhere in the path.

What SSHive does

8 zones on desktop, 10 on mobile — named

macOS and Windows query zen.spamhaus.org, b.barracudacentral.org, bl.spamcop.net, dnsbl.sorbs.net, bl.mailspike.net, dnsbl-1.uceprotect.net, psbl.surriel.com and all.s5h.net. iPhone and iPad query the same set minus psbl.surriel.com, plus dnsbl-2.uceprotect.net, ix.dnsbl.manitu.net and dnsbl.dronebl.org — ten in total. The lists differ by platform, and every zone is shown by name.

The reason string, not just a red flag

On macOS and Windows, every hit triggers a second TXT query against the same name, so the Reason column shows the operator's own explanation — usually including the URL of its removal page. When no TXT is published, the raw 127.0.0.x return code is shown instead. On iPhone and iPad the TXT record is not fetched: the return code alone is displayed under each listed zone.

IP or hostname, resolved for you

The field accepts a dotted-quad IPv4 or a hostname. A hostname is resolved to its first A record before any zone is queried, so you can paste the name straight out of a bounce message. Bear in mind that resolving a domain gives you its web address, not its mail exchangers — for a mail domain, run MX Lookup instead.

Works inside the App Sandbox

A DNSBL query is an ordinary A-record lookup through the system resolver — no raw sockets, no privileged ports, no spawned binaries. That is why the blacklist check is identical in the Mac App Store build and the direct-download DMG, and fully functional on iPhone and iPad. Traceroute cannot make that claim; this tool can.

Every MX server checked automatically

On macOS and Windows, MX Lookup runs the same DNSBL engine on its own results: each mail exchanger is resolved, reverse-resolved, and its first IPv4 address checked against all 8 zones, with a Not listed or Blacklisted pill per row.

Free, on every platform, with no account

The whole network-tools suite is free on Mac, Windows, iPhone and iPad. There is no Pro gate on the blacklist check, no ad interstitial before a result, and no sign-up. SSHive Pro is a separate one-time purchase (around 9.99 USD, Universal across Mac, iPhone and iPad) that unlocks other features entirely — never these.

How to do it, step by step

  1. 1

    Open Network Tools

    On macOS and Windows, click the network icon in the sidebar, or the Network tools pill on the Welcome screen — either one opens a Network Tools tab. On iPhone, tap Tools in the bottom tab bar. On iPad, select Network tools in the split-view sidebar.

  2. 2

    Find the DNSBL Check card

    On desktop, DNSBL Check is the third card of the grid at the top of the panel, alongside DNS Lookup, Network Interfaces and MX Lookup. (Whois is further down, in the full-width row with Ping and Traceroute.)

  3. 3

    Enter an IPv4 address or a hostname

    Type a dotted quad such as 203.0.113.25, or a hostname — the desktop placeholder reads "e.g. 1.2.3.4 or domain.com". A hostname is resolved to its first A record before the zones are queried. Press Check blacklists. All zones go out in parallel, so a full run takes roughly as long as the slowest single DNS lookup.

  4. 4

    Read the summary, then the per-zone rows

    Desktop shows a summary pill reading "<n>/8 blacklists" — green at zero, red otherwise — above a three-column table of Zone, Status and Reason. iPhone and iPad show a green Clean shield or a red count of lists, then a Listed section followed by a Clean section, each listed row carrying its raw 127.0.0.x return code.

  5. 5

    Follow the reason string to the right removal form

    On macOS and Windows the Reason column carries the zone's TXT record, which usually contains the operator's explanation and the address of its removal page. Note the exact zone name, fix the underlying cause first, then go to that operator's own form. Never use a bulk service promising removal from a hundred lists at once.

Reading the result: which listings actually block mail

Not all rows carry the same weight, and treating them as equal is the most common mistake. zen.spamhaus.org is the one that decides whether your mail arrives. It is a composite zone, and the return code says which component fired. 127.0.0.2 and 127.0.0.3 are SBL and CSS — a known spam source or a snowshoe range. 127.0.0.4 through 127.0.0.7 are XBL: a compromised machine emitting through a proxy, bot or worm, which normally means something on your network is infected rather than misconfigured. 127.0.0.9 is DROP, for hijacked or criminal netblocks. 127.0.0.10 and 127.0.0.11 are PBL, and PBL is not an accusation of spamming at all — it states that the address sits in dynamic or end-user space that the network operator itself declared should not deliver directly to MX. A home connection or a fresh cloud instance hitting PBL needs to relay through a smarthost, not file an appeal. Anything in 127.255.255.0/24 is not a real listing. It is the zone refusing the query, usually because it arrived via a large public resolver such as 8.8.8.8 or 1.1.1.1. Know how SSHive renders that: it counts any answer beginning with 127. as listed, so on a public resolver Spamhaus can come back as a red Listed row whose return code is 127.255.255.254. That is a refused query, not a blocklisting — read the code, not the colour. The opposite failure exists too: when a zone answers with a DNS error rather than an address, SSHive records it as not listed, so a Clean row can also mean no answer at all. Either way, re-run the check on a network using its own or its ISP's recursive resolver before trusting the result.

Frequently asked questions

Is the blacklist check available in the Mac App Store version of SSHive?+
Yes, and it is identical to the direct-download DMG: the same 8 zones, the same TXT reason lookup, no sandbox guard. A DNSBL query is a plain A-record lookup through the system resolver, so it needs none of the privileges Apple's sandbox withholds. That is not true of every tool in the suite — traceroute is deliberately disabled in the Mac App Store build because it requires ICMP raw sockets, and it works only on the direct-download DMG and on Windows.
Why does my iPhone check 10 lists and my Mac only 8?+
The two codebases ship different zone sets. macOS and Windows check 8 zones; iPhone and iPad check 10 — the same list minus psbl.surriel.com, plus dnsbl-2.uceprotect.net, ix.dnsbl.manitu.net and dnsbl.dronebl.org. So a result can legitimately differ between your Mac and your phone. The most common case is a UCEPROTECT level 2 hit visible only on mobile, which reflects your allocation's neighbours rather than your own IP.
Can I check an IPv6 address?+
No. The tool is IPv4 only on every platform: anything that is not a dotted quad (or a hostname resolving to one) is rejected. IPv6 blocklisting requires a 32-nibble ip6.arpa-style encoding, and real coverage across the major zones remains thin, so SSHive declines the query rather than return a result it cannot stand behind. If your MTA is dual-stacked, check its IPv4 address and use provider postmaster tooling for the v6 side.
I'm listed on Spamhaus PBL — did my server send spam?+
Almost certainly not. PBL (return codes 127.0.0.10 and 127.0.0.11 in the zen composite) is a policy list, not an abuse list. It records that the address sits in a range the network operator itself declared as dynamic or end-user space that should not talk directly to remote MX servers. Typical triggers are a residential connection or a cloud IP whose provider has not opened port 25. The fix is to relay through your provider's smarthost, or ask the operator to declassify the range — not to file an abuse appeal.
Every zone says Clean but my mail still bounces at Outlook. Why?+
Two reasons, and both are worth ruling out. First, the large mailbox providers maintain private reputation systems that no public DNSBL exposes; a Microsoft or Google block is theirs alone and is handled through their own postmaster channels, not a delisting form. Second, the zone may not have answered the question you think it did. When a blocklist refuses a query — most do this for traffic arriving via 8.8.8.8 or 1.1.1.1 — it usually replies with a code in 127.255.255.0/24, which SSHive shows as a red Listed row; check the return code before you believe a hit. When it replies with a DNS error instead, SSHive records it as not listed, so a Clean row can be no answer at all. Re-test from a network using its own recursive resolver before concluding anything.
Can I check a domain instead of an IP address?+
You can type a hostname, and it is resolved to its first A record before the zones are queried. But be clear about what that tests: for example.com you are checking the IP behind the website, which is frequently not the machine that sends the mail. To check the machines that actually deliver your mail, use MX Lookup — on macOS and Windows it resolves every mail exchanger and runs the same 8-zone DNSBL check on the first IPv4 of each one automatically.
Do I need SSHive Pro to run a blacklist check?+
No. The entire network-tools suite — blacklist check, MX lookup, DNS lookup, whois, ping and network interfaces — is free on Mac, Windows, iPhone and iPad, with no account and no ads. SSHive Pro is an optional one-time purchase (around 9.99 USD) that is Universal across Mac, iPhone and iPad and unlocks unrelated features. There is no subscription, and none of these diagnostics is behind a paywall on any platform.

How a DNSBL query works, and why delisting order matters

A DNSBL is a database published entirely through DNS, which is exactly why it is the one diagnostic that behaves identically on every platform SSHive ships on. To test 203.0.113.25 against zen.spamhaus.org, the client reverses the four octets and asks for an A record at 25.113.0.203.zen.spamhaus.org. The reversal is not cosmetic. DNS delegates hierarchically from right to left, so writing the address backwards lets a zone operator delegate by /8, /16 or /24 exactly the way in-addr.arpa does for reverse lookups. NXDOMAIN means not listed. Any answer inside 127.0.0.0/8 means listed, with the low bytes encoding which sublist matched. A TXT record at the same name, where the operator publishes one, carries the human-readable reason and the removal URL. SSHive implements this twice. On macOS and Windows the main process fires all eight zone queries in parallel through Node's c-ares resolver, each caught individually so a dead or rate-limited zone cannot fail the whole run; on a hit it issues a second TXT query against the same name for the reason string. On iPhone and iPad the Swift implementation fans the ten zones out across a throwing task group on a utility queue, one getaddrinfo pinned to AF_INET per zone, then sorts results listed-first and alphabetically. Both accept a literal dotted quad or a hostname, resolving the hostname to its first A record before touching any zone. Because all of that is an ordinary A-record lookup through the system resolver, there are no raw sockets, no privileged ports and no spawned binaries involved — so the check runs unmodified inside the App Sandbox. That matters, because it is not true of every tool here: traceroute needs ICMP raw sockets, so it works on the direct-download macOS DMG and on Windows, is deliberately disabled in the Mac App Store build, and is not a genuine traceroute on iPhone or iPad. The DNSBL check carries no such asterisk. It also means every query leaves your device for the zone's nameservers directly, through whatever resolver your network assigned — there is no SSHive backend and no third-party web API in the path. Two limits are deliberate. The tool is IPv4 only, and it checks IP-based zones only: no URIBL or SURBL domain-based lists, no listing timestamps, no clickable removal links. Which brings you to delisting, where the order of operations decides everything. Fix the cause before you submit anything — removing a listing while the source is still active gets you relisted, usually with a longer penalty. The usual causes, roughly by frequency: one compromised SMTP AUTH account (look for a single username authenticating from many source IPs), an abused web contact form, an open relay, a malware-infected workstation sharing your public IP behind NAT, and a legitimate mailing list gone stale enough to hit spamtraps. Then confirm the basics: forward-confirming reverse DNS that matches your HELO name, plus SPF, DKIM and DMARC. Only then use each operator's own removal page. Spamhaus, Barracuda and SpamCop all run self-service forms; PSBL, NiX Spam and UCEPROTECT level 1 expire on their own once the traffic stops. Skip any service offering to remove you from a hundred lists at once, and expect delivery to recover days after the listing itself clears.