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 bình luận

8 bình luận

  1. 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.
  2. 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...
  3. lucas.bernard.…
    Bookmarked. Going to share with the team — we've been winging warmup and it shows in the numbers. 👀
  4. 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.
  5. 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. 👀
  6. 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...
  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 (đã chỉnh sửa)
      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