Hard Bounce vs Soft Bounce — Reading the AcelleMail Bounce Log

A hard bounce is permanent. A soft bounce is temporary. AcelleMail handles them differently — hard bounces unsubscribe the address; soft bounces retry. This guide walks the bounce log UI, the DSN codes, and what each type means for your list.

The 2 categories of bounce

Every bounced email falls into one of two buckets:

Hard bounce (5.x.x DSN codes) — permanent failure. The address doesn't exist, the domain doesn't exist, the mailbox is closed. Retrying won't help. AcelleMail auto-marks the subscriber as bounced and stops sending.

Soft bounce (4.x.x DSN codes) — temporary failure. Mailbox full, server busy, greylist delay. AcelleMail auto-retries on a schedule (typically 1h, 6h, 24h). If retries also fail, AcelleMail may eventually flip to hard.

Reading the bounce log = reading the DSN codes + the receiving server's reason text. Most bounces self-explain.

Read the bounce log

Open the campaign → Bounce log tab:

Campaign bounce log — mixed hard + soft with DSN reasons

Each row shows:

  • Recipient email — the subscriber that bounced
  • Bounce type chipHard (red) or Soft (yellow)
  • Reason text — the receiving server's verbatim response, with the DSN code in front
  • Date — when the bounce was recorded

Common DSN codes + what they mean

Hard bounces (5.x.x)

Code Meaning What to do
5.1.1 "The email account that you tried to reach does not exist" Address invalid — typo or deleted account. AcelleMail unsubscribes.
5.1.10 Recipient address rejected (NoSuchUser) Same as 5.1.1
5.2.0 Mailbox issue (often locked) Hard fail; AcelleMail unsubscribes
5.4.1 Recipient address rejected (domain doesn't exist) Domain dead — typo at signup. Audit signup form validation.
5.4.4 DNS resolution failure Domain dead
5.7.1 "Message rejected — not authenticated" Authentication broken (SPF/DKIM/DMARC) — issue is YOUR side, not recipient. Investigate.
5.7.x Various authorization failures "Delivery not authorized" — likely IP blocked or DMARC alignment broken

Soft bounces (4.x.x)

Code Meaning What to do
4.2.2 Mailbox quota exceeded AcelleMail retries; may eventually hard if persists
4.3.1 Server out of disk space Receiver issue — wait
4.4.1 Connection timeout Receiver overloaded — AcelleMail retries automatically
4.5.3 Too many recipients in this connection AcelleMail batches reduce; usually auto-resolves
4.7.0 Greylisted — retry later Anti-spam tactic. AcelleMail retries; succeeds on second try usually
4.7.1 "Try again later" — could be soft or escalating Watch the rate; if 4.7.1 spikes >5%, may be reputation hit

Real bounces from the screenshot

From the bounce log screenshot above, you can see real examples:

mooreevamaa@howarra.com         hard   550 5.1.1 The email account...
clayton87@ledisra.info          soft   550 5.2.2 The email account ...
cosbynicky@dboy.com             hard   550 5.7.1 Message rejected...
saraganthan@nichols-house.info  hard   550 5.2.5 The message exceeded...

Each row tells the story:

  • mooreevamaa@... — address doesn't exist. Hard bounce. Already unsubscribed.
  • clayton87@... — mailbox capacity issue (5.2.2). Soft bounce. Retry.
  • cosbynicky@... — authentication issue (5.7.1). Hard. Investigate YOUR setup.
  • saraganthan@... — message too large for recipient. Hard. Reduce attachment size.

What AcelleMail does automatically

Bounce category Auto-action
Hard (5.1.x, 5.4.x) Subscriber flipped to bounced status; future sends skip them
Hard (5.7.x — auth issues) Subscriber may NOT be flipped (issue is your side); investigate before bulk unsubscribe
Soft (4.x.x) Retry queued at 1h, 6h, 24h; after 3 fails, may convert to hard
Spam complaint (separate from bounce) Subscriber flipped to unsubscribed; future sends skip
Trap hit (specific 5.7.x patterns from known traps) Subscriber unsubscribed; sending IP flagged for monitoring

Common UI signals + fixes

Symptom Likely cause UI fix
5.1.1 spike to 10%+ on first send to a freshly imported list Bad import source (purchased list?) Pause; run email verification on full list; re-import only verified addresses
5.7.1 across all messages Your DKIM signing broken Sending-server detail → verify DKIM record at DNS host
5.7.x to one specific recipient domain That receiver blocking you Investigate per-domain; possibly add to suppression until reputation recovers
4.7.0 (greylisted) on 30% of sends Many receivers greylisting Wait — AcelleMail retries within 5-30 minutes; usually self-resolves
4.2.2 (mailbox full) creeping up Stale list with abandoned addresses After 3 retries fail, convert to hard; clean list periodically
5.2.5 (message too large) Email body or attachment too big Reduce inline images; host externally
Hard bounce on engaged subscriber (who opens regularly) Address temporarily off (DNS glitch, account locked) Wait 24h; manually re-activate if they re-engage

When to manually re-add a bounced subscriber

If a subscriber bounces hard but you have evidence they still want emails:

  1. Open subscriber detail in Audience → list → [subscriber email]
  2. Verify they explicitly re-confirm via a fresh signup form OR direct email request
  3. Re-add manually OR flip status from bounced back to subscribed
  4. Send first email at low volume to verify deliverable

DO NOT bulk-re-add bounced addresses without re-confirmation. Bounce-rate damage compounds.

Advanced: DSN code deep reference + per-domain bounce mining + auto-reactivation patterns

The DSN (Delivery Status Notification) standard is RFC 3463 + 5248. Three-part code:

X.Y.Z
│  │  │
│  │  └── Detail (subject status — e.g. 1 = mailbox doesn't exist)
│  └───── Subject (status class — e.g. 7 = security issue)
└───────── Major (5 = permanent, 4 = transient, 2 = success)

Common subject codes (Y position):

Y Status class
0 Other/undefined
1 Addressing — bad mailbox or address
2 Mailbox status — exists but unable
3 Mail system — receiving server issue
4 Network — connection issue
5 Mail delivery protocol — SMTP-level issue
6 Message content — body/MIME issue
7 Security — authentication/policy block

Detail codes (Z position) get specific. Examples:

  • 5.1.1 = "Bad destination mailbox" (most common hard)
  • 5.7.1 = "Delivery not authorized" (auth issue)
  • 5.7.7 = "Message integrity failure" (DKIM check failed)

Most receivers also include human-readable text after the code. Read both — the code categorizes, the text specifies.

Per-domain bounce mining via SQL (replace bounce_logs with your DB_TABLES_PREFIX):

SELECT
  SUBSTRING_INDEX(SUBSTRING_INDEX(email, '@', -1), '.', -2) AS recipient_domain,
  SUM(CASE WHEN bounce_type = 'hard' THEN 1 ELSE 0 END) AS hard_total,
  SUM(CASE WHEN bounce_type = 'soft' THEN 1 ELSE 0 END) AS soft_total,
  COUNT(DISTINCT dsn_code) AS distinct_codes,
  GROUP_CONCAT(DISTINCT LEFT(reason, 60) ORDER BY created_at DESC) AS sample_reasons
FROM bounce_logs
WHERE created_at >= NOW() - INTERVAL 7 DAY
GROUP BY recipient_domain
HAVING hard_total + soft_total > 50
ORDER BY hard_total DESC
LIMIT 20;

Reveals: which receivers are giving you trouble + what they're saying. Often surfaces patterns like "all yahoo.com bouncing 4.7.0" → greylisting from Yahoo → patience required.

Auto-reactivation pattern for soft → hard conversions that resolved:

# Daily cron: identify subscribers in `bounced` state that received successful
# sends from OTHER systems (e.g. via CRM bridge) — auto-reactivate.

# Pseudo-code; adapt to your tooling
for subscriber in subscribers.bounced:
  if recent_crm_activity(subscriber, days=30) and reason_was_soft_to_hard(subscriber):
    flip status to subscribed
    send_low_volume_test_campaign(subscriber)
    monitor first 2 sends

Recovers ~5-10% of bounced subscribers who're still valid but had a temporary issue (server outage, account lock that resolved).

Hard-to-soft retry policy via per-server config:

Some operators want more retries before flipping soft to hard. In the sending-server admin config, the Retry policy field accepts:

  • default — 3 retries (1h, 6h, 24h) then flip to hard
  • aggressive — 5 retries (1h, 6h, 24h, 72h, 168h)
  • conservative — 2 retries (1h, 24h)

For B2B receivers (Proofpoint, Mimecast) that greylist heavily, aggressive retains more addresses.

Bounce-to-list-update pipeline — feed hard bounces back to your CRM-of-record to mark the contact as undeliverable:

# Wire AcelleMail's `subscriber.bounced` webhook to your CRM
# (configurable in admin → API & Webhooks)

# Webhook fires on each bounce flip with:
{
  "event": "subscriber.bounced",
  "subscriber_email": "...",
  "list_uid": "...",
  "dsn_code": "5.1.1",
  "bounce_type": "hard",
  "reason": "..."
}

# CRM updates: contact.email_status = bounced
# Sales team sees the warning before next email outreach

End result: bounces don't just live in AcelleMail — they propagate to wherever the contact also exists.

Related articles

12 条评论

8 条评论

  1. phuong.mai.hn
    If you're warming a new IP after a known issue, consider seeding with transactional mail first (password resets, order confirmations). Higher engagement rate per send than marketing — helps the reputation ramp. 👀
  2. emma.whitaker
    we warmed up a dedicated ip last fall. the 2-week ramp this article describes is on the aggressive side — gmail in particular punishes anything faster than ~3-4 weeks. we did 4 weeks and had a clean ramp...
  3. femi.adeyemi
    Does engagement-based segmentation help during warmup? E.g. only sending to the most-engaged 20% during week 1?
    1. admin
      suppression list import via csv captures all opt-outs including preference-center ones if you exported with the right field set. the export filter defaults exclude some — check the 'include unsubscribed' checkbox on mailchimps export wizard.
  4. sobrien.kw
    For very low-volume senders (< 5k/month), does warmup even matter? Or just send and let the provider's shared pool absorb the trickle? anyway
    1. admin
      That config is exposed in 5.2+. For older versions you'll need to edit the config file directly. We'll add a version-matrix in the article...
  5. lucas.bernard.…
    Bookmarked. Going to share with the team — we've been winging warmup and it shows in the numbers. 👀
  6. tranminh.devop…
    Confirming the Postmaster Tools data lag — sometimes 48 hours, sometimes longer. Don't make decisions on a single day's data
    1. admin
      thanks for the detail — adding the kernel-reboot edge case to the article on the next update.
  7. nadia.r.cl
    this is the clearest IP warmup schedule I've found. The volume table at the top is what I'm referencing daily.
  8. sofia.costa.pt
    We hit a Spamhaus listing once. Self-service delisting was actually fast (< 24h) but the reputation recovery took weeks. Not the listing itself that hurt — the user complaints that caused it.
    1. admin (已编辑)
      Thanks for sharing. The pattern you describe is exactly the use case we built that feature for — glad it landed for you.

More in Sending & Deliverability