SMTP Error 550 5.1.1: Recipient address rejected: user unknown
The mailbox does not exist at the destination domain — a hard bounce. Stop sending to that address and add it to your suppression list; retrying hurts sender reputation.
Identify: does your log match?
550-5.1.1 The email account that you tried to reach does not exist. Please try 550-5.1.1 double-checking the recipient's email address for typos or 550-5.1.1 unnecessary spaces. For more information, go to 550 5.1.1 https://support.google.com/mail/?p=NoSuchUser 41be03b00d2f7-7ea9c6a1b2csi98765432a12.401 - gsmtp
- High
Typo in the address
gmial.com, missing letters or a trailing space at signup. The domain may exist but the local part does not.
- Medium
Deleted or deactivated account
Employees leave and corporate mailboxes are removed; old lists contain many such addresses.
- Low
Catch-all disabled after migration
A domain moved providers and only some aliases were recreated.
Fix
Suppress hard-bounced addresses
for (const user of users) { await sendEmail(user.email, digest); }
for (const user of users) { if (await db.suppression.findUnique({ where: { email: user.email } })) continue; try { await sendEmail(user.email, digest); } catch (err) { if (err.responseCode === 550 && /5\.1\.1/.test(err.response)) { await db.suppression.create({ data: { email: user.email, reason: 'hard_bounce' } }); } else throw err; } }
Mailbox providers lower reputation for senders who keep mailing invalid addresses. Nodemailer exposes responseCode and response for SMTP errors.
Verify: reproduce it on purpose
$ swaks --to this-user-does-not-exist-8f3a91@gmail.com --server gmail-smtp-in.l.google.com --port 25 --quit-after RCPTRun it against a dev environment to trigger 550 5.1.1 on purpose and test your error handler.
Prevent
- Use double opt-in for signups.
- Process ESP bounce webhooks and suppress on hard bounce.
- Keep hard-bounce rate under 2%.
FAQ
Is 550 5.1.1 a hard or soft bounce?
Hard. The 5 class is permanent and x.1.1 means the mailbox does not exist; never retry it.
Can I verify an address exists before sending?
SMTP RCPT TO probing is unreliable and blocked by many providers. Use double opt-in or an email validation API.
Why does 5.1.1 appear for an address that worked yesterday?
The account was deleted or the domain changed providers. Treat it as invalid until the user updates it.
Related errors
Last verified 2026-10-17 · Source: RFC 5321 reply codes + RFC 3463 enhanced status codes (IANA registry) · Official docs ↗ · ~12,100 searches/mo