Skip to content

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.

Where in the appExchange Online › Mail Security & Hygiene › Mail Filtering Bypasses
WorkloadExchange Online
KindFindings list · dashboard tile
DataRead 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.
LicenceExchange Online Protection (every tenant). Advanced delivery rows need Defender for Office 365 or appear empty.
Report id (API and MCP)exchange.hygiene.filtering-bypasses
ColumnKeyType
SeveritySeverityStatus
Bypass typeCategoryText
EntrySubjectLink
CheckSettingText
ValueValueText
FindingFindingText
DetailDetailText
Last usedWhenDate
CountNumberNumber

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).

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):

PermissionAPIWhat it allowsNote
Exchange.ManageAsAppOffice 365 Exchange OnlineManage 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 Allow
  • Get-HostedContentFilterPolicy (AllowedSenders, AllowedSenderDomains)
  • Get-HostedConnectionFilterPolicy (IPAllowList, EnableSafeList)
  • Get-ExoSecOpsOverrideRule
  • Get-ExoPhishSimOverrideRule
GET /ir-api/v1/reports/exchange.hygiene.filtering-bypasses?size=100

An 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.