This Exim message wraps a post-DATA rejection — not the real error. Read the trailing code, then fix the spam, auth, or reputation cause it identifies.
Updated Jul 1, 2026
The short answer
"SMTP error from the remote mail server after end of data" is Exim's wrapper text for a rejection that the receiving server returned after you sent the message body and the closing "." (the end-of-DATA terminator per RFC 5321). It is not the error itself — the real diagnosis is the 3-digit code and text that follow it (e.g. "550 ... spam"). Fix the cause that code names: usually content/spam scoring, sender authentication, or reputation.
This message is generated by the Exim mail transfer agent (and tools built on it). It means your server finished transmitting the message body and sent the closing line containing a single dot (.) — the end-of-DATA terminator defined in RFC 5321 §4.1.1.4 — and the receiving server rejected the message at that final step instead of replying 250 OK.
The phrase itself is just a wrapper. The actual diagnosis is the SMTP reply that Exim quotes immediately after it.
During an SMTP session the client issues DATA, the server replies 354, the client streams the message and ends it with <CRLF>.<CRLF>. Only then does the server evaluate the whole message and return a final code. A failure here is distinct from a failure at MAIL FROM or RCPT TO — by this point the recipient is already accepted, so the rejection is almost always about the message content, authentication, or your sending reputation, not a bad address. Exim classifies any error "after end of data" as a message error (the specific message fails) rather than a host error, so it does not delay other messages queued to the same host.
Look at the full bounce. The useful part is the code and text after the phrase, for example:
SMTP error from remote mail server after end of data:550 5.7.1 Message rejected as spam
5.7.1) is an enhanced status code from RFC 3463. 5.7.x = policy/security, 5.6.x = content/media, 5.2.x = mailbox.Match the fix to the trailing code:
Note: the original advice to "edit your SPF record because it blocklists domains" is misleading. SPF authorizes your sending hosts; it does not maintain recipient blocklists. Only revisit SPF when the trailing code names an authentication failure.
With Courier
References
RFC 5321 §4.1.1.4 — DATA command and end-of-mail-data
RFCRFC 3463 — Enhanced Mail System Status Codes
DOCSExim Specification — SMTP processing / message errors after the dot
RFCRFC 7208 — Sender Policy Framework (SPF)
RFCRFC 9989 — Domain-based Message Authentication, Reporting, and Conformance (DMARC)
HELPGoogle Workspace Admin Help — Email sender guidelines (authentication)
FAQ
No. It is descriptive text generated by the Exim MTA, not an SMTP reply code. It tells you the receiving server rejected the message after the end-of-DATA dot (RFC 5321 §4.1.1.4). The actual error is the 3-digit code (e.g. 550) and enhanced status code (e.g. 5.7.1) that Exim prints right after the phrase.
Because the recipient and sender addresses were already accepted at RCPT TO and MAIL FROM. The receiving server only evaluates the full message — content, headers, authentication results, and reputation — once it has the complete body, which arrives after the closing dot. So a failure here points to the message itself, not a bad address.
Only if the trailing code names an authentication failure (e.g. 5.7.1 with an SPF/DKIM/DMARC message). SPF (RFC 7208) authorizes which hosts may send for your domain; it does not control recipient-side blocklists. If the code says "spam" or content-related, fix content and reputation instead.
One API, every provider
Courier connects to your email, SMS, and push providers, handles retries and failover, and surfaces delivery errors in plain language.
Reply-code definitions per RFC 5321 §4.1.1.4. Last reviewed Jul 1, 2026. Courier is not affiliated with third-party providers; error behavior may vary by implementation.
© 2026 Courier. All rights reserved.