Bounce message
A bounce message, also known as a non-delivery report (NDR) or a delivery status notification (DSN) indicating failure, is an automated electronic mail message generated by a mail transfer agent (MTA) to inform the original sender that their message could not be delivered to the intended recipient.[1][2] This notification typically includes diagnostic information, such as the reason for the failure, the recipient's address, and any relevant error codes from the Simple Mail Transfer Protocol (SMTP).[3] The standard format for such messages is defined in RFC 3464, which specifies a MIME content-type within a multipart/report structure to ensure both human-readable explanations and machine-parsable details for interoperability across email systems.[1] Bounce messages are essential for email deliverability management, as they help senders identify and correct issues like invalid addresses or server problems, thereby maintaining the reliability of electronic communication networks.[4] They are categorized into two primary types: hard bounces, which signal permanent delivery failures (e.g., SMTP status codes starting with 5.x.x, such as 5.1.1 for a bad destination mailbox address), and soft bounces, which indicate temporary issues (e.g., 4.x.x codes, like 4.4.7 for a message that expired due to queuing delays). Hard bounces often stem from non-existent email addresses or domain-level rejections, while soft bounces may result from transient conditions such as full mailboxes, server overload, or temporary network disruptions. In practice, bounce messages play a critical role in combating spam but can also contribute to problems like backscatter, a form of unsolicited email where legitimate recipients receive bounce notifications originating from spam messages with forged sender addresses.[6] To reduce backscatter, modern email systems employ authentication mechanisms like Sender Policy Framework (SPF), which verify the legitimacy of sending domains before generating notifications.[6] The evolution of bounce handling traces back to early email standards, with RFC 3464 (published in January 2003) providing the current extensible framework for DSNs, building on prior specifications like RFC 1894 to support multilingual diagnostics and cross-protocol compatibility.[1]Fundamentals
Definition and Purpose
A bounce message, also known as a non-delivery report (NDR), is an automated email response generated by a mail server when it cannot deliver an incoming message to the intended recipient's mailbox.[7][1] This response is part of the error-handling mechanisms in the Simple Mail Transfer Protocol (SMTP), where the receiving server assumes responsibility for delivery after accepting the message and must notify the sender if that process fails.[8] The primary purpose of a bounce message is to inform the original sender of the delivery failure, enabling them to take appropriate actions such as correcting the recipient's address, resending the message, or removing invalid entries from mailing lists.[9] Unlike delivery status notifications for successful transmissions, bounce messages specifically indicate unsuccessful attempts and are designed to prevent further unnecessary retries in cases of permanent issues, while distinguishing transient problems that might warrant follow-up.[10] This notification process supports overall email system reliability by closing the feedback loop between sender and server. In practice, a common scenario involves a sender attempting to deliver an email to an invalid address, such as "[email protected]," prompting the receiving mail server to generate and return a bounce message detailing the error, often including excerpts of the original message for context.[11]Historical Development
Bounce messages trace their origins to the early development of email systems in the 1970s on the ARPANET. The formalization of bounce mechanisms began with the establishment of the Simple Mail Transfer Protocol (SMTP) in RFC 821, published in 1982, which outlined the core protocol for email transmission and introduced basic error reporting, including the use of a null reverse-path in the MAIL command to generate notifications for undeliverable mail.[12] This allowed receiving servers to return failure messages with details such as reply codes (e.g., 550 for permanent failures) and explanatory text. In 1989, RFC 1123 extended these foundations by requiring hosts to implement reliable mail transmission, mandating the generation of delivery status notifications with standardized 4xx and 5xx reply codes to distinguish temporary from permanent errors, and emphasizing the inclusion of detailed failure information in bounce messages.[13] A significant advancement occurred in 1996 with RFC 1894, which defined an extensible MIME-based format for Delivery Status Notifications (DSNs), enabling structured, machine-readable reports that included per-recipient status, action codes (e.g., "failed" or "delayed"), and diagnostic information to replace ad hoc bounce formats.[14] The early 2000s brought further refinements through RFC 3461 (SMTP service extension for DSNs), RFC 3462 (DSN format updates), RFC 3463 (enhanced status codes), and RFC 3464 (notification request handling), all published in 2003, which improved interoperability and allowed senders to request specific notification types while supporting multipart reports for better readability.[15] These updates coincided with growing anti-spam regulations. By the 2010s, bounce handling evolved to integrate with email authentication standards, addressing forged sender addresses that often led to misdirected or unreliable notifications. The Sender Policy Framework (SPF), standardized in RFC 7208 in 2014, enabled domain owners to specify authorized mail servers via DNS records, reducing invalid bounces from spoofed domains.[6] Building on SPF and DomainKeys Identified Mail (DKIM), Domain-based Message Authentication, Reporting, and Conformance (DMARC) was introduced in RFC 7489 in 2015, providing policy instructions (e.g., quarantine or reject) for failing messages and aggregate reports to monitor deliverability, thereby enhancing bounce accuracy without major protocol overhauls through 2025.Classification
Hard Bounces
A hard bounce is a type of email bounce message that indicates a permanent failure in email delivery, where the recipient's mailbox or domain is unable to accept the message indefinitely, prompting recommendations to remove the address from mailing lists.[16][17] These bounces are characterized by SMTP response codes in the 5xx range, such as 550 (user unknown or invalid recipient) or 550 (mailbox unavailable), signaling that the issue is non-retriable and sending servers do not attempt automatic redelivery.[16][18] Common examples include emails sent to addresses with invalid syntax, such as those missing the "@" symbol, domains that do not exist, or accounts that have been disabled or deleted by the recipient's provider.[19][20] High rates of hard bounces reflect poor email list maintenance and can severely damage sender reputation, leading Internet Service Providers (ISPs) to blacklist domains or IP addresses as a measure against perceived spam or unreliable senders.[21][22][23] Unlike soft bounces, which stem from temporary issues and may allow retries, hard bounces necessitate immediate list cleaning to mitigate long-term deliverability risks.[16]Soft Bounces
Soft bounces occur when an email delivery fails due to transient issues that may resolve over time, allowing sending servers to queue the message and attempt redelivery later. These failures are distinguished from permanent rejections by their retriable nature, where the recipient's email address remains valid.[24][25] A key characteristic of soft bounces is their association with SMTP reply codes in the 4xx range, which signal temporary negative completion replies. For instance, code 421 indicates service not available due to temporary server unavailability, prompting the sender to retry after a delay. Sending systems typically queue affected messages and retry delivery for periods ranging from several hours to up to 72 hours, depending on the provider's policy, before potentially escalating to a permanent failure.[24][26][25] Common examples of soft bounces include a recipient's mailbox exceeding its storage quota, leading to a 452 code for insufficient system storage; server overload or temporary downtime, often resulting in a 421 code; and transient DNS resolution failures that prevent immediate connection to the recipient's mail server. In each case, the underlying issue is expected to be short-lived, enabling successful delivery upon retry.[24][27][28] Soft bounces are increasingly scrutinized by email deliverability tools, which monitor rates and patterns to prevent accumulation that could harm sender reputation. Repeated soft bounces from the same address may trigger suppression or conversion to hard bounces, emphasizing the need for proactive list hygiene to maintain high inbox placement.[29][30]Block Bounces
Block bounces, a term used primarily by certain email service providers (ESPs) such as Salesforce and Marketo, represent a category of email rejections where the recipient's mail server denies delivery based on administrative policies, content analysis, or security protocols, rather than issues solely with the recipient's address validity. These rejections stem from mechanisms designed to protect against spam, phishing, or unauthorized transmissions, often without clarifying if the block is indefinite.[31][25][32] A key characteristic of block bounces is that they are often associated with SMTP response codes in the 4xx or 5xx series, which can indicate either temporary or permanent rejections depending on the specific policy or condition. However, they can also manifest as delayed bounces, in which the receiving server initially accepts the message with a 2xx success code during the SMTP transaction but subsequently rejects it after further inspection, such as during queue processing or content scanning, and issues an NDR. This post-acceptance rejection complicates detection for senders, as initial logs may show successful delivery. Block bounces frequently arise in bulk emailing scenarios, where high volumes trigger reputation-based filters, and they disproportionately impact marketers relying on large lists without robust authentication.[33][34] Examples of block bounces include DMARC (Domain-based Message Authentication, Reporting, and Conformance) policy failures, where the recipient server enforces a "reject" or "quarantine" action on messages that fail SPF (Sender Policy Framework) or DKIM (DomainKeys Identified Mail) alignment checks, often due to spoofed sender domains. Other instances involve content-based blocks, such as when anti-spam filters detect suspicious keywords, embedded links to known malicious sites, or attachments flagged as potential threats. Additionally, sender reputation issues, like an IP address or domain appearing on public blocklists maintained by organizations such as Spamhaus, can trigger outright refusals.[35][36][37][20][38] These rejections contribute to diminished sender reputation scores across major email providers, potentially escalating to broader throttling or blacklisting of future messages.[39]Causes
Recipient-Related Causes
Recipient-related causes of bounce messages primarily stem from issues with the recipient's email account or mailbox configuration, which can result in the email being permanently or temporarily undeliverable. These causes often classify as hard bounces for permanent failures, soft bounces for transient problems, or block bounces for policy-based rejections, depending on the permanence of the issue.[25] One common recipient-related cause is mailbox invalidation, where the email address is incorrect due to typos, the account has been deleted, or the domain has expired. Typos in the recipient's email address lead to immediate rejection by the receiving server, typically generating a hard bounce with an error like 550 5.1.1 indicating an invalid recipient.[40] Deleted accounts similarly trigger hard bounces, as the server recognizes the address as non-existent and returns a permanent failure notification.[31] Domain expiration exacerbates this by removing the necessary DNS records, causing incoming emails to fail resolution and bounce as undeliverable.[41] Capacity issues at the recipient's end, such as an inbox that is full or has exceeded its storage quota, frequently result in soft bounces, allowing for potential retry on subsequent attempts. These occur when the recipient's mailbox cannot accept new messages due to storage limits, often indicated by a 552 error code signaling insufficient disk space or quota exceeded.[31] For instance, email providers like Microsoft Exchange or Google Workspace enforce quotas that, when surpassed, prompt the server to reject incoming mail temporarily until space is freed.[42] Policy rejections from the recipient's server can also cause bounces, particularly when the account is inactive or subject to filtering rules that block delivery. Inactive user accounts, often due to prolonged non-use or administrative deactivation, lead to rejections treated as hard or block bounces, with the server returning errors like 550 for unknown users.[43] Filtering rules enforced by the recipient's email provider, such as spam detection or content policies, may generate block bounces by rejecting messages that violate predefined criteria, commonly signaled by 5.7.1 policy violation codes.[44] In 2025, bounces related to recipient accounts have increased due to privacy laws mandating periodic purges of inactive or unverified accounts, significantly impacting long-term email marketing lists. Google's inactive account deletion policy, which began enforcing removals in early 2025, has led to higher rates of hard bounces as dormant Gmail addresses are purged to comply with data retention regulations.[45] Similar requirements under laws like GDPR and emerging U.S. state privacy acts have prompted providers to deactivate accounts without recent activity, resulting in widespread invalidations and delivery failures for outdated contact lists.[46]Server and Network Causes
Server unavailability is a primary cause of bounce messages at the infrastructure level, often resulting in soft bounces due to temporary conditions on the receiving server. This can occur when the server experiences overload from high traffic volumes, scheduled maintenance, or unexpected crashes, preventing it from accepting incoming mail. According to SMTP standards, such scenarios typically trigger a 421 reply code, indicating "Service not available, closing transmission channel," which signals the sending server to queue the message for later retry.[47] Similarly, a 450 error code may be returned for temporary rejections during overload or maintenance, as the server is unable to process the request at that moment but may succeed upon subsequent attempts.[48] Network issues contribute to bounces by disrupting the path to the recipient's server, leading to unreachable destinations and soft bounce notifications. DNS resolution failures, where the sending server cannot locate the recipient's MX records due to temporary query errors or propagation delays, result in connection timeouts and queued retries rather than immediate delivery.[49] Routing problems, such as misconfigured paths or intermittent connectivity disruptions, can also cause similar failures, often manifesting as 450 or 451 SMTP errors indicating temporary network-related unavailability.[50] Firewall blocks on the receiving end may temporarily reject connections, generating soft bounces if the block is policy-based and transient, though persistent blocks can escalate to hard failures.[51] Resource constraints on the receiving server, particularly insufficient disk space or processing capacity, lead to bounces when the system cannot store or handle the incoming message. The SMTP 452 error code specifically denotes "Requested action not taken: insufficient system storage," a temporary condition that prompts senders to retry after a delay, as the issue may resolve with resource cleanup.[47] Repeated failures due to ongoing constraints can harden into permanent rejections, but initial instances are treated as soft bounces to allow for recovery.[52] In modern email ecosystems as of 2025, transitions to IPv6 and cloud provider outages have introduced additional server and network challenges. IPv6 adoption issues, such as incomplete dual-stack implementations, can cause delivery failures when IPv4 senders encounter incompatible IPv6-only receivers, resulting in connection errors and soft bounces.[53] Cloud outages, like the Google Cloud incident on June 12, 2025, which disrupted multiple services including email infrastructure, led to widespread server unavailability and increased bounce rates due to temporary inaccessibility.[54] Similarly, Microsoft's July 2025 outage affected Outlook and related mail services, causing delivery halts and bounce messages across global networks.[55] These events highlight the temporary nature of such failures, often resolvable through retries once services recover.Sender-Related Causes
Sender-related causes of bounce messages primarily arise from issues in the sender's email configuration, authentication setup, or message composition that lead receiving servers to reject or fail delivery. One common issue is the use of forged or invalid sender addresses, often seen in spam campaigns where attackers spoof the "From" field to mask their origin. When such messages are undeliverable, receiving servers generate bounce messages—known as backscatter—that are sent to the forged address, potentially overwhelming innocent recipients with unwanted notifications.[56][57] Authentication failures represent another significant sender-side problem, where mismatches in protocols like Sender Policy Framework (SPF), DomainKeys Identified Mail (DKIM), or Domain-based Message Authentication, Reporting, and Conformance (DMARC) result in block bounces. For instance, if a sender's domain lacks proper SPF records authorizing the sending IP, or if DKIM signatures fail verification due to incorrect key configuration, receiving servers may reject the email outright to prevent spoofing. DMARC policies exacerbate this by instructing servers to quarantine or reject misaligned messages, with failures often stemming from unaligned "From" domains or syntax errors in DNS records.[58][59] Message-related issues, such as oversized attachments or malformed content, can also trigger bounces when they violate receiving server policies or exceed technical limits. Attachments exceeding typical thresholds—often around 25 MB for major providers—prompt immediate rejections to conserve resources, while malformed MIME structures, like improperly encoded headers or broken multipart boundaries, cause parsing errors that halt delivery.[60][37] Repeated sender-related bounces can degrade the sender's reputation with email service providers, potentially leading to temporary throttling or blacklisting.[61]Generation and Handling
Delivery Process
The delivery process of an email message via the Simple Mail Transfer Protocol (SMTP) begins when the sender's Mail Transfer Agent (MTA) establishes a connection to the recipient's MX record server, typically identified through DNS resolution. The sender MTA initiates the session by issuing an EHLO (Extended HELO) or HELO command to introduce itself and negotiate capabilities, followed by the MAIL FROM command, which specifies the envelope sender address (also known as the reverse-path or Return-Path) for error reporting. Next, the RCPT TO command designates the recipient's forward-path address; this step verifies basic deliverability, and a failure here—such as a 5xx permanent error code indicating an invalid or unreachable host—prompts the receiving server to generate a bounce message immediately without proceeding further.[62][10] If the RCPT TO succeeds, the sender MTA transmits the message content using the DATA command, which includes headers and body terminated by a single period on a line. Failures during or after DATA acceptance, such as resource issues or post-acceptance delivery problems to the final mailbox, trigger the receiving server to create a non-delivery report (NDR), also known as a Delivery Status Notification (DSN) or bounce message. The receiving MTA constructs this NDR using a null reverse-path (MAIL FROM:<>) to avoid loops and sends it back to the original envelope sender address via SMTP, incorporating details like the original message headers and an explanation of the failure. In cases like unreachable hosts encountered during RCPT TO validation, this process ensures prompt notification without unnecessary resource expenditure.[63][10][8] For temporary failures signaled by 4xx codes (e.g., temporary server overload), the receiving server does not immediately generate a bounce but instead queues the message for retry, employing exponential backoff to space attempts—starting with a minimum interval of 30 minutes and increasing to every 2-3 hours after initial tries. This retry process continues for at least 4-5 days or until successful delivery, permanent failure, or administrative intervention, as per SMTP queuing requirements. If retries exhaust without success, an NDR is then issued to the envelope sender.[64] In modern MTAs such as Postfix, the bounce generation integrates with a queue manager (qmgr) that handles asynchronous delivery attempts, maintaining per-message logs in queue subdirectories and enqueuing DSNs via the bounce daemon only after final failure determination. Similarly, Microsoft Exchange Server and Exchange Online employ queue-based asynchronous processing compliant with RFC 5321, where transport rules and recipient resolution trigger NDRs upon persistent delivery issues, with enhanced logging for diagnostics in recent updates. These implementations ensure efficient handling without blocking the primary SMTP transaction.[65][66]Response Mechanisms
In email systems, bouncing represents one of several response mechanisms employed by mail servers to handle undeliverable messages, distinct from outright rejection during the SMTP transaction. When a server rejects a message, it typically issues a permanent failure code (5xx series) at stages such as the RCPT TO command or during DATA transmission, preventing the sender's server from completing delivery and notifying it immediately via the SMTP protocol without generating a separate non-delivery report (NDR).[7] This approach avoids storing the message and minimizes resource use, as the rejection propagates back synchronously. In contrast, bouncing occurs after the receiving server has accepted the message with a 250 OK response but later encounters a delivery failure, prompting the generation and dispatch of an NDR containing the original message (or parts thereof) to the sender's address.[67] Another common mechanism is silently dropping the message, where the server accepts it during the SMTP session but discards it internally without any notification to the sender, thereby avoiding the creation of backscatter—unwanted bounce messages sent to forged addresses in spam campaigns.[7] This practice, recommended by RFC 5321 only for cases of high-confidence fraud to prevent undermining email reliability, became prevalent in anti-spam configurations during the 2000s as a way to curb the flood of backscatter from misconfigured or malicious senders.[56] By 2025, silent dropping remains a standard feature in major email security policies, such as those in Microsoft Exchange and other providers, to enhance spam mitigation without alerting spammers to valid targets.[68] Greylisting serves as a specialized temporary rejection mechanism, where an unfamiliar sender receives a transient failure code (4xx series, such as 451) during the initial SMTP attempt, prompting a retry after a delay; compliant senders then succeed on subsequent tries, while many spambots do not retry.[69] This can manifest as a soft bounce on the first attempt but ultimately allows delivery without a full NDR, aligning with SMTP standards for retry behavior.[70]Impact on Sender Reputation
High bounce rates, particularly for hard bounces exceeding 2% or total bounces surpassing 5%, signal poor email list hygiene to internet service providers (ISPs) such as Gmail and Outlook, often resulting in throttling of email volumes or placement on blacklists that restrict future deliveries.[71][23] Hard bounces, which indicate permanently invalid addresses, contribute most significantly to these thresholds, as they demonstrate a sender's failure to maintain accurate contact lists.[72] Sender reputation is quantitatively assessed by services like Validity's Sender Score (formerly from Return Path), where elevated bounce rates directly deduct points from a 100-point scale, potentially dropping scores below 80 and triggering stricter ISP scrutiny.[73] In 2025, emphasis has grown on real-time feedback loops, such as those provided by major ISPs, which enable senders to receive immediate notifications of bounces and complaints to proactively adjust practices and mitigate reputation damage.[74][75] The primary consequences of sustained high bounce rates include diminished overall deliverability, with emails increasingly routed to spam folders or outright blocked, thereby reducing engagement metrics like open and click-through rates.[76] Additionally, under the U.S. CAN-SPAM Act, maintaining lists with excessive invalid addresses can expose senders to legal risks, including fines up to $53,088 per email for violations related to deceptive practices or failure to honor opt-outs, as poor hygiene may be interpreted as non-compliance.[77] To counteract these impacts, best practices focus on regular list cleaning through email validation tools, such as ZeroBounce, which verify addresses in bulk to identify and remove invalid or risky entries before campaigns launch, ideally every three months given annual list decay rates of about 23%.[78] Integrating automated suppression lists and monitoring tools further ensures bounces remain below critical thresholds, preserving long-term sender credibility.[79][72]Format and Standards
Structure of a Bounce Message
A bounce message, also known as a non-delivery report (NDR) or delivery status notification (DSN) for failures, follows a standardized multipart MIME format defined in RFC 3462 to ensure both human readability and machine parsability.[80] This format uses the content typemultipart/report with the parameter report-type=delivery-status, consisting of at least two parts and optionally a third. The first part is a human-readable explanation, typically in text/plain or text/html, providing a clear description of the delivery failure, such as "The message cannot be delivered because the recipient's mailbox is full."[81] The second part is the machine-readable DSN in the message/delivery-status format per RFC 3464, which includes structured fields for automated processing.[1] The optional third part contains the original message or an excerpt, often limited to headers using text/rfc822-headers to reduce size and potential privacy risks.[82]
The machine-readable DSN portion is divided into per-message fields (applicable to the entire report) and per-recipient fields (specific to each failed address). Key per-message fields include the Reporting-MTA field, which identifies the mail transfer agent (MTA) generating the report, formatted as dns; example.mta.domain to indicate the domain name service resolution.[83] The Original-Message-ID field references the unique identifier of the bounced message for tracking. Per-recipient fields detail the failure: the Action field specifies the outcome, such as failed for permanent delivery abandonment; the Status field provides a transport-independent code like 5.1.1 (bad destination mailbox address); and the Diagnostic-Code field offers transport-specific details, e.g., smtp;550 5.1.1 User unknown.[84] Other fields like Final-Recipient (the actual address attempted) and Last-Attempt-Date-Time (timestamp of the final try) aid in diagnostics.[85]
At the envelope level, bounce messages use a null Return-Path (<>) to prevent loops, while the header Return-Path reflects the original envelope sender for routing the notification back. Common headers include From: [email protected] (indicating automated generation) and Subject: Undelivered Mail Returned to Sender, with MTA-specific indicators like X-Postfix in Postfix-generated bounces to denote the originating system.[65] The body often appends the original message's headers and a portion of its content, though implementations like Postfix use configurable templates to format error descriptions consistently.[86]
Variations exist between simple bounces and enhanced DSNs. Simple bounces are non-standard, consisting of a plain-text body with a basic error message and minimal structure, lacking machine-readable elements and often including the full original message, which can expose sensitive data. Enhanced DSNs adhere to RFC 3462 and 3464, providing structured diagnostics while optionally limiting returned content to headers only for privacy.
SMTP Error Codes
SMTP error codes, defined in the Simple Mail Transfer Protocol (SMTP), provide standardized responses from mail servers indicating the outcome of message delivery attempts, with specific codes triggering bounce messages when delivery fails.[87] These codes are categorized into temporary (4xx) and permanent (5xx) failures, helping distinguish between issues that may resolve on retry (soft bounces) and those requiring immediate sender action (hard bounces).[24]4xx Codes (Transient Failures)
The 4xx series represents temporary negative completion replies, signaling that the server could not process the message at that time but may succeed later.[87] These often result in soft bounces, where the sending system is encouraged to retry delivery after a delay.[8] Key examples include:- 421 Service not available, closing transmission channel: Issued when the server is shutting down or unable to accept messages temporarily, such as during maintenance.[87]
- 450 Requested mail action not taken: mailbox unavailable: Indicates the recipient's mailbox is temporarily inaccessible, possibly due to being busy or under policy restrictions.[87]
- 452 Requested action not taken: insufficient system storage: Returned when the server lacks space to store the message, a condition that may resolve as resources free up.[87]
5xx Codes (Permanent Failures)
The 5xx series denotes permanent negative completion replies, meaning the delivery attempt has definitively failed and no further retries to the same destination are warranted.[24] These correspond to hard bounces, prompting the immediate generation of a non-delivery report to the sender.[8] Notable codes are:- 550 Requested action not taken: mailbox unavailable: Commonly used for invalid or non-existent recipients, such as an unknown user.[24]
- 551 User not local; try
: Signals that the recipient address is not hosted on the server, with an optional forwarding path provided.[24] - 552 Requested mail action aborted: exceeded storage allocation: Indicates the recipient's quota has been surpassed, preventing acceptance.[24]