A bounce message or just "bounce" is an automated e-mail message from a mail system, informing the sender of a previous message that that message had not been delivered (or some other delivery problem occurred). The original message is said to have "bounced". More formal terms for bounce message include "Non-Delivery Report" or "Non-Delivery Receipt" (NDR), [Failed] "Delivery Status Notification" (DSN) message, or a "Non-Delivery Notification" (NDN).
Errors may occur at multiple places in mail delivery. A sender may sometimes receive a bounce message from their own mail server, reporting that it has been unable to deliver a message, or alternatively from a recipient's mail server reporting that although it had accepted the message, it now finds it undeliverable - when a server accepts a message for delivery, it is also accepting the responsibility to deliver a DSN in the event the delivery fails.
For various reasons, particularly forged spam and email viruses, users may receive erroneous bounce messages sent in response to messages they never actually sent.
Imagine that Jack (jack@store.example) sends a message to Jill (jill@library.example) at a different site. Once Jack's mail server has accepted the message, it must either pass it along to Jill's mail server, or else deposit a bounce message in Jack's mailbox.
Let us say that Jack's mail server passes it on to Jill's mail server (at library.example), which accepts the message for delivery. However, unfortunately, a moment later the disk on the library.example server fills up, and so the mail daemon cannot deposit the message in Jill's mailbox. As an alternative cause of failure, consider that Jill might have instructed the library.example server to forward her mail to, say, jill@example.edu, and that the latter server refused the message for whatever reason.
The library.example mail server then must send a bounce message to jack@store.example, informing Jack that his message to Jill's mailbox could not be delivered.
Had the library.example mail server known that the message would be undeliverable (for instance, if Jill had no user account there) then it would not have accepted the message in the first place, and therefore would not have sent the bounce. Instead, it would have rejected the message with an SMTP error code. This would leave Jack's mail server (at store.example) the obligation to create and deliver a bounce.
However, problems arise if Jill's mail server receives a message with a forged Return-Path, e.g., if spammer@example.net sends an unsolicited bulk message claiming to be from jack@store.example. In this case, Jill's mail server would send the bounce message to Jack even though Jack never sent the original message to Jill. This is called backscatter.