Investigating DeliveryAction in Microsoft Defender XDR.
The email existed.
The sender was recorded.
The delivery location was known.
But the most important question was still waiting.
What did Microsoft 365 actually do with the message?
In Microsoft Defender XDR, DeliveryAction helps defenders understand whether an email was delivered, blocked, quarantined, redirected, junked or handled by another mail flow decision.
Lesson overview
Learn how to investigate the action Microsoft 365 applied to an email message and connect that decision to delivery, threat and user exposure evidence.
Why DeliveryAction matters
The fields used in this lesson
Step 1 — Review recent delivery actions
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
EmailEvents | where Timestamp > ago(30d) | project Timestamp, SenderFromAddress, RecipientEmailAddress, Subject, DeliveryAction, DeliveryLocation | order by Timestamp desc
Step 2 — Summarise delivery actions
- 1
- 2
- 3
- 4
- 5
- 6
EmailEvents | where Timestamp > ago(30d) | summarize MessageCount = count() by DeliveryAction | order by MessageCount desc
Step 3 — Find blocked messages
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
EmailEvents | where Timestamp > ago(30d) | where DeliveryAction has "Blocked" | project Timestamp, SenderFromAddress, RecipientEmailAddress, Subject, DeliveryAction, ThreatTypes | order by Timestamp desc
Step 4 — Investigate quarantined messages
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
EmailEvents | where Timestamp > ago(30d) | where DeliveryAction has "Quarantine" | project Timestamp, SenderFromAddress, RecipientEmailAddress, Subject, DeliveryAction, DeliveryLocation, ThreatTypes, DetectionMethods | order by Timestamp desc
Step 5 — Find suspicious messages that were delivered
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
EmailEvents | where Timestamp > ago(30d) | where DeliveryAction =~ "Delivered" | where isnotempty(ThreatTypes) | project Timestamp, SenderFromAddress, RecipientEmailAddress, Subject, ThreatTypes, DetectionMethods, DeliveryLocation, NetworkMessageId | order by Timestamp desc
Step 6 — Compare action, location and direction
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
EmailEvents | where Timestamp > ago(30d) | summarize MessageCount = count() by EmailDirection, DeliveryAction, DeliveryLocation, ThreatTypes | order by MessageCount desc
