Mail Filtering Bypasses
The question it answers: Which allow lists, transport rules and connectors let mail bypass spam and phishing filtering?
Every allow entry is a hole in the filter: mail matching it is delivered even when Microsoft thinks it is spam or phishing. Allowed domains in the anti-spam policy are the worst - anyone can spoof them. This report lists every bypass with its age and last use.
At a glance
Section titled “At a glance”| Where in the app | Exchange Online › Mail Security & Hygiene › Mail Filtering Bypasses |
| Workload | Exchange Online |
| Kind | Findings list · dashboard tile |
| Data | Read from Microsoft 365 when someone first opens it, then kept for the report cache lifetime (Settings > Data & cache, 1 hour unless changed). It reads through PowerShell (Exchange Online or SharePoint Online), so the first load takes longer than a Graph report. |
| Licence | Exchange Online Protection (every tenant). Advanced delivery rows need Defender for Office 365 or appear empty. |
| Report id (API and MCP) | exchange.hygiene.filtering-bypasses |
Columns
Section titled “Columns”| Column | Key | Type |
|---|---|---|
| Severity | Severity | Status |
| Bypass type | Category | Text |
| Entry | Subject | Link |
| Check | Setting | Text |
| Value | Value | Text |
| Finding | Finding | Text |
| Detail | Detail | Text |
| Last used | When | Date |
| Count | Number | Number |
A findings list hides columns that no row fills. Severity is Critical, Serious, Warning, OK or Info; rows rated Critical, Serious or Warning need attention (Working with findings).
What it needs
Section titled “What it needs”Licence: Exchange Online Protection (every tenant). Advanced delivery rows need Defender for Office 365 or appear empty.
Application permissions on the IntensiveReports app registration (all permissions):
| Permission | API | What it allows | Note |
|---|---|---|---|
Exchange.ManageAsApp | Office 365 Exchange Online | Manage Exchange As Application | + Security Reader in Exchange for the Tenant Allow/Block List |
Data sources it reads
Get-TenantAllowBlockListItems -Allow (Sender, Url, FileHash)Get-TenantAllowBlockListSpoofItems -Action AllowGet-HostedContentFilterPolicy (AllowedSenders, AllowedSenderDomains)Get-HostedConnectionFilterPolicy (IPAllowList, EnableSafeList)Get-ExoSecOpsOverrideRuleGet-ExoPhishSimOverrideRule
Through the API and MCP
Section titled “Through the API and MCP”GET /ir-api/v1/reports/exchange.hygiene.filtering-bypasses?size=100An AI assistant reads it with the MCP tool get_report and the id exchange.hygiene.filtering-bypasses. The client needs the Read grant for Exchange Online. See Using the API.