Definition
Hard bounce: A permanent delivery failure signaled by a 5xx reply, most often because the mailbox or domain does not exist. The address should be suppressed at once and never retried.
What causes a hard bounce
The most common cause is an unknown user: the mailbox was never created, was mistyped, or was deleted when the person left. The server answers 550 with the enhanced code 5.1.1.
Other causes are a disabled account (often 5.2.1), a domain that no longer exists, and a domain that publishes a null MX record to say it takes no mail at all.
Hard bounce vs policy rejection
Not every 5xx reply is about the address. A 550 or 554 with a 5.7.x enhanced code means the server refused your message because of authentication, reputation, a blocklist or content.
Those rejections are about you, not the recipient. Suppressing the address will not help; fixing authentication or reputation will. Read the enhanced code before you decide.
What to do after a hard bounce
Suppress the address in every tool that sends mail, not just the one that bounced, so a later CSV import does not add it back.
Then look at where it came from. A cluster of hard bounces from one form, one import or one lead source points at the real problem.
C: RCPT TO:<old.employee@example.com>
S: 550 5.1.1 <old.employee@example.com>: Recipient address rejected: User unknown in virtual mailbox table How RocketVerifier handles it
We return a mailbox the server explicitly rejects as undeliverable, with a sub_status such as mailbox_not_found, account_disabled, does_not_accept_mail or invalid_domain. A rejection about the sender, such as a policy, reputation or blocklist reply with a 5.7.x code, is reported as blocked (unknown) instead, and a bare 550 without a clear user-unknown meaning is treated as ambiguous. Connect SendGrid, Mailgun, Amazon SES or Postmark and every hard bounce on an address we marked deliverable within 30 days is refunded automatically and suppressed.