Beginner 10 min SMTP 550

550 Mailbox Not Found — Email Bouncing

Symptoms

- Bounce-back email with "550 5.1.1 The email account does not exist"
- SMTP server log: `RCPT TO:<[email protected]> 550 No such user here`
- Mail delivery report (NDR) shows permanent failure code 5.1.1
- Email list analytics shows high hard-bounce rate for a specific domain
- Postfix log: `reject: RCPT from ...: 550 5.1.1 <[email protected]>: Recipient address rejected: User unknown in local recipient table`

Root Causes

  • Typo in recipient email address (e.g., 'gmai.com' instead of 'gmail.com')
  • Recipient mailbox was deleted or disabled but still exists in your contact list
  • Domain MX records point to the wrong mail server or are missing entirely
  • Mail server does not have the recipient in its local user database
  • Email alias or forwarding rule was removed without updating senders

Diagnosis

**Step 1 — Verify the address is correct**

Check for typos in the To/CC/BCC field. Confirm the address with the recipient via another channel.

**Step 2 — Check MX records for the recipient's domain**

```bash
dig MX example.com +short
# Expected: one or more priority + hostname lines
# e.g., 10 mail.example.com.
# No output or NXDOMAIN means the domain has no mail server
```

**Step 3 — Attempt an SMTP conversation manually**

```bash
# Connect to the receiving MX
telnet mail.example.com 25
EHLO yourdomain.com
MAIL FROM:<[email protected]>
RCPT TO:<[email protected]>
# A 550 response confirms the server rejects the address
```

**Step 4 — Inspect your mail server logs**

```bash
# Postfix
grep '[email protected]' /var/log/mail.log | tail -20
# Exchange / Microsoft 365: check Message Trace in the admin portal
```

**Step 5 — Check bounce classification in your ESP**

Distinguish hard bounces (permanent 5xx — stop sending) from soft bounces (temporary 4xx — retry acceptable).

Resolution

**Fix 1 — Correct the recipient address**

Update the email address in your contact list or application database and resend.

**Fix 2 — Remove permanently bounced addresses**

Mark the address as a hard bounce and suppress future sends to avoid ISP blacklisting:

```python
# Django example: mark bounce in DB
Contact.objects.filter(email='[email protected]').update(
bounce_type='hard',
is_unsubscribed=True,
)
```

**Fix 3 — Fix MX records (if you control the recipient domain)**

```
# Cloudflare DNS panel or similar:
Type: MX Name: example.com Mail server: mail.example.com Priority: 10
```

**Fix 4 — Re-create the mailbox or alias on the mail server**

```bash
# Postfix + Dovecot — add user
sudo useradd -m -s /sbin/nologin newuser
sudo passwd newuser
# Or add to /etc/postfix/virtual and run:
sudo postmap /etc/postfix/virtual && sudo systemctl reload postfix
```

Prevention

- Validate email addresses at point of entry with RFC 5322-compliant regex or a verification API (ZeroBounce, NeverBounce) before adding to your list
- Implement double opt-in to ensure addresses are deliverable from the start
- Monitor bounce rates and automatically suppress hard bounces after the first failure
- Set up bounce webhooks with your ESP (SendGrid, SES, Mailgun) to receive real-time bounce events and update your database automatically
- Audit your contact list periodically — remove addresses not engaged in 12+ months

Related Status Codes

Related Terms