NDR

The automated report explaining why a message failed to deliver.

Its code tells you if the failure is permanent or worth retrying.

Definition

An NDR (Non-Delivery Report) is the automated message a mail server sends back explaining why a message failed. It is generated by the receiving side and routed back to the sender, usually carrying the original recipient, a plain-language reason, and the underlying SMTP code. Reading it correctly separates a permanent failure from one worth retrying.

We verify billions of email addresses precisely so our customers never have to open one of these. An NDR is the paper trail a bad send leaves behind, and by the time one lands in your inbox, the damage — a bounce against your sender reputation, a metric ticking up, a customer who never got their receipt — has already happened. Here is what an NDR actually is, what it tells you, and why the smart move is to never generate one at all.

What an NDR is

NDR stands for Non-Delivery Report: the automated message a receiving mail server generates when it cannot deliver a message, then routes back to the original sender. It is generated on the receiving side, not the sending side, which is why it can take anywhere from a few seconds to a few days to arrive depending on how long the receiving server was willing to keep trying first.

“NDR” is the formal name, most associated with Microsoft Exchange and Outlook, but the same event goes by several names depending on which system generates it. Gmail labels it a “Mail Delivery Subsystem” notice. Plenty of people just call it a bounce message. Some mail systems use the more formal Delivery Status Notification, or DSN. All of them describe the same underlying event: a message that did not reach its destination, reported back to whoever sent it.

What’s inside one

A well-formed NDR is built from a handful of consistent parts, even though the exact formatting varies by provider. Nearly every one includes the original recipient address you were trying to reach, so you can match the failure back to a specific send. Alongside it sits a plain-language explanation, something like “the recipient’s mailbox is full” or “address not found,” written for a human to read without any technical background.

Below that plain-language line, most NDRs also quote the technical detail that actually triggered the failure: the SMTP response code the receiving server returned, plus a raw diagnostic string from the mail transaction itself. That technical section is easy to skim past, but it is the part that tells you, with certainty, whether the failure was permanent or worth trying again.

Permanent vs temporary NDRs

The single most useful thing an NDR can tell you is which side of that line it falls on, and the plain-language text alone is not always reliable enough to tell. A phrase like “mailbox unavailable” can mean the address does not exist, that it exists but is full, or that it has been temporarily suspended by an administrator, and the wording rarely says which.

The underlying SMTP code resolves the ambiguity every time. An NDR built around a 5xx code is a hard bounce: the failure is permanent, and the address should come off your list rather than get mailed again. An NDR built around a 4xx code is a soft bounce: the failure is temporary, and a sending server will typically retry automatically over the following hours before finally generating the NDR you see, which is also why an NDR can show up days after the original send even though nothing changed on your end.

Common causes

A handful of causes account for the overwhelming majority of NDRs we see across the addresses we verify:

  • Mailbox full. The recipient’s inbox has hit its storage limit and the server is refusing new mail until space frees up, usually a temporary condition.
  • Address does not exist. A typo, a deleted account, or an employee who left the company, all resolving to the same permanent 550-class rejection.
  • Blocked by a spam filter. The receiving server or a security gateway in front of it decided the message looked suspicious enough to reject outright.
  • Message size exceeded. An attachment or total payload larger than the receiving server’s configured limit, rejected before it ever reaches the mailbox.

Notice that only one of these, a nonexistent address, is something verification catches before you ever send. The others are conditions at the moment of delivery, which is exactly why NDRs never disappear entirely, but why the single biggest chunk of them is preventable.

Why parsing NDRs at scale matters

Reading one NDR by eye takes a minute. Reading ten thousand of them, sorting the permanent failures from the temporary ones, and updating your sending list accordingly is not a task a person should ever do by hand. At real sending volume, NDR parsing has to be automated: a script or platform that opens each report, extracts the underlying code, and applies the same permanent-vs-temporary logic consistently across every message.

Even automated, that is still work happening after the damage is done. The bounce has already counted against your bounce rate, the mailbox provider has already logged the failed attempt against your sending reputation, and whatever that email was supposed to deliver — a receipt, a password reset, a marketing offer — never arrived. Verifying an address before you send means the bad address is caught up front, so there is rarely an NDR to parse in the first place.

For teams sending at real volume, where every NDR is a reputation hit you have already taken by the time you read it, the economics of catching bad addresses up front instead of parsing the fallout are on the pricing page.

Explore more from Verifox

NDR sits inside a wider set of deliverability concepts. These are the terms most worth understanding next.

  1. SMTP Response Codes

  2. Hard Bounce

  3. Soft Bounce

Common questions

NDR, answered

A non-delivery report is the error message your own server never shows you. Here’s how to read one, and what it’s actually telling you.

What is the difference between an NDR and a bounce?

Nothing, really. They are two names for the same event. “NDR” is the formal term, borrowed from Microsoft Exchange and Outlook, for the report a mail server generates when a message cannot be delivered. “Bounce” is the informal name most people use for the same thing.

Gmail calls the same event a “Mail Delivery Subsystem” notice, and other systems call it a Delivery Status Notification (DSN). Different vendors, same underlying idea: a failed send, reported back to whoever sent it.

Is an NDR the same as an SMTP response code?

No, and the distinction matters. An SMTP response code is the raw three-digit number, like 550, that a receiving server returns during the mail transaction itself. The NDR is the human-readable report built around that code afterward and delivered to your inbox.

Think of the response code as the evidence and the NDR as the write-up. A well-formed NDR usually quotes the underlying code somewhere in its body, but the two are generated at different points and serve different readers: one is machine-to-machine, the other is meant for a person.

Why did I get an NDR days after sending?

Usually because the failure was temporary at first. A receiving server can queue and retry a message for a while, often 24 to 72 hours, before giving up and generating an NDR. If the recipient’s mailbox was full or their server was briefly down, the retries eat up that whole window before the NDR finally lands in your inbox.

A delayed NDR is a good sign the underlying failure was a soft bounce that never actually cleared, rather than an instant, permanent rejection.

What does “mailbox unavailable” mean in an NDR?

It is one of the most common, and most ambiguous, lines an NDR can contain. It can mean the mailbox does not exist at all, that it exists but is full, or that it is temporarily disabled by an administrator. The wording alone will not tell you which.

The way to disambiguate it is the underlying SMTP response code the NDR quotes. A 5xx code behind that phrase means permanent and unreachable. A 4xx code means temporary and worth another attempt.

Can an NDR be faked or spoofed?

Yes. Because an NDR is just an email, and the classic bounce format never required strong authentication, spammers can forge one to look like a delivery failure while actually carrying a phishing link or malware attachment.

A genuine NDR quotes a message you actually sent and comes from a domain you actually mailed. Treat an unexpected NDR referencing a message you don’t recognize, or one urging you to click a link to “resend,” with the same suspicion as any other unsolicited email.

How do I stop getting NDRs?

Stop sending to addresses that were never going to accept the mail. Every NDR you receive is downstream of a send that was already doomed the moment you clicked send, whether the mailbox never existed, was deleted, or is permanently full.

Running your list through email verification before you send catches those addresses first, so you get an invalid verdict in seconds instead of an NDR hours or days later. Try it free with the free email checker.

What’s inside a typical NDR?

Three things, almost always: the original recipient address you tried to reach, a plain-language explanation of what went wrong, and a technical section quoting the diagnostic code and server response that triggered the failure.

Some NDRs also echo the subject line and a timestamp of the original send, which is useful when you are trying to match an NDR back to a specific campaign or transactional message in bulk.

Do I need to read every NDR my company receives?

Not if you send at any real volume. Reading NDRs one at a time does not scale past a handful a day, and the manual effort adds up fast once you are sending thousands or millions of messages.

The scalable approach is to parse NDRs programmatically, or better, to prevent them upstream with email verification so far fewer NDRs are ever generated in the first place.