Back to blog
Threat Intel
Phishing Forensics

Microsoft's SCL Score: When to Trust It, When to Dig Deeper

Microsoft's Spam Confidence Level is a starting point, not the final word—here's how to challenge its verdict when triaging a real incident.

MailSleuth Research
Email Security Team
June 9, 20268 min read
An illustration showing a gauge for Microsoft's Spam Confidence Level (SCL) with a needle between safe and unsafe, symbo

An invoice from a critical vendor just landed in a user's junk folder. The ticket is in your queue, marked 'Urgent'. You pull the headers, your eyes scanning for the usual suspects, and then you see it: `SCL:5`. The machine has spoken. Case closed?

Not so fast. The Spam Confidence Level (SCL) within Exchange Online Protection (EOP) is one of the most important—and misunderstood—signals in an email analyst's toolkit. It’s a powerful indicator, a composite score derived from a massive dataset of sender reputation, content analysis, and machine learning models. But it is not infallible.

Treating the SCL as an unquestionable verdict is a rookie mistake. A senior analyst knows it’s just the opening statement. Your job is to cross-examine it, especially when the story it tells doesn't line up with the reality of your inbox.

SCL, BCL, PCL: Deciphering Microsoft's Secret Language

Before you can challenge the SCL, you need to speak its language. Microsoft uses a few key scores to categorize incoming mail, all visible in the `X-Forefront-Antispam-Report` header. While the SCL gets all the attention, its siblings are just as revealing.

The Three Key Scores

First, the Spam Confidence Level (SCL). This is the final, aggregated score. It runs on a scale where `-1` means the message bypassed filtering (e.g., an admin-configured transport rule), `0` and `1` mean non-spam, and `5` or `6` mean spam. A score of `9` indicates high-confidence phishing. The SCL determines the final action: deliver to inbox, deliver to junk, or quarantine.

Next is the Bulk Complaint Level (BCL). This scale from `0` to `9` measures how many complaints the sender generates from recipients. A high BCL doesn't necessarily mean the mail is malicious, but it does mean a lot of people find it unsolicited. Think newsletters you don't remember signing up for. An email can have a low SCL but a high BCL, which might explain why it feels like spam to a user even if it's technically 'safe'.

Finally, there's the Phishing Confidence Level (PCL), ranging from `1` to `8`. As the name implies, this score specifically measures phishing indicators. An email with a low SCL but a moderate PCL is deeply suspicious and warrants immediate investigation for credential theft or other malicious intent.

X-Forefront-Antispam-Report: CIP:[198.51.100.42];...;SCL:5;PCL:4;SRV:SPAM;BCL:3;... — Example X-Forefront-Antispam-Report Header

Looking at this header fragment tells a story. The SCL is `5`, so it was routed to Junk. But the PCL is `4` and the BCL is `3`. Microsoft's engine saw something slightly phishy and moderately bulky, which combined to trip the spam verdict. Knowing which lever was pulled is the first step in any real triage.

The False Positive: When Good Mail Gets a Bad Score

Let's go back to that 'Urgent' ticket. An invoice from a key supplier is in Junk, SCL is `5`, and the finance department is blocked. Your first instinct can't be 'tell the sender they're spamming'. You need to find out *why* EOP thinks it's spam.

Authentication Failures and Forwarding Chains

The first place to look is the `Authentication-Results` header. Check the verdicts for SPF (RFC 7208) and DKIM (RFC 6376). One of the most common causes for a legitimate sender to get a high SCL is a forwarding setup breaking authentication. Imagine the vendor sends an email, it hits a third-party service (like a helpdesk ticketing system), and then gets forwarded to your tenant. The final server that connected to your MX gateway is the forwarder, not the vendor's actual mail server. Its IP address isn't in the vendor's SPF record. That's an `spf=fail`.

DKIM can also break. If that same forwarding service adds a footer or disclaimer to the email body, it changes the content. The DKIM signature, which is a cryptographic hash of the body and select headers, will no longer match. That's a `dkim=fail`. Modern systems using Authenticated Received Chain (ARC), defined in RFC 8617, can help preserve these results across hops, but adoption isn't universal. One or two authentication failures are heavy marks against an email, pushing its SCL score up.

Content and Reputation Woes

Even with perfect authentication, legitimate mail can be flagged. Is the sender using a shared IP address for their outbound mail? If they're on a budget ESP, their IP neighbor could be a spammer, tanking the reputation for everyone. Does the invoice email use urgent language like 'ACTION REQUIRED' or include links from a URL shortener? These are classic spam signals that add points to the SCL. The score is a composite; it's rarely just one thing.

The operational stake here is huge. Blindly blocking based on SCL can sever business relationships. The correct response is to analyze *why* it failed and communicate that back to the sender. If it's a broken SPF record, they need to fix it. Understanding the root cause allows you to solve the problem, not just the symptom.

Corroborating Evidence: Your External Toolkit

The SCL is an internal verdict from Microsoft's walled garden. To truly validate or challenge it, you must step outside and consult external sources of truth. This is how you build a compelling case for a false positive or, more importantly, prove a missed phish is truly malicious.

IP and Domain Blacklists

The client IP (the `CIP` field in the Forefront header) is your starting point. Is this IP listed on major public blocklists? Tools like Spamhaus, Proofpoint's Reputation Service, and Cisco's Talos Intelligence provide authoritative data on IP reputation. An IP with a poor reputation across multiple services strongly corroborates a high SCL. Conversely, if a message has a high SCL but the sending IP is clean everywhere, it points toward a content-based issue or an authentication failure, not a fundamentally bad sender.

Domain Age: The Ultimate Tell

This is non-negotiable for any serious investigation. Threat actors cycle through domains rapidly. A domain registered yesterday has no history, positive or negative, which can sometimes allow it to sneak past reputation filters and receive a deceptively low SCL. Use WHOIS or passive DNS history tools to check the domain's creation date. An email from a domain that's less than 30 days old should be treated as highly suspicious, regardless of its SCL. It's one of the strongest indicators of malicious intent, especially in a Business Email Compromise (BEC) context where attackers use lookalike domains to impersonate executives or vendors.

The False Negative: Anatomy of a Missed Phish

The most dangerous scenario is the false negative: a user reports a credential phishing link, but you find the SCL is `1` or even `-1`. The machine said 'safe,' but a human is about to lose their password. How does this happen?

X-Forefront-Antispam-Report: ...;SFV:SFE;SCL:-1;...

An `SCL:-1` is an immediate red flag for an analyst. The `-1` value means the message bypassed the spam filters entirely. The `SFV:SFE` (Spam Filter Vection: Skipped Filter Evaluation) notation confirms it. This is almost always due to an overly broad transport rule or an entry in a user or admin-level allow-list. Someone, at some point, decided to trust everything from that sender or IP, and now it's being abused. This is why allow-listing entire domains is so dangerous.

Even with a normal SCL of `1`, a phish can get through. Attackers are constantly innovating to defeat content scanners. They embed malicious links in QR codes, hide them in attachments like PDFs or HTML files, or use benign-looking URLs that perform a series of redirects to the final phishing page. They also abuse legitimate services like SharePoint or OneDrive for hosting their payloads. The SCL engine sees a link to `sharepoint.com`, a highly reputable domain, and gives it a pass. It has no visibility into the malicious file hosted there.

This is where your external investigation becomes critical. The SCL failed you. But checking the sending domain's age might reveal it was created hours ago. Running the final, redirected URL through a sandbox or reputation checker would have exposed the credential harvesting kit. The SCL is just one tool, and in the face of a modern, multi-stage attack, it's often the first one to be neutralized.

A Practical Triage Workflow

Let's put it all together into a repeatable process. An email is reported. Where do you start?

First, analyze the headers. Extract the SCL, BCL, and PCL from the `X-Forefront-Antispam-Report`. Check the `Authentication-Results` header. Did SPF, DKIM, and DMARC (RFC 7489) pass or fail? A `dmarc=pass` is a strong signal of legitimacy. A fail, or the absence of DMARC entirely, raises questions.

Next, form a hypothesis based on the SCL. If the SCL is high and the email seems legitimate (a potential false positive), your hypothesis is 'This is good mail that failed a technical check.' Your job is to prove it by finding the failed SPF/DKIM record or identifying a shared IP problem via external reputation checks.

If the SCL is low and the email seems malicious (a potential false negative), your hypothesis is 'This is bad mail that evaded filters.' Your job is to prove it by demonstrating the payload is malicious. Check the sending domain's age. Analyze all URLs. Detonate any attachments in a sandbox. These external signals are your evidence to override the SCL's initial verdict and justify remediation actions like purging the message from other inboxes.

This process elevates your analysis from simply reading a score to building a case. The SCL tells you what Microsoft's algorithm thinks. Your investigation determines the ground truth.

The takeaway

The Spam Confidence Level is a data point, albeit a very powerful one. It reflects a sophisticated, automated assessment that is right most of the time. But your job as an analyst is to investigate the exceptions—the corner cases where automation falls short. Whether clearing a false positive that's holding up a business process or flagging a false negative that could lead to a breach, your value lies in the context you provide.

Developing the muscle memory to cross-reference the SCL with authentication results, external reputation, and domain history is what separates a ticket-closer from an incident responder. Tools that aggregate these external reputation sources, like MailSleuth.AI, can accelerate this process, but the analytical mindset is what truly closes the case with confidence.

#microsoft-365#email-security#exchange-online#phishing-analysis#soc#dmarc
MailSleuth Research
Email Security Team

We dissect phishing campaigns and email infrastructure so you don't have to.