NDRNon-Delivery Report

Definition

An NDR (Non-Delivery Report), often just called a bounce message, is the automated email a mail server sends back when it cannot deliver your message. It is a formal Delivery Status Notification (DSN) defined in RFC 3464, and it carries a status code that tells you why delivery failed, which is the difference between a temporary hiccup and a dead address you should suppress.

  • The automated bounce message returned when delivery fails
  • A 5.x.x status code means permanent failure; 4.x.x means temporary
  • Reading the code tells you whether to suppress the address or wait
  • A formal NDR is a Delivery Status Notification under RFC 3464
At a glance
Also called Bounce message · DSN · bounce-back
Defined in RFC 3464 (DSN format)
Status codes RFC 3463 enhanced (X.Y.Z)
Permanent fail 5.x.x (e.g. 5.1.1)
Temporary fail 4.x.x (e.g. 4.2.2)
Sent by The receiving or relaying MTA

What an NDR is

When a mail transfer agent accepts your message but then cannot deliver it, it generates a Non-Delivery Report and sends it back to the Return-Path address. You see it as a “message not delivered” or “mail delivery failed” email landing in the sending mailbox. Behind that plain-language note sits a structured report defined by RFC 3464.

A standards-compliant NDR is a multipart/report message with three parts: a human-readable explanation, a machine-readable message/delivery-status block carrying the status codes, and a copy of the original message or its headers. Automated systems read the machine part; people read the first part. The whole mechanism is part of the wider Delivery Status Notification family.

Reading the status code

The most useful thing in an NDR is its enhanced status code, defined by RFC 3463 in the form X.Y.Z. The first digit is the class, the second is the subject, and the third is the detail:

  • 2.x.x: success. You rarely see these in a bounce.
  • 4.x.x: a temporary failure (a soft bounce). The server is asking you to try again later, for example 4.2.2 for a full mailbox.
  • 5.x.x: a permanent failure (a hard bounce). Delivery will never succeed, for example 5.1.1 for a non-existent mailbox.

The middle digit tells you the category: 1 is an addressing problem, 2 is mailbox status, 4 is network or routing, and 7 is a security or policy issue (the bucket that holds authentication rejections). A real NDR pairs the enhanced code with a classic three-digit SMTP reply, like the example below.

The delivery-status block of an NDR for a non-existent mailbox
Action: failed
Status: 5.1.1
Diagnostic-Code: smtp; 550 5.1.1 The email account that you
  tried to reach does not exist

What to do with an NDR

The right response depends entirely on the class. A 5.x.x permanent failure means the address is bad, blocked, or rejected on policy, so you should move it to your suppression list immediately and stop sending. A 4.x.x temporary failure means your server will retry on its own; let it, and only suppress an address that soft-bounces across several consecutive sends.

Watch the codes in aggregate, not just one at a time. A sudden wave of 5.7.x policy rejections from one provider is usually a sender-side problem, often an authentication or reputation issue, rather than thousands of bad addresses. For the full breakdown, see the guide on email bounce codes.

How an NDR is generated

Your server hands the message to the receiving MTA
The MTA tries to deliver and the attempt fails
It builds a Non-Delivery Report with a status code
4.x.x: temporary 5.x.x: permanent
The NDR is returned to your Return-Path address
You suppress permanent failures and let temporary ones retry

Temporary vs permanent NDR

Temporary (4.x.x) Permanent (5.x.x)
Bounce type Soft bounce Hard bounce
Typical cause Full mailbox, throttling No such mailbox, blocked
What to do Let it retry Suppress at once
Example code 4.2.2 5.1.1
Reputation impact Low if occasional High if repeated

By the numbers

5.1.1
The enhanced status code for a bad destination mailbox, the most common permanent NDR you will see.
3
The MIME parts of a standards-compliant NDR: human text, machine-readable status, and the original message.

Common mistakes

Treating every NDR as a dead address
A 4.x.x NDR is temporary; the address may well work on the next attempt. Suppressing on a single soft bounce throws away valid contacts. Act on the class, not the mere fact of a bounce.
Ignoring policy bounces
A cluster of 5.7.x rejections is usually a sender problem, an authentication or reputation failure, not bad addresses. Diagnose the cause rather than just suppressing the recipients.
Sending from a no-reply with no bounce handling
If nothing reads the Return-Path mailbox, your NDRs pile up unprocessed and your list never gets cleaned. Route bounces to an automated handler that updates suppression.

Frequently asked questions

What is an NDR in email?
A Non-Delivery Report is the automated message a mail server sends back when it cannot deliver your email, commonly called a bounce. It explains in plain language that delivery failed and carries a machine-readable status code that says why, such as a non-existent mailbox or a full inbox. Formally it is a Delivery Status Notification defined in RFC 3464.
How do I read an NDR status code?
Look at the enhanced code in X.Y.Z form. The first digit is the class: 4 is a temporary failure you can retry, and 5 is a permanent one to suppress. The middle digit gives the category (1 addressing, 2 mailbox, 7 security or policy), and the last adds detail. So 5.1.1 is a permanent addressing failure: the mailbox does not exist.
Is an NDR the same as a bounce?
In everyday use, yes. “Bounce” is the informal name and “Non-Delivery Report” is the technical one for the same thing: the automated notice that a message could not be delivered. The formal, structured version of an NDR is a Delivery Status Notification, which standardises the format so software can parse the failure reason.
Reviewed by Jennifer Jackson, Email Deliverability Analyst · June 2026 ← Back to glossary