Hard bounce. Permanent failure. Address does not exist, domain does not exist, or mailbox is closed. We auto-suppress hard bounces immediately.
Soft bounce. Transient failure. Mailbox full, server down, greylisting, temporary policy block. We retry with exponential backoff. Three soft bounces in a row from the same address promote it to hard.
Block. Mailbox provider rejected the message at policy level. Usually content or reputation related. Logged with full SMTP response.
Out of office. Auto-response indicating temporary absence. Not a bounce — but counted separately in reporting.
Content rejection. Provider rejected based on content. SpamAssassin score, attachment type, or specific filter. Usually fixable in the message itself.
The event log shows the full SMTP response for every bounce. That is your debugging starting point.
