Investigating SenderMailFromAddress in Microsoft Defender XDR.
The email appeared to come from a trusted sender.
The display address looked legitimate.
The domain matched the organisation.
Yet Agent Foskett noticed something unusual.
The address visible to the user was not the same address used during mail delivery.
Behind every email is another sender identity that many defenders overlook.
In Microsoft Defender XDR, SenderMailFromAddress helps investigators identify the SMTP envelope sender used during message delivery, making it valuable for spoofing, phishing and email authentication investigations.
Lesson overview
Learn how to investigate the SMTP envelope sender in EmailEvents and compare it with the sender address shown to users.
Why SenderMailFromAddress matters
The fields used in this lesson
Step 1 — Review SenderMailFromAddress activity
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
EmailEvents
| where Timestamp > ago(30d)
| where isnotempty(SenderMailFromAddress)
| project Timestamp,
SenderFromAddress,
SenderMailFromAddress,
RecipientEmailAddress,
Subject
| order by Timestamp desc
Step 2 — Compare visible and SMTP senders
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
EmailEvents
| where Timestamp > ago(30d)
| where isnotempty(SenderMailFromAddress)
| where SenderFromAddress != SenderMailFromAddress
| project Timestamp,
SenderFromAddress,
SenderMailFromAddress,
Subject
| order by Timestamp desc
Step 3 — Review top SMTP senders
- 1
- 2
- 3
- 4
- 5
- 6
- 7
EmailEvents | where Timestamp > ago(30d) | where isnotempty(SenderMailFromAddress) | summarize MessageCount = count() by SenderMailFromAddress | order by MessageCount desc
Step 4 — Investigate threats by SMTP sender
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
EmailEvents
| where Timestamp > ago(30d)
| where isnotempty(ThreatTypes)
| project Timestamp,
SenderFromAddress,
SenderMailFromAddress,
ThreatTypes,
DeliveryAction,
Subject
| order by Timestamp desc
Step 5 — Investigate authentication issues
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
EmailEvents
| where Timestamp > ago(30d)
| where AuthenticationDetails contains "fail"
| project Timestamp,
SenderFromAddress,
SenderMailFromAddress,
AuthenticationDetails,
Subject
| order by Timestamp desc
Step 6 — Compare sender identity pairs
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
EmailEvents
| where Timestamp > ago(30d)
| summarize MessageCount = count()
by SenderFromAddress,
SenderMailFromAddress
| order by MessageCount desc
