Return-Path vs Envelope-Sender — What Each Does in AcelleMail

The "From" address recipients see isn't the address that handles bounces. That's the envelope-sender (also called the return-path or MAIL FROM). This guide separates the three sender concepts and shows where AcelleMail configures each.

The 3 sender concepts (different things)

Email has 3 "sender" addresses, often confused:

Concept Where it lives Used by
From: header Email body header Displayed to recipient — what they see in the inbox
Envelope-sender (MAIL FROM, Return-Path) SMTP envelope (before the message body) Receiving servers — where bounces go back to
Reply-To: header Email body header Recipients clicking "Reply" — where their reply goes

These can all be different addresses. Sometimes useful, sometimes confusing. Let's separate them.

From: header (what recipients see)

From: Brand Marketing <hello@brand.com> in the email body. Recipients see "Brand Marketing" in the sender column. Inbox previews display this.

In AcelleMail: campaign settings → From email + From name. Per-campaign override of the sending server's default.

Envelope-sender (where bounces go)

Set during SMTP transmission via MAIL FROM: command. NOT visible in the email body. Receivers use it for:

  • Sending bounce messages back to (so AcelleMail can process them)
  • SPF check (the sender domain's SPF record must authorize the sending IP)
  • Reputation tracking (one of the inputs to per-domain reputation)

In AcelleMail: handled automatically by the sending-server config. Typically bounce@yourdomain.com or a vendor-rotated address like bounce-12345@amazonses.com.

Verify the envelope-sender by opening "Show original" in Gmail:

Return-Path: <bounce@yourdomain.com>
X-Original-Sender: bounce@yourdomain.com

This is the envelope-sender, NOT the From: header.

Reply-To: header (where replies go)

Reply-To: support@yourdomain.com. When a recipient clicks "Reply," their reply goes to this address (not the From: address).

Useful for:

  • Sending from noreply@brand.com but accepting replies at support@brand.com
  • Routing replies to a different team/inbox per campaign

In AcelleMail: campaign settings → Reply-to email.

Open the sending-domain detail

In AcelleMail's sidebar, Sending → Sending domains. The list shows every domain you've registered with status chips (Verified / Pending / Failed) and per-auth indicators:

Sending domains list

Click into your domain row. The detail page surfaces exactly which DNS records to publish (TXT for SPF, CNAMEs for DKIM, TXT for DMARC) with copy-paste-ready values + current verification state per check:

Sending-domain detail — DNS records + auth status

The sending-domain detail page shows the active envelope-sender pattern + verification status — confirming that the bounces will route correctly back to AcelleMail's processor.

Why all 3 matter for deliverability

Receiving servers check alignment between these addresses + your DNS records:

Check Aligned when
SPF Envelope-sender's domain has the sending IP in its SPF record
DKIM The DKIM signature's d= parameter matches the From: domain
DMARC alignment SPF and/or DKIM domain matches the From: domain

Strict DMARC alignment = the bounce/envelope domain MUST match the From: domain (no subdomain leeway). Relaxed = subdomain leeway allowed.

If you send From: <hello@brand.com> but the envelope-sender is bounce-xyz@amazonses.com, DMARC may fail (envelope-sender domain amazonses.com doesn't align with From: domain brand.com).

The fix: use a custom Return-Path domain that aligns. AcelleMail's sending-server config → MAIL FROM (Return-Path) field — set to bounce.brand.com so the envelope-sender becomes bounce@bounce.brand.com, aligned with brand.com.

Common UI signals + fixes

Symptom Likely cause UI fix
Bounces never come back to AcelleMail Envelope-sender misconfigured (pointing elsewhere) Sending server detail → MAIL FROM field
DMARC fails despite SPF/DKIM green Envelope-sender domain doesn't align with From: Set up custom return-path subdomain
Recipients reply but I never see it Reply-To: pointing to dead address Campaign settings → Reply-to email
From: shows weird formatting Display name not set or quotes broken Campaign settings → From name
Spam folder placement on B2B receivers Strict DMARC alignment expected by some B2B filters Set up aligned return-path domain

Common configurations

Setup Best for
From: = Envelope = Reply-To, all on brand.com Simplest; strict DMARC alignment works automatically
From: brand.com, Envelope: bounce.brand.com, Reply-To: support@brand.com Most common for marketing — aligned envelope subdomain handles bounces; replies go to support
From: notifications@brand.com, Reply-To: empty (suppress replies) Transactional emails; "do not reply" pattern
From: brand.com, Envelope: amazonses.com Default SES setup — DMARC alignment may need relaxed mode
Advanced: per-vendor envelope-sender mechanics + DMARC alignment math + multi-tenant return-paths

Per-vendor envelope-sender:

Vendor Default envelope-sender Customizable?
Amazon SES (API) bounces+xxx@amazonses.com Yes — set "MAIL FROM domain" in SES verified-identity config
SendGrid SMTP bounce+xxx@em.sendgrid.net Yes — Whitelabel feature (paid)
Mailgun bounce@mg.brand.com Yes — included in standard config
Postmark xxx@pm-bounces.brand.com Yes — included in standard config
Self-hosted Postfix Whatever you configure in postfix's myorigin Fully customizable

For DMARC strict alignment, the envelope-sender domain must match (or be a subdomain of) the From: domain. Each vendor has a different way to set this:

  • SES: Verify identities → custom MAIL FROM domain → publish MX record at mail.brand.com
  • SendGrid: Whitelabel feature → reverse DNS + CNAME setup
  • Mailgun: Auto-handled per their domain setup

DMARC alignment math:

DMARC pass requires AT LEAST ONE of:
  - SPF pass + From: domain matches MAIL FROM domain (or aligned subdomain)
  - DKIM pass + From: domain matches DKIM d= (or aligned subdomain)

Strict alignment = exact domain match (e.g. brand.com = brand.com)
Relaxed alignment = subdomain leeway (e.g. mail.brand.com aligns with brand.com)

Default DMARC is relaxed alignment. Some receivers (financial-services-side filters) enforce strict.

Multi-tenant return-paths (for SaaS operators):

Each customer needs their own envelope-sender subdomain:

Customer A: From: hello@customerA.com   Envelope: bounce@bounce.customerA.com
Customer B: From: hello@customerB.com   Envelope: bounce@bounce.customerB.com

Each customer adds the bounce CNAME at their DNS host pointing to your AcelleMail processor. AcelleMail's per-customer sending server config holds the right envelope-sender setting.

Vendor-rotated envelope-sender (default SES pattern):

bounces+abc123@amazonses.com
bounces+abc124@amazonses.com
bounces+abc125@amazonses.com  ...

The +abcXXX is a unique ID per outgoing message. SES uses it to route bounces to your account.

SRS (Sender Rewriting Scheme):

For forwarding scenarios — when you receive a message and forward it elsewhere. SRS rewrites the envelope-sender to maintain SPF authentication through the forward.

Original sender:  bob@external.com → SPF check passes for external.com
After SRS rewrite: srs0=abc=brand.com@external.com → SPF check passes for brand.com

Most modern SMTP relays handle SRS automatically. Verify on your sending server if you do forwarding.

Reply-To: pitfalls:

From: noreply@brand.com
Reply-To: noreply@brand.com  ← BAD! Recipients reply, mail bounces to noreply (likely no inbox)

Always set Reply-To: to a real-inbox address that someone reads.

From: noreply@brand.com
Reply-To: <empty>           ← OK — recipients can't reply via standard reply; explicit communication channel mentioned in body

Related articles

15 comentarios

9 comentarios

  1. bos.devops
    The SPF flattening explanation finally made it click for me. I'd been hitting the 10-lookup limit and didn't understand why nesting includes counted.
  2. tnovak.cz
    Quick question: do receivers actually enforce the SPF -all hard fail, or do most just downrate? I've heard mixed things and I'm hesitant to switch from ~all.
    1. admin
      same answer as above for SaaS-tenant — works the same way per-tenant, with the caveat that the cron must be set per-customer (not just system-wide).
  3. d.cohen.tlv
    easy win: set up dmarcian.com (free tier) to receive your dmarc rua reports. the first 2 weeks of reports tell you everything you didn't know about who's sending as you...
  4. y.yamamoto
    Our DKIM rotation broke for 2 days because we updated the active selector first, then waited to delete the old. Should be the other way — publish new, wait 48h for cache, switch sending, THEN remove old
  5. phuong.mai.hn
    Hit the 10-lookup SPF limit when we tried to layer SES on top of an existing Google Workspace setup. Flattened with a tool (spfwizard.com) and it's been fine since. That tool's worth a mention
    1. admin
      Thanks for the breakdown. Saving for our customer-success team's reference library.
    2. admin (editado)
      Appreciate the data point. Your numbers align with what our larger-volume customers report; helpful to see a third confirmation
  6. aisha.khan.pak
    what's your recommendation for sub-domains? we send from mail.example.com and notifications.example.com. same dkim selector or separate?
    1. admin (editado)
      for your specific case, id recommend testing with `--dry-run` first. the behavior under high load isn't 100% deterministic and we want you to see your own pattern before committing.
    2. admin
      we tested this with up to 1M subscribers on a $40/mo VPS. Past that you start needing query optimization. Below that, the defaults are fine
  7. linhvu.dev
    Worth noting: our DNS provider (Cloudflare) caches negative responses for 1 hour. We added a TXT record, dig showed it, but mail-tester said missing for another 40 minutes. Almost lost our minds. TTL was set to 300 but the parent zone NS cache held.
  8. lucas.bernard.…
    Thanks for the explicit cautionary tales. The alignment-vs-pass distinction is exactly where I lost a week last year.
    1. admin
      Glad it landed. Drop suggestions in the comments and well incorporate them on the next refresh.
  9. cw.dev.sh
    If you use Vercel or Netlify for the apex, watch out — they sometimes override TXT records via their auto-DNS feature. Bit us once with a stripped SPF record

More in DNS & Domain Setup