Why Emails Land in Outlook's Junk Folder, and How to Find Out
Outlook sends your email to Junk when Microsoft's filter decides it's spam, phishing or bulk mail that people complain about. You can usually tell which from the message headers. Check the CAT and SFV values in X-Forefront-Antispam-Report, then BCL in X-Microsoft-Antispam. The compauth result in Authentication-Results tells you whether authentication was the cause.
Most guides on this tell you to look at the SCL number. That advice is out of date. Microsoft's own documentation, updated in August 2026, says the SCL "no longer holds the same meaning in cloud organizations". It "doesn't determine whether spam filtering identifies a message as Spam or High confidence spam, and it doesn't determine the action taken on the message." Below is how to read what actually decided it, and what to do about each cause.
First, get a junked message and its headers
To diagnose a junked email, you need a copy that actually landed in Junk, plus its full headers. A message in your own Sent folder won't do: the verdict is only stamped on the recipient's copy.
The quickest way is a test mailbox: a free Outlook.com account, or a Microsoft 365 mailbox you or a colleague control. Send your real campaign or sequence email to it, from the same sending tool and on the same route. If it lands in Junk, open it and view the source:
- Outlook on the web: open the message, select the three dots, then View and View message source.
- Classic Outlook for Windows: File, then Properties, then Internet headers.
If you'd rather not read raw headers, paste them into Microsoft's own Message Header Analyzer. Our walkthrough of how to read email headers covers the Received chain in more depth. This post sticks to the Microsoft-specific fields.
One caveat: Microsoft documents these headers for Microsoft 365 (business) mailboxes. Outlook.com consumer mailboxes are a separate service with their own postmaster site. The authentication fields read the same way in both, but treat the Microsoft 365 field definitions below as the documented reference.
The four header values that tell you why
Four values tell you why the message was junked. CAT gives the category of verdict, SFV says whether filtering ran or was skipped, BCL scores bulk mail on complaints, and compauth gives the authentication verdict. You'll find them in three headers.
Here is a real-format example of the first header, taken from Microsoft's documentation:
X-Forefront-Antispam-Report: ...CTRY:;LANG:hr;SCL:1;SRV:;IPV:NLI;SFV:NSPM;PTR:;SFTY:;...
And the values that matter, from Microsoft's anti-spam header reference:
| Header | Value | What Microsoft says it means |
|---|---|---|
| X-Forefront-Antispam-Report | SFV:SPM |
Marked as spam by spam filtering |
SFV:NSPM |
Marked as non-spam and delivered | |
SFV:BLK |
Sender is on the user's Blocked Senders list | |
SFV:SKS |
Marked as spam before filtering, by a mail flow rule | |
CAT:SPM / CAT:HSPM |
Spam / high confidence spam | |
CAT:BULK |
Bulk | |
CAT:SPOOF / CAT:PHSH |
Spoofing / phishing | |
SRV:BULK |
Identified as bulk using the BCL threshold | |
IPV:NLI |
Your IP was not found on any IP reputation list | |
PTR: |
The reverse DNS of the connecting IP (blank means none) | |
| X-Microsoft-Antispam | BCL:0 to BCL:9 |
Bulk complaint level, higher means more complained about |
| Authentication-Results | compauth=fail reason=000 |
Failed DMARC, and your policy is quarantine or reject |
compauth=fail reason=001 |
Failed implicit authentication: no records, or weak ones (~all, p=none) |
|
compauth=pass reason=1xx |
Passed authentication |
The SCL is still in the header, but in a cloud mailbox you can mostly ignore it. Microsoft says its main remaining use is on-premises and hybrid Exchange, plus mail flow rules.
Reading the verdict: a decision table
Each combination points to a different cause, so fix the one the headers name, not the one you assumed. This table maps what you see to what it means and the fix.
| What the headers show | Likely cause | What to do |
|---|---|---|
compauth=fail, spf=fail or dkim=none |
Authentication | Fix SPF, DKIM and DMARC alignment first. Nothing else matters until this passes |
CAT:BULK, SRV:BULK, BCL:7 or higher |
Complaints about you as a bulk sender | Cut unengaged recipients, make unsubscribing easy, slow down |
CAT:SPM, auth passes, BCL:0 |
Content or IP/domain reputation | Check reputation (SNDS if you own the IP), simplify the message, look at links |
CAT:SPOOF |
From domain doesn't authenticate as the sender | Align the From domain with your DKIM signing domain |
SFV:BLK |
This user blocked you | Nothing to fix at your end, apart from not mailing them |
CAT:BULK but BCL below 7 |
Bulk, but under the default threshold | Look at the recipient's policy: Strict uses 5, Standard uses 6 |
The bulk row catches out a lot of legitimate senders. According to Microsoft's bulk detection page, the default anti-spam policy junks bulk mail at BCL 7 or above. The Standard preset uses 6, and the Strict preset uses 5 and quarantines rather than junking. So the same newsletter can reach the inbox in one company and Junk in the next, because their admins chose different presets.
There's a newer wrinkle too. Microsoft's documentation says that as of July 2026, all mail identified as bulk receives a Promotions tag. Where an admin has turned on "Bulk moves enabled", bulk mail below the threshold goes to a Promotions folder instead of the inbox. If recipients say they "never got" your email but it isn't in Junk, look there.
Authentication: the May 2025 rules
If the headers show an authentication failure, start here. Microsoft now enforces this for high-volume senders.
Microsoft's Outlook.com policies page says that from 5 May 2025, domains sending more than 5,000 emails per day to Outlook.com addresses must pass SPF, DKIM and DMARC. DMARC needs at least p=none and must align with SPF or DKIM, preferably both. Non-compliant mail goes to Junk first, and may then be rejected with:
550; 5.7.515 Access denied, sending domain [SendingDomain] does not meet the required authentication level.
We cover the full requirements in Microsoft Outlook's bulk sender requirements. Below 5,000 a day the rule doesn't formally apply, but compauth=fail reason=001 will still count against you. You can check all three records for your domain in one pass with the deliverability audit.
SNDS and JMRP: useful only if you own the IP
SNDS (Smart Network Data Services) and JMRP (the Junk Mail Reporting Program) are Microsoft's free sender tools. They only work for IP addresses you can prove are yours. Most small senders don't have any.
To get access, you prove control of an IP range. The SNDS FAQ describes three routes: an authorisation email to postmaster@ or abuse@ at the domain in the IPs' reverse DNS, an address from the RDAP allocation record, or the ASN record. If you send cold email through Google Workspace, or newsletters through Mailchimp or a similar platform on shared IPs, you can't pass that check, and the data belongs to your provider. These tools are for people running their own mail servers, or on dedicated IPs.
If you do qualify, SNDS gives you the most direct view of Outlook.com's opinion available anywhere. According to the FAQ:
| SNDS colour | Share of messages given a spam verdict |
|---|---|
| Green | Under 10% |
| Yellow | 10% to 90% |
| Red | Over 90% |
The FAQ adds a reading tip: if your other IPs are green, a yellow one is probably near the 10% end. It counts one message to ten recipients as ten verdicts. And it notes the colour "doesn't directly represent deliveries to users' inboxes or Junk e-mail folders", because users' own settings can move mail either way.
The other numbers worth watching, all from the same FAQ:
- Complaint rate is complaints divided by message recipients. Microsoft says "more than 30% of the IPs sending mail to Outlook.com keep their complaint rate at less than 0.3%", and calls that "a good bar to shoot for". Complaints are counted on the day they're reported, so a single day can show over 100%.
- RCPT commands against message recipients. Microsoft says more than a third of IPs keep the share of RCPT commands that don't become actual recipients under 10%, and that a large gap "can indicate problems with the sender, such as out of date recipient lists or namespace mining".
- IP status shows whether an IP is Blocked, Bot or Junked. It reflects only the last 24 hours, with no history.
Data is aggregated daily, around midnight Pacific time, and kept for 90 days. IPs that sent fewer than 100 messages on a given day may show no data at all. Access also expires: the new portal says network access lapses 10 months after approval, so you have to re-attest ownership.
JMRP is the feedback loop. Microsoft's services page says it returns "the full message with headers of any email marked as junk or phishing", and that you typically start receiving feedback "within as little as 72 hours" of enrolling. Every address that comes back through JMRP should be suppressed at once.
The rejections that tell you more than Junk does
When Outlook.com rejects a message outright rather than junking it, the bounce carries a code that names the reason. These come from Microsoft's troubleshooting page:
| Code | Microsoft's stated reason |
|---|---|
421 RP-001 / RP-002 / RP-003 |
Rate or connection limit exceeded, "related to IP/domain reputation" |
550 SC-001 |
Content with spam-like characteristics, or IP/domain reputation |
550 SC-002 |
The connecting IP "has exhibited namespace mining behavior" |
550 SC-004 |
Block placed because of complaints. Microsoft recommends enrolling in JMRP |
550 DY-001 |
Mail from a dynamic IP |
550 OU-001 |
Points you to Spamhaus for removal |
550 5.7.515 |
Authentication requirements not met |
If you see OU-001, you're on a third-party list. Our guide to getting off an email blacklist covers that.
SC-002 deserves a plain explanation, because it involves our own category of product. Microsoft's policy says senders "must not use namespace mining techniques", which it defines as "verifying email addresses without sending (or attempting to send) emails to those addresses", and it takes action against IPs that do so. In practice, that means two things. Never run address checks from the same IP your real mail leaves from. And keep the share of invalid recipients low, because SNDS reads a big gap between RCPT commands and delivered recipients as a warning sign. Verify lists away from your sending infrastructure, and verify before the send, not by sending.
What Microsoft says matters most
Microsoft singles out the junk complaint rate as one of the principal factors. Its troubleshooting page lists the inputs to its SmartScreen filter: "sending IP, domain, authentication, list accuracy, complaint rates, content and more". It then adds: "Of these, one of the principal factors in driving down a sender's reputation and deliverability is their junk email complaint rate."
A few other points from the same pages are worth knowing:
- There is no allow list. Microsoft says plainly that Outlook.com doesn't operate one. The nearest thing it names is Validity's Sender Certification, a paid third-party programme.
- New IPs start with no reputation. Microsoft says a new IP "can expect to be fully ramped within a couple of weeks or sooner", depending on volume, list accuracy and complaint rates. A new IP added to a domain with a good SPF-authenticated record can inherit some of that domain's reputation.
- Valid reverse DNS is required, and connections from dynamic IP space may not be accepted.
- Don't retry after a 5xx. The policy says that after a permanent error you must not retransmit to that recipient, and after repeated failures you must stop sending to them altogether.
A practical order of work
Work through it in this order, and stop when the headers come back clean:
- Get one junked copy and read
compauth,CAT,SFVandBCL. Don't guess the cause. - Fix authentication if
compauthfailed. Check your DMARC record aligns with your DKIM signing domain. - If it's
CAT:BULKwith a high BCL, cut the list, not the copy. Drop people who haven't engaged, honour unsubscribes at once, and remove every invalid address before the next send. - If you own your sending IPs, enrol in SNDS and JMRP today. Suppress every JMRP complaint.
- If you're on shared infrastructure, ask your provider what SNDS shows for the IPs your mail uses.
- Re-test with a fresh message after each change, not after all of them, so you know which one worked.
If reputation is already damaged rather than borderline, a single fix won't be enough. See our 30-day reputation recovery plan for the slower, staged version.
Common questions
What does SCL mean in an Outlook email header?
SCL is the spam confidence level, a value from -1 to 9 that Microsoft stamps in the X-Forefront-Antispam-Report header. Microsoft now says that in cloud mailboxes SCL no longer decides whether a message is spam or what happens to it, so read the CAT and SFV values instead.
Why does Outlook put bulk email in Junk even when it passes SPF and DKIM?
Microsoft 365 gives bulk mail a bulk complaint level (BCL) from 0 to 9 based on how much that sender gets complained about. In the default anti-spam policy, a BCL of 7 or more sends the message to Junk, regardless of whether authentication passed.
Can I use SNDS if I send through Google Workspace or Mailchimp?
Not in a useful way. SNDS shows data only for IP addresses you can prove you own or control, through reverse DNS, RDAP or ASN records. If your mail leaves from a provider's shared IPs, that provider is the one who can see the SNDS data.
Does Outlook.com have an allow list I can apply to?
No. Microsoft's postmaster site says Outlook.com does not operate an allow list, and evaluates all inbound mail. It points senders to Validity's Sender Certification, a third-party paid programme, as the closest equivalent.
Verify unlimited addresses for $29.99/month
Real SMTP mailbox checks. No credits, no per-email fees.
Get Started