danisflow.online

How the address check works

It is an ordinary SMTP conversation that we hang up on. The recipient's own mail server is the only authority on whether one of its mailboxes exists, so we ask it — and then we stop before the command that would deliver anything.

The conversation, in full

For an address at example.com, the host looks up that domain's MX records, opens a connection to the mail server the domain itself nominates, and says this much:

HELO probe.danisflow.online
MAIL FROM:<>
RCPT TO:<contact@example.com>
  → 250 Recipient OK          the mailbox exists
  → 550 5.1.1 User unknown    the mailbox does not exist
QUIT

The DATA command, which is the one that would transmit a message, is never issued. There is no message to transmit: nothing is composed, queued or attached. The server answers RCPT TO from its own recipient directory and we record the answer.

The null sender is deliberate. MAIL FROM:<> is the empty reverse-path from RFC 5321 §4.5.5 — the same envelope sender a mail server uses for a bounce notification. It cannot be replied to and it cannot be used to deliver anything.

The limits we hold ourselves to

RateOne check every four seconds, and a hard daily ceiling in the low hundreds. This is not a bulk scanner and it is not built to be one.
RetriesA temporary refusal (any 4xx) is recorded as “no answer yet” and not retried in the same run. Greylisting works on us the way it is supposed to.
GuessingWe do not iterate through candidate names hunting for a valid one. We check addresses we already hold, and one non-existent name per domain for the reason below.
ScopeOne connection to the port a domain publicly advertises for mail. No port scanning, no probing of any other service.

The one address we check that is not real

Many mail servers are configured to accept every address at a domain and sort it out later. Against those, a 250 means nothing at all. To detect that, the host first offers one randomly generated local part that cannot belong to anybody. If the server accepts it, we mark the whole domain as unverifiable and treat every address on it as unknown rather than drawing a false conclusion. That check is why you may see two connections from us instead of one.

What we conclude, and what we refuse to conclude

An answer about us is never recorded as an answer about the mailbox. A refusal citing reputation, policy, rate limits, or RFC 3463 class 5.7.x — the class reserved for security and policy status — is filed as “blocked, unknown” and the address is left exactly as it was. Only an explicit statement that the recipient does not exist is recorded as a dead address.

This distinction is the whole point of the exercise. Reading “we don't like your server” as “this person doesn't exist” would quietly discard real contacts, which is the opposite of what verification is for.