← Mail Diagnostics

FOR YOUR TERMINAL · 5 MIN READ

Useful Answers. Copyable Commands.

A command-line request to the home page returns your connection IP and one newline. Diagnostic reports use a separate JSON endpoint.

No API KeyPlain IP + JSON60 Requests / Minute
Lookup Only

MXBLACKLIST reads DNS and existing blocklist data. It does not submit spam reports, upload messages, request new listings or send removal requests. Any review request is your own action on the provider’s website.

curl

Just the domain. No parameters.

Terminal
curl mxblacklist.info

The bare command uses HTTP. Use HTTPS for an encrypted connection:

Terminal
curl -fsS https://mxblacklist.info

A Stable Plain-text Path

/ip returns plain text regardless of user agent. It identifies the source of this web request—not necessarily an outbound mail server.

Terminal
curl -fsS https://mxblacklist.info/ip

IPv4 or IPv6

Your connection must support the chosen family.

IPv4
curl -4 -fsS https://mxblacklist.info/ip
IPv6
curl -6 -fsS https://mxblacklist.info/ip

PowerShell and wget

PowerShell
(Invoke-RestMethod -Uri 'https://mxblacklist.info/ip').Trim()
Wget
wget -qO- https://mxblacklist.info/ip

IP JSON

JSON Request
curl -fsS https://mxblacklist.info/api/ip
Illustrative response—not your address
{"ip":"192.0.2.25","version":4}

Inspect Mail DNS

Use exactly one mode and one target parameter. Domains use ASCII DNS labels; enter punycode for internationalized names. No email addresses or URLs.

Mail DNS
curl -fsS "https://mxblacklist.info/api/check?mode=domain&target=mxblacklist.info"
PowerShell JSON
$report = Invoke-RestMethod -Uri 'https://mxblacklist.info/api/check?mode=domain&target=mxblacklist.info'
$report.cards | Select-Object title, label, detail

Inspect a Sending IP

Replace the placeholder below with a public sending-server IP from your own logs. Private, local and documentation ranges are not accepted.

Terminal
curl -fsS --get 'https://mxblacklist.info/api/check' --data-urlencode 'mode=ip' --data-urlencode 'target=YOUR_PUBLIC_SENDING_IP'

IPv4 runs SpamCop and PTR checks. IPv6 receives PTR only, with its SpamCop state explicitly unsupported. This is not a bulk-query endpoint.

Read the Report, Not Just HTTP 200

Reports include mode, target, checkedAt, completedAt, resolver, lookupUnits, scope and cards. Each card has a state, label, detail and available records or query data.

States include info, review, listed, clear, unknown and unsupported. HTTP 200 can contain incomplete checks. Only clear means the one checked blocklist returned an unlisted response; other states must not be collapsed into “clean.”

Two Shared Allowances

The server allows 60 HTTP requests per source IP, per site, in any rolling 60 seconds. Pages, assets, HEAD requests and endpoints share that allowance. It also permits 6 diagnostic lookup units per IP in a rolling minute: Mail DNS reserves 3, IPv4 reserves 4, and IPv6 PTR reserves 1. Failed lookups still consume reserved units. Both limits apply, and people behind one public IP share them.

X-RateLimit-Limit and X-RateLimit-Remaining expose the HTTP budget. Diagnostic requests also expose X-LookupLimit-Limit and X-LookupLimit-Remaining after reservation. Responses are non-cacheable.

Handle Failures Deliberately

HTTP 400 means invalid input; 405 means the method is unsupported; 429 means wait for the Retry-After seconds; 503 can indicate that the configured lookup budget is too small for the selected mode. A 502 is a processing failure. Do not retry in a tight loop. Concurrency, response sizes and upstream timeouts are bounded.

Free endpoints have no uptime commitment. A supported connected browser agent may run the same visible diagnostic action when you ask it to; it uses the same validation and budgets, not an alternate path around them.