Disposable & Threat Detection6 min read•

Detecting Rotating Temp-Mail: Why the Domain Name Is the Wrong Signal

temp-mail.org mints a new domain for every inbox. The website often does not resolve. The mail server IP does.

Verified Deliverability Guide•Updated for 2026 Protocols
Temp-mail gateway

Domain rotates. The mail-server IP does not.

Exact IP match
1. Fresh domain

inbox@rotating-domain

Not on any name list. No public website.

2. MX resolves

mail gateway

Confirmed server

3. Verdict

do_not_mail · disposable

SMTP skipped. Confidence 95.

Figure 1.0: Real-time architectural protocol visualization (Detecting Rotating Temp-Mail: Why the Domain Name Is the Wrong Signal)

1. Why a new temp-mail address looks legitimate

The domain changes. The inbox gateway does not.

Services such as temp-mail.org do not reuse a single public burner name. Each inbox is issued on a fresh domain. That name has never appeared on a public disposable list, so a lookup that only compares the domain string returns clean.

Opening the domain in a browser often fails because it publishes no website address. It does publish mail, and the mail host answers on a stable gateway. Treating “no website” as disposable would also flag parked brands, internal mail domains, and new companies that have not launched a site yet.

Do not block a whole hosting range

A match is one confirmed mail gateway, not the address next to it and not the cloud range it sits in. Those ranges are shared with legitimate mail.

2. The check that actually holds

Resolve the MX host, then match an exact IP

After syntax and MX lookup, BounceLayer resolves the A records of the mail hosts. If one of those addresses is a confirmed temp-mail gateway, the result is disposable: status do_not_mail, reason disposable, confidence 95. SMTP is not opened, so the verifier does not talk to the burner server.

Hosts that belong to major mailbox providers are skipped before any IP test. A Google or Microsoft MX is never marked disposable because it shares a data-center neighborhood with something else.

  • Single verify and the homepage demo run the check on a live verification.
  • Bulk upload runs it for every row, including a Redis hit that was stored before the rule existed.
  • Risk Intelligence scores the same hit as disposable and risky, without an SMTP probe.
  • The public email checker applies it after the MX lookup.
SignalRotating inboxUsed as a verdict?
Domain on a disposable listNoMisses rotating names
Website addressNoneClue only
MX hostnameA fresh mail hostNot enough on its own
Mail-server addressConfirmed gatewayYes, exact match
Neighboring addressDifferent hostNo
Major provider MXGoogle or MicrosoftNo

3. What this does not claim

High precision on a confirmed gateway, not every burner on the internet

Accuracy here means few false positives. An address is flagged only when its mail server is a gateway we have confirmed as temp-mail. A new provider on a different server is a miss until that gateway is confirmed. A domain that later moves off the gateway stops matching, which is the correct outcome.

Name lists still catch the well-known burners (mailinator, yopmail, guerrillamail, and the rest of the bundled set). The IP check is the extra layer for domains those lists have never seen.

How to read the result

A disposable verdict means do not mail it and do not treat the signup as a real customer. It does not mean the mailbox failed an SMTP rejection. The probe was skipped on purpose.

4. Where to run it

Same rule on every verification surface

Paste a single address on the verifier, drop a CSV in bulk upload, or open Risk Intelligence. A rotating temp-mail inbox on this gateway comes back disposable in each of those places, including when an older cached result is read back.

If you only need a fast syntax and MX look, the public email checker reports the same disposable flag without a mailbox probe.

verify-response.jsonjson
{
  "email": "inbox@rotating-domain.example",
  "status": "do_not_mail",
  "is_disposable": true,
  "is_valid": false,
  "confidence_score": 95,
  "status_reason": "disposable",
  "smtp_checked": false
}