Skip to main content
How to prevent blocks and get your traffic accepted. For the controls behind these rules, see reputation and abuse control.

Reading a rejection

Rejections take the shape 550 5.7.1 [CODE] reason. The bracketed code tells you which control fired. These codes are designed to help you understand why a message was rejected. They are not part of the SMTP standard and can change at any time as we update our policies. Below are some examples of common rejection codes and their meanings.

Authenticate every sending domain

  • Configure Domain Lockdown for every domain you send from.
  • Publish SPF, DKIM, and DMARC records before you scale.
  • Keep from.email, reply_to, and the DKIM signing domain aligned.
  • Never send on behalf of domains you do not control.
Rejections when authentication is wrong:
550 5.7.1 This sender is not authorized to send from example.com
550 5.7.1 [BFD] Sender prohibited by SPF
550 5.7.1 [ESA] Sender blocked.

Segment your traffic

  • Use a separate sub-account for each client, tenant, or application.
  • Use consistent headers within each mail stream. MailChannels derives a sender-id from message headers, so consistency allows each stream to build its own reputation history.
  • Set campaign_id per send for campaign-level metrics, webhook correlation, and isolation.
  • Use distinct domains or subdomains for transactional and marketing mail.

Send only to recipients who asked for mail

  • Send only to recipients with explicit consent. Do not buy, scrape, or rent lists.
  • Do not send speculatively to generated or role addresses (info@, sales@, sequential local parts).
  • Validate addresses at signup. Drop typos and disposable domains.
Rejections when list hygiene slips:
550 5.7.1 [BR] Our system has detected an excessively high number of invalid recipients originating from your account.
550 5.7.1 [UNS] Recipient has unsubscribed from your list.
550 5.7.1 [RB] This recipient email address has been blocked.

Keep message content honest

  • Use a stable from.email per mail stream. Do not rotate sender addresses to evade filters.
  • Use HTTPS links to domains you control. Avoid URL shorteners and redirector chains.
  • Avoid executables, scripts, and password-protected archives as attachments.
  • Match the HTML and plain-text bodies. Do not hide content in one.
Rejections from content and header scans:
550 5.7.1 [CS] Our system has detected that this message is a virus.
550 5.7.1 [CS] Message blocked. If this is a false positive, please report this to your hosting service provider.
550 5.7.1 [CSR] Account blocked. See <link>
550 5.7.1 [FEB] Your message could not be delivered because it contained an attachment type that is not allowed.
550 5.7.1 [SHF] Message rejected.
550 5.7.1 [XM] Blocked.

Ramp new traffic gradually

  • Warm new domains over days or weeks. Start low, grow as engagement stays healthy.
  • Treat a new sub-account, campaign_id, or recipient segment the same way.
  • Keep daily volume consistent. Unexplained spikes attract scrutiny.
Velocity and quota rejections:
550 5.7.1 [STF] Sending too fast.
550 5.7.1 [NS] Our system has detected an unusual amount of unsolicited email originating from your address.
550 5.7.1 This sender has exceeded their daily limit for email api requests.
451 4.7.1 Sending quota exceeded.

Process feedback signals

  • Subscribe to webhooks and process them in your sending pipeline.
  • Watch metrics for bounce rate, complaint rate, and engagement trends.