Emails rejected by Microsoft (Outlook/O365/Hotmail) — symptoms, diagnosis, and how I got delisted

Sharing this in case it helps other NS8 admins. I hit this wall recently. Mail to some Microsoft-hosted recipients just stopped arriving. Here’s what happened, and how I fixed it.

The symptoms

Mail from one of my domains stopped reaching Microsoft mailboxes. Outlook.com, Hotmail, and some Microsoft 365 tenants. Two behaviours showed up:

  • Hard bounce (NDR). Error code 5.7.606-649. Message said “banned sending IP”. It pointed to a delisting portal.
  • Silent drop. No NDR at all for some tenants. Mail just disappeared. Nothing useful in the logs on their side.

First clue: Postfix logs on my NS8 mail module. SMTP responses mentioned Microsoft’s S3140 block code. This code means the IP is on a range with bad reputation. In my case, the whole subnet was flagged. Not just my IP.

Here’s an anonymized real bounce I got:

<recipient@example-outlook-domain.tld>: host
    outlook-com.olc.protection.outlook.com[XX.XX.XX.XX] said: 550 5.7.1
    Unfortunately, messages from [YOUR.SENDING.IP.HERE] weren't sent. Please contact
    your Internet service provider since part of their network is on our block
    list (S3140). You can also refer your provider to
    http://mail.live.com/mail/troubleshooting.aspx#errors. [Name=Protocol
    Filter Agent][AGT=PFA][MxId=xxxxxxxxxxxxxxxx]
    [TYxPEPFxxxxxxxx.xxxprdxx.prod.outlook.com 2026-xx-xxTxx:xx:xx.xxxZ
    xxxxxxxxxxxxxxxx] (in reply to MAIL FROM command)

The key line is part of their network is on our block list (S3140). That’s the tell. It’s not about your domain or your mail content. It’s about the IP range itself.

That’s an important point. You can do everything right. You can still get blocked. If your neighbours on the same /24 send spam, you pay for it too.

Step 1 — Check the basics first

Before blaming Microsoft, I checked my own setup. Microsoft won’t even look at a delisting request if these aren’t clean:

  • SPF. One TXT record. All authorized sending IPs. End with -all.
  • DKIM. Signing active (rspamd/opendkim on the mail module). Public key published. Verify with dig TXT selector._domainkey.yourdomain.tld.
  • DMARC. A _dmarc.yourdomain.tld TXT record. Start with p=none if unsure. Point rua= to an address you actually read. I pulled the DMARC aggregate reports to confirm alignment was passing. No point asking for delisting if your own reports show failures.

All three were already correct. Anonymized, here’s roughly what a clean setup looks like:

SPF:   v=spf1 ip4:xx.xx.xx.xx ip4:xx.xx.xx.xx mx ~all
DMARC: v=DMARC1; p=reject; pct=100; adkim=s; aspf=s; rua=mailto:dmarc@yourdomain.tld; ruf=mailto:dmarc@yourdomain.tld
DKIM:  default._domainkey.yourdomain.tld → valid RSA key published

Note the DMARC policy: p=reject, strict alignment on both SPF and DKIM (adkim=s; aspf=s), reports going somewhere I actually read. That’s stricter than what most domains run. Worth aiming for, not just p=none.

So the problem was pure reputation. Not a config bug on my side.

Step 2 — Make sure abuse@ is real

Microsoft often replies to the abuse@ address on file. Either the domain’s or the IP’s WHOIS entry (RIPE, for European IPs). If that mailbox bounces, your request goes nowhere. I checked:

  • abuse@domain.tld exists. It’s not a black hole.
  • It matches what RIPE has for the IP range.
  • Someone reads it. Me, in this case.

Sounds obvious. It’s the detail people skip.

Step 3 — Enroll in JMRP and SNDS

Two separate free programs, both on the same Microsoft sender support portal:

  • JMRP (Junk Mail Reporting Program) — Smart Network Data Services. When a recipient marks your mail as junk, you get a forwarded copy. No volume threshold — even at ten messages a day, a single complaint reaches you.
  • SNDS (Smart Network Data Services) — Smart Network Data Services. Gives you visibility on volume, complaint rate, spam trap hits for your IP.

Heads up on SNDS: it has a display floor. Microsoft won’t show data for an IP sending under roughly 100 messages a day. If you’re a small transactional sender, don’t be surprised if the dashboard just says “No data for specified IPs” every single day. That’s normal, not a sign you did something wrong. It also only covers the consumer Outlook.com/Hotmail/Live space, nothing on the Microsoft 365 side.

JMRP has no such floor, so it becomes your real source of evidence, even for a low-volume sender.

Step 4 — Find the right portal

This part cost me time. Microsoft has different portals depending on who’s rejecting you:

  • Outlook.com / Hotmail / Live (consumer)Smart Network Data Services for SNDS/JMRP enrollment and consumer-side delisting/mitigation requests.
  • Microsoft 365 / Exchange Online (tenant mailboxes)https://sender.office.com/. This is the dedicated IP delist portal for the 550 5.7.606-649 banned sending IP case. Anyone can use it. Even non-M365 customers.

My case involved a shared hosting subnet, not just my IP. So I also opened a ticket with the hosting provider’s abuse team. In parallel with the Microsoft request. Don’t wait for the provider to notice on their own. They usually escalate only after several customers on the same range complain.

Step 5 — Ask properly, with evidence

Microsoft’s delisting form wants specifics. Not a generic complaint. What worked for me:

  • The exact NDR code and timestamp of a rejected message.
  • Proof that SPF/DKIM/DMARC pass and align. A dig output or screenshot helps.
  • A short note on volume and purpose. This domain isn’t a bulk mailer. Low-volume business mail.
  • Confirmation that abuse@ is monitored.

Vague requests get ignored or bounced back. Specific ones get processed.

One more thing worth knowing: my first attempt was auto-rejected. The self-service delisting form ran through some automated check and said no, no human involved. So I had to escalate. I opened a support ticket instead, with an actual person on the other end. In that ticket I had to prove two things clearly:

  • I’m not sending spam. Low volume, real business mail, no bulk sending.
  • I actively monitor what goes through my SMTP server. Logs, alerts, the works. Not just a fire-and-forget setup.

That’s what got it moving. If the automated form says no, don’t give up there. Ask for a human.

Step 6 — Wait, and monitor

Delisting takes time. It’s not instant. SNDS, once enrolled, shows if your IP is still flagged. It also shows your complaint rate. Useful to confirm things are actually improving.

Outcome

The delisting request went through. The hosting provider fixed the wider subnet issue. Mail started flowing again. Both to Outlook.com and Microsoft 365 recipients. No more NDRs.

No changes were needed on the NS8/Postfix side. SPF/DKIM/DMARC and the abuse mailbox were already correct. That’s exactly what made the delisting request easy to argue.

TL;DR

  1. Check the exact NDR code. It tells you which blocklist, and which portal to use.
  2. Confirm SPF/DKIM/DMARC first. Before asking for delisting.
  3. Make sure abuse@ exists. And that someone reads it.
  4. Use sender.office.com for M365/Exchange Online blocks. Use the sender support portal for consumer Outlook.com/Hotmail issues.
  5. On shared hosting? Push your provider’s abuse team too. You might be collateral damage from a neighbour’s IP.
  6. Give Microsoft specifics. Not just a plea.
  7. If the automated form rejects you, escalate to a human. Prove you’re not spamming and that you monitor your SMTP.

Happy to answer questions if anyone’s dealing with the same thing on their NS8 install.

10 Likes

rough time elapsed? As experience, not as “benchmark”.

about 24 to 36 hours it was done from the first bounce to the final verification with an accepted email

Excellence !

I’ve been doing this for years and thought it was common knowledge.

However, I’ve found that the activation of my domains expires or gets revoked every few months. That’s why I have to write to the mailmaster regularly and bring it to their attention. Every time it’s a struggle, a hassle—totally annoying and unprofessional. Just typical Microsoft.

Despite the DMARC reports, I haven’t been able to notice the latest block in time. It’s only since I started using Hemres Agent to analyze and normalize all my DMARC reports that I’ve been getting alerts in time.

1 Like

It seems like half a year has flown by again. No sooner had I written this than the next incident occurred.
Everyone ruins their reputation as best they can, and Microsoft is doing its best.

This is the mail system at host mail.MYDOMAIN.de.
 
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
 
For further assistance, please send mail to postmaster.
 
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
 
                   The mail system
 
<abc.xyz@outlook.de>: host eur.olc.protection.outlook.com[XXX.XXX.XXX.XXX]
    said: 550 5.7.1 Unfortunately, messages from [MAIL_SERVR_IP] weren't sent.
    Please contact your Internet service provider since part of their network
    is on our block list (S3150). You can also refer your provider to
http://mail.live.com/mail/troubleshooting.aspx#errors. [Name=Protocol
    Filter Agent][AGT=PFA][MxId=xxxxxxxxxxxxxxxx]
    [TYxPEPFxxxxxxxx.xxxprdxx.prod.outlook.com 2026-xx-xxTxx:xx:xx.xxx
    xxxxxxxxxxxxxxxx] 

The ULRs redirected to: Announcements

And again I need to contact the Support: Sign in to your account

It’s rare that I get as annoyed as I do when I get these emails every six months. If only it were just one server, but it always affects all of them. It’s enough to make you want to run away screaming.

Courage

What do you mean?

courage to unblacklist your IP, keep us in touch

1 Like

Strange. I never had to renew the delist on their portals.

That said, for some months now I use SMTP2GO as smarthost to send my emails. There is a free plan for 1000 mails / month.

The industry as taken a path regarding the evaluation of the reputation of senders that is incompatible with email self hosting.

2 Likes

You’re right, but just because the game is complicated doesn’t mean it isn’t fun to play.

2 Likes

I do that immediately every time.

I always send them the following as “evidence”:

The server is well configured und have good reputation.

1. Mail-Tester: https://www.mail-tester.com/xyz

2. Our mailserver is well registrated on MS SDNS

3. mxtoolbox.com: mydomain.de Domain Health

4. DNSSEC and DANE: https://stats.dnssec-tools.org/explore/?mydomain.de

5. SPAMHAUS

…and the reference number to the last ticket

do yoiu have

  • strict spf - is better than ~
  • email signed by dkim
  • strict dmarc (dmarc user must be created to receive the emails)
  • abuse user created
1 Like
  • strict spf - is better than ~: Yes : "v=spf1 a mx -all"
  • email signed by dkim: yes "v=DMARC1;p=reject;pct=100;rua=mailto:abuse@mydomain.de;ruf=mailto:abuse@mydomain.de;fo=0:d:s;aspf=r;adkim=r;"
  • strict dmarc (dmarc user must be created to receive the emails): admin
  • abuse user created: correction: abuse@myadomain.de is redirected to the admin-user, not a dedicated abuse-user - I don’t see how that would make any difference
1 Like

Newest MAil:

Hello,

Thank you for contacting the Outlook.com Deliverability Support Team.

I have received your request for an investigation into your IP address [XXX.XXX.XXX.XXX]. Please re-submit the IP through the automation system for processing. This is the quickest way to gather information regarding your IP address.

This will allow our automation system to analyze your IP and determine if the issue can be resolved quickly. You will be notified via email of the results. If the IP does not qualify for automatic mitigation, or more information is needed, you will be provided the instructions you will need to follow to have the issue investigated further.

It really is enough to drive you crazy

At least they answer :slight_smile: From my experience the automated way will fail, then you report it and they do the necessary MS voodoo tricks and you’re good to go. It might be worth asking them why you have to do that every now and then; it wasn’t necessary in my case.