← Blog/Deliverability

SMTP queues explained: how mail queuing affects delivery speed

October 15, 2026·6 min read·By MailPilot

An SMTP queue is the holding area a mail transfer agent (MTA) uses between accepting a message from the sender and successfully handing it off to the next hop. "Sent" from your application does not mean "delivered" - it means accepted into a queue, and what happens in that queue determines how fast, and whether, the message actually arrives.

The queues inside a typical MTA

Postfix, one of the most common MTAs, splits queued mail into four directories, and the same logical stages exist in Exim, Sendmail, and most managed ESPs even if the names differ:

  • incoming - messages just received, waiting to be picked up by the queue manager.
  • active - messages currently being processed for delivery right now.
  • deferred - messages that failed a delivery attempt with a temporary (4xx) error and are waiting to retry.
  • hold - messages manually or policy-held, not attempted until released.

A message that gets a clean 250 on the first attempt moves from incoming through active and out in seconds. A message that hits a 450 or 421 from the receiving server lands in deferred and waits for the next retry window.

Why messages end up deferred

The most common cause is not a configuration error on your end - it is the receiving server applying temporary throttling:

  • Greylisting: a receiving server intentionally returns 450 4.2.0 on the first attempt from an unfamiliar sender/IP/recipient combination, expecting a legitimate MTA to retry.
  • Rate limiting: the receiver is capping connections or messages per unit time from your IP, common at Gmail and Microsoft 365 when sending volume spikes.
  • Recipient server temporarily unavailable: a 421 or 450 with no sender-side cause at all.
  • Your own outbound rate limit: some MTAs and relays cap concurrent connections per destination domain, queuing excess messages even though nothing failed yet.

Retry and backoff behaviour

Postfix's default deferred-queue retry schedule backs off geometrically up to a maximum interval, typically starting around 300 seconds and extending toward a configured ceiling (maximal_backoff_time, default 4000s) across the message's maximum queue lifetime (maximal_queue_lifetime, default 5 days). A message that keeps hitting greylisting or rate limits can legitimately sit in deferred for hours without anything being "broken" - it will eventually get through once the receiving server's temporary condition clears, which is exactly what greylisting is designed to test for.

Monitoring the queue

# Postfix: summary of queue size by age and destination
postqueue -p | tail -20

# Human-readable breakdown of deferred mail by domain and reason
qshape deferred

# Force an immediate retry of all deferred mail (use sparingly - it
# re-floods receivers that are rate-limiting you for a reason)
postqueue -f

# Count messages currently queued
mailq | grep -c '^[A-F0-9]'

qshape deferred is the most useful single command here - it buckets deferred mail by destination domain and by how long it has been retried, which immediately tells you whether the problem is one domain throttling you (focus there) or a general sending-infrastructure issue (focus on your own IP/domain reputation).

How queue behaviour impacts deliverability, not just speed

A queue that is backing up with deferrals to major providers is an early-warning signal, not just a latency problem. Gmail and Microsoft 365 returning repeated 450/421 to your sending IP over a rolling window is frequently the first sign of a reputation or rate problem, well before anything lands in spam folders outright. Reading the deferred queue by destination domain catches this before complaint rates climb.

Common queue issues and what they mean

SymptomLikely causeWhat to check
Deferred mail growing to one domain onlyRate limiting or greylisting at that providerReduce concurrent connections to that domain, check recent volume change
Deferred mail across many domainsSending IP or domain reputation issueCheck blocklists, recent complaint/bounce rate
Queue never drains, retries exhaustedHard infrastructure issue (DNS, firewall, wrong relay)Confirm MX resolution and outbound port 25/587 reachability
Hold queue growingPolicy or manual hold rule triggering unexpectedlyReview content filter and policy rules

What not to do

Do not force-flush a deferred queue repeatedly as a fix for throttling - re-attempting immediately against a rate limit just adds more rejected connections and can read as more aggressive, not less. Do not ignore a growing deferred queue because messages are "still technically being retried" - by the time retries are exhausted, you have lost the message and likely also absorbed reputation damage from the pattern of failed attempts. And do not set an aggressive custom retry schedule to "push through" greylisting faster - greylisting works specifically because legitimate MTAs retry on a normal schedule; working around that defeats its purpose and can look more suspicious to the receiving system, not less.

MailPilot's warm-up sends are paced and monitored against real per-provider inbox placement, which is exactly the kind of gradual, queue-friendly sending pattern that avoids triggering the rate limits and greylisting responses that back up a queue in the first place.

MailPilot

Ready to reach the inbox every time?

Automated email warmup across real peer mailboxes. Live inbox placement monitoring. Free 7-day trial - no credit card required.

Start free trial
Reach the Inbox, Every Time
Connect unlimited inboxes for warmup. Free 7-day trial, no credit card.
Try for Free
WORKS WITH
OZOHO
inbox placement99.2%
free trial7-day
companies trust us340+

Start for free - no credit card required.

Get started freeBook a demo