Why the first email sometimes takes a minute

« Blog · By

You sign up somewhere, wait for the confirmation link — and nothing happens. After thirty seconds you start wondering whether something is broken. Usually it is not. Usually the delay is built in.

Reason 1: greylisting

Many mail servers deliberately reject a message from an unknown sender on the first attempt, with an error code meaning "try again later". Only the second attempt is accepted.

The idea behind it is elegant. A proper mail server has a queue and retries after a few minutes. A spam script does not — it works through its list and moves on. Greylisting therefore filters not by content but by persistence.

The price: the first message from a new sender typically arrives one to fifteen minutes late. Every later one is instant, because the sender and recipient combination is then known.

Reason 2: queues on the sending side

When a service sends a thousand confirmation emails at once, they do not all leave simultaneously. They go into a queue and are worked through at a limited rate — partly because too many concurrent connections to the same receiving server look suspicious.

Your confirmation message may therefore have been generated long ago and still be waiting.

Reason 3: how the recipient fetches mail

This depends on how the provider works.

The simple approach is polling: check at fixed intervals whether anything new has arrived. If a service checks every 30 seconds, a message is on average 15 seconds old before it is even noticed — 30 in the worst case.

The better approach is IMAP IDLE. A connection to the mail server stays open and the server announces new mail by itself the moment it arrives. The message is known within a fraction of a second instead of after half an interval.

On top of that there is often a second layer: the web page in your browser also asks periodically whether anything is new. Those two intervals add up.

getSend uses the simple variant. A service on our server connects to the mailbox at random intervals of 15 to 45 seconds and fetches whatever is there. The interface in your browser asks every 3 to 13 seconds whether anything new has arrived. Both intervals are deliberately random so that the requests do not all land at once. On average that puts about 38 seconds between a message reaching the mail server and appearing in your mailbox, and just under a minute in the worst case.

How it accumulates

Stagegood casebad case
Queue at the sender1 s60 s
Greylisting0 s900 s
Fetch at the recipient< 1 s (IDLE)half the polling interval
Refresh in the browser< 1 shalf the poll interval

Greylisting is by far the largest item — and the only one neither sender nor recipient can shortcut in an individual case.

What to do when nothing arrives

  1. Wait two or three minutes. In most cases it resolves itself.
  2. Do not hammer "resend". That creates several messages, and some providers invalidate all but the last — so in the end no link works at all.
  3. Check the spam folder if you are using a normal mailbox.
  4. Re-read the address. A typo is the most common cause, and nobody gets an error message about it.
  5. Only then request a new one, ideally after five minutes.

And if it truly never arrives?

Then it is usually one of three things: the sender is on a blocklist, the address does not exist as typed, or a filter discarded the message silently. The last case is the most frustrating, because nobody is told — neither you nor the sender.