skip to content

Why can an automated sign-up suite that emails invented addresses damage the sending domain's reputation?

level: juniorimportance: should knowfreq 32%

answer

  1. The sender is scored, not the message
  2. Bounces and complaints accumulate against a domain
  3. Invented addresses at a domain you do not own
  4. A controlled mailbox always accepts your mail
  5. Separate sending identity for non-production traffic

basics

~20 s

Invented recipient addresses bounce. Receiving mail systems count permanent bounces and complaints against the domain that sent them, so a suite running nightly builds a poor record - and real product mail starts landing in junk folders.

solid answer

~50 s

Receiving mail systems score the **sender**, not the individual message: a domain that keeps mailing addresses which do not exist, or whose mail recipients mark as unwanted, accumulates a poor record and gets filtered or refused. An automated suite is a heavy sender of exactly the wrong shape - hundreds of near-identical messages a night, often to addresses invented per case at a domain the team does not own. The damage is silent because the suite's own assertions still pass: it polls a mailbox it controls, so it watches its own mail arrive while customers' mail drifts into junk. The repairs are structural. Send non-production traffic from a subdomain separate from the one customers get mail from, address every case at a domain the team controls that accepts any local part, never invent addresses at somebody else's domain, and cap how much the suite sends.

code

pseudocode · 9 lines
pseudocode
# every case addresses a domain the team owns and that accepts any local part
recipient = "case-" + runId + "-" + caseId + "@" + ownedCatchAllDomain

# never: invented_local_part + "@" + someone_elses_domain
#        -> a permanent bounce on every run, charged to the sending identity

trigger_signup(recipient)
message = capture.poll_for(recipient, deadline)
assert message.activation_link is present

go deeper

for a junior

Be ready to say what a permanent bounce is and why mailing addresses that do not exist is not free. Know that the receiving side judges a sender over time rather than one message at a time.

for a middle

Explain the mechanics: bounce and complaint share accumulate against a sending identity, non-production traffic should leave from its own subdomain, and every case should address a domain the team controls.

for a senior

Show how you catch the drift before customers do - bounce and complaint trends on the non-production identity - and how you keep the number of cases that truly send small and scheduled rather than firing on every commit.

for a principal

Own the separation between customer mail and machine traffic as a standing decision: which sending identities exist, who may send from each, how much volume automation is allowed, and who is accountable when a shared record degrades.

## What a receiving system is actually judging When a message arrives, the receiving mail system decides what to do with it long before a person sees it, and that decision leans far more on **who sent it** than on what this particular message says. The sending identity - the domain the mail claims to come from, and the network address it arrived from - carries an accumulated record: how much it sends, how steadily, how much of that is refused because the recipient does not exist, and how often recipients mark what does arrive as unwanted. That record is what people mean by **sending reputation**. It is built over weeks, it decays slowly, and it is shared by everything sent from that identity. Two signals dominate it: - **Permanent bounces** - refusals that will never succeed, most often because the address does not exist. A high share of these is the classic fingerprint of a sender who does not know who it is mailing. - **Complaints** - a recipient marking a message as unwanted. Each one weighs far more than a bounce, because a human made the judgement. Softer signals matter too: a sudden jump in volume from an identity that normally sends little, long runs of byte-identical bodies, and traffic that flows in one direction only with no reciprocal engagement. ## Why an automated suite is a heavy sender of the worst possible shape Read that list back as a description of a test suite and every line matches: - **Volume without warning.** A nightly run plus a per-commit run can emit hundreds of messages in minutes from an identity that otherwise sends a trickle. - **Addresses that do not exist.** A case that builds `[email protected]` gets a permanent bounce every single time it runs, and the run does not care because it never checks. - **Uniformity.** The same activation body, the same subject, from the same identity, thousands of times. - **No engagement.** Nobody opens, replies to, or files these messages anywhere; the only human-shaped signal the identity produces is the occasional complaint when a stray message reaches a real person. - **A shared identity.** If the suite sends from the same domain customers receive mail from, there is no separation between the machine traffic and the mail the business depends on. ## Why nobody notices until customers do This is the part worth remembering, because it is what makes the failure mode a drift rather than an incident. The suite's oracle is a mailbox the team controls, and mail into a mailbox you control is the one path that keeps working: a capture service or a self-hosted domain will happily accept everything, whatever the wider record says about the sender. | What the suite observes | What customers are experiencing | | --- | --- | | Every activation message arrives in the capture mailbox | An increasing share of the same message is filed as unwanted | | Green run, no assertion changes | Support tickets about "I never got the email" | | No bounce ever surfaces to a case | The bounce rate on the sending identity climbs steadily | | The same suite has run for months | Reputation has been eroding for exactly that long | So the signal that would catch this never reaches the pass/fail suite at all. It lives in the sending service's own records - bounce share, complaint share, refusals and deferrals from receiving systems - and somebody has to look at them as a trend on the non-production identity. ## What to do instead 1. **Split the identities.** Non-production traffic leaves from its own subdomain, and customer mail from the customer one. A record damaged by machine traffic then damages only machine traffic. 2. **Address everything at a domain you control.** A domain configured to accept any local part turns every invented address into a delivered message rather than a permanent bounce, which removes the dominant signal outright. 3. **Keep third-party addresses out of automated data.** No colleague's personal address, no address copied from production, no plausible-looking invention at a public provider. Every one of those is either a bounce or a potential complaint. 4. **Budget the volume.** Only a small deliberate set of cases needs to exercise the real sending path; the rest can assert at the handoff seam against a receiver the run controls. Run the sending slice on a schedule rather than on every commit. 5. **Watch the record, not just the suite.** Bounce and complaint share on the non-production identity, reviewed as a trend, is the early warning; by the time a customer reports a missing message the drift is months old. ## Where this stops being automation's problem One neighbouring subject is deliberately out of scope here: the published records that let a receiving system verify a message really came from the domain it claims. Those matter enormously to deliverability, but they are a property of how the domain is set up rather than something a suite's addressing choices can damage. What a suite owns is volume, recipients and identity separation - and those three, badly chosen, are enough to erode a domain's standing without a single line of product code changing.

  • Your suite must exercise the real delivery path end to end. How do you keep the volume from becoming the problem?
    Keep the set of cases that genuinely send small and deliberate - a handful that prove the path works - and let everything else assert at the handoff seam against a receiver the run controls. Bound the concurrency of the sending cases, and run that slice on a schedule instead of on every commit. The path breaks slowly; a nightly or weekly proof catches it in time.
  • How would you notice reputation damage before customers do?
    Watch what the sending service already reports for the non-production identity: the share of permanent bounces, the share of complaints, and refusals or deferrals from receiving systems, read as a trend rather than a single day's number. A rising permanent-bounce share is the earliest and clearest sign, and it shows up long before anyone reports a missing message.

A sending domain works like a caller's phone number: dial hundreds of disconnected lines every night and the carrier starts flagging the number, however reasonable you sound when someone finally answers.

saying these in an interview costs you the question

  • Thinks a bounced automated message affects nothing beyond that case
  • Invents recipient addresses at a mail domain the team does not own
  • Assumes reputation is judged per message rather than per sending identity
  • Says the suite is healthy because its own captured mail always arrives
  • Sends automated traffic from the same domain customers receive mail from