550 5.7.350 Remote server returned message detected as spam

Mail sent from a Microsoft 365 mailbox was handed to the next server, and that server refused it as spam; Exchange Online passes the verdict back to the sender with this code. Very often the "remote server" is another Microsoft 365 tenant or the sender's own on-premises filter, so the mail never left Microsoft's network.

What the server replies

550 5.7.350 Remote server returned message detected as spam -> 550 5.7.350 Remote server returned message detected as spam

Sent by
Microsoft 365
Type
PermanentRetry fails
About
Content
Enhanced code
5.7.350

Who sends it

Exchange Online transport, as the sending side, after a downstream server replied with a spam rejection. The NDR is addressed to the Microsoft 365 user who sent the message.

Why it happens

  • The recipient tenant's anti-spam policy is set to reject rather than quarantine high-confidence spam, and the message scored high.
  • The sending tenant's own outbound spam filter flagged the message.
  • The content contains a URL on a blocklist, a suspicious attachment type, or phishing-like wording.
  • A connector routes outbound mail through an on-premises appliance that rejected it.

How to fix it

  1. Send a trimmed version

    Remove links, attachments and signature images and resend. If the plain message arrives, add elements back one at a time to find the trigger.

  2. Check the URLs

    Links to shortened URLs, newly registered domains or file-sharing pages set off Microsoft's filters. Link to pages on an established domain.

  3. Admin: trace the message

    In the Exchange admin center run a message trace for the sender; the trace shows which server returned the rejection and whether an outbound policy or a connector was involved.

  4. Ask the recipient admin to allow the sender

    If the remote server is another tenant, their admin can add the sender to the Tenant Allow/Block List after confirming the mail is legitimate.

Check it yourself

These free tools show the records and connections behind this code for your own domain or server.

Related codes

Sources

Fewer bounces to look up.

Faivelo sends from authenticated, warmed infrastructure, turns permanent bounces into one clean event for your application and keeps the address out of future sends.

Send with Faivelo

Free tier included. No card needed.