Browse the documentation

Addresses that cannot receive mail

Issue Mint refuses an address whose domain has no way to receive email at all, whether it arrives in an import or through a signup form. A domain with no mail server and no address record cannot take delivery, so every address on it is a guaranteed hard bounce, and an import is the cheapest moment in the whole system to drop one.

What the check tests

It asks the domain three questions, in order, and only calls it dead when all three come back empty.

First the mail server records. Most domains answer there and the check stops, which is why a file of five thousand addresses costs far fewer lookups than it has rows. If there are none, it asks for the domain’s address records, both the older and the newer form. A domain that answers any of the three has somewhere for mail to go.

Answers are cached across imports and across signup forms, positives for a week, because mail server records rarely move. A busy signup form on an established newsletter usually costs no lookup at all.

What the check refuses to test

It answers a question about the domain, never about the mailbox, and that limit is deliberate rather than a gap.

An address at a real domain is accepted whether or not anybody is behind it. The only way to test a mailbox is to open a conversation with the mail server and ask about it by name, and Issue Mint will not do that: catch-all domains accept everything so the answer is frequently meaningless, the large providers rate limit and block whoever probes them, and doing it from our own addresses would spend the sender reputation the rest of the platform’s controls exist to protect. What is left is narrower and still worth having.

Why an import is the right moment

A dead domain caught at import costs nothing. The same address caught at send time costs a bounce, and bounces are the thing that stops you sending.

Hosted sending pauses when hard bounces reach 5 per cent of an issue’s recipients, and that is the figure the mailbox providers act on too, so it is the figure we act on first. One file of stale addresses can take an otherwise healthy list past it. Trimming applies to imports on your own Amazon SES or SMTP account as well as hosted ones, which is not true of the other import controls: a guaranteed bounce costs you your own reputation with your own provider, so trimming it is a favour rather than a restriction.

Three biases towards keeping an address

The failure this check must never have is quietly binning a good list. Three decisions push it the other way.

An address record counts as a mail server

A domain with no mail server records is not necessarily dead. The email standards make a plain address record an implicit mail exchanger, and small domains do still rely on that, so all three lookups have to come back empty before an address is refused.

A lookup that failed is not an answer of nothing

A resolver cannot tell you the difference between a domain with no records and a question it could not ask, because both come back as an empty result. Treating the second as the first is how a list gets destroyed during somebody else’s outage, so Issue Mint proves the resolver is answering before it trusts any verdict at all. The control probe below is that proof.

A negative answer expires in an hour

A positive is cached for a week; a negative for an hour. No records right now can be a domain having a bad afternoon, and a week of believing that would be a week of dropping addresses that are fine.

The control probe

Before any address is refused, Issue Mint looks up a domain that is known to work, and it only calls anything dead if that lookup succeeded in the same run.

If the control lookup fails, trimming switches off completely. Every address passes the check, the import runs untrimmed, and signup forms accept whatever they are given, because a broken resolver making decisions about a customer’s list is a far worse outcome than a few bounces. The probe costs one lookup per import and is cached for a few minutes on the signup forms, which ask the same question on every submission.

This is also why the check is not the one line of standard framework validation that would have done a similar job. That version treats a resolver failure as an invalid address, so our DNS going quiet would take every customer’s signup form down while telling readers their own address was wrong.

The ceiling on how much DNS one file may cost

One import may look up 2,000 distinct domains. Past that, trimming stops and the rest of the file imports unchecked.

The arithmetic behind the ceiling is unkind. A live domain answers on the first lookup in a few tens of milliseconds, but a dead one is asked three questions and each is tried against two resolvers before giving up, which measures close to a second. A scraped list of eight thousand dead domains is therefore hours of lookups against a job that has fifteen minutes, and that list is precisely the input this feature exists for. Letting some undeliverable addresses through costs a few bounces. Running out of time marks the whole import failed partway, which is worse.

What happens to a refused address

It is not added, it is counted among the rows that could not be used, and it is written down.

No subscriber row is created, because a subscriber for somebody we will never contact is a permanent record of nothing. Instead the address, its domain and when it was seen go into the refused addresses panel on your subscriber list, so the question of which five addresses went missing from a file of 683 has an answer weeks later.

Questions

Can I switch the check off for my newsletter?

No. There is no per-account setting. It runs on every import and every signup form on the platform, on hosted sending and on your own sending account alike, and the only thing that stops it is our own DNS lookups failing.

A domain was down for an afternoon. Are those addresses gone for good?

No. A negative answer is only trusted for an hour, so the next import looks the domain up again. The addresses themselves are not retried on their own, so add them again or include them in another file once the domain is answering.

Does this catch a typo in the part before the at sign?

No, and nothing can. An address at a domain that exists is accepted whether or not anybody is behind it, so a misspelled name at a real company still goes onto your list and shows up later as a bounce.

Last updated 21 August 2026.

Try it on your own list.

14 days, every feature, no card. Sending works from the moment you sign up.

Start your trial