Abnormal Security Message Analysis
Overview
Abnormal Security provides deep message analysis capabilities beyond basic threat detection. This skill covers message retrieval, header inspection, attachment analysis, sender authentication results, and delivery context. Use it when performing forensic analysis of specific emails or investigating delivery patterns.
Anti-triggers
- Where a message went, or why it never arrived — Abnormal sees
messages only as evidence attached to a detected threat. It has no
delivery pipeline, no queue, and no bounce record, so "trace this
email" questions belong to the gateway: use
Mimecast Message Tracking.
- Removing the message from inboxes, or putting it back — that is
the remediation surface; use
Abnormal Security Threats.
- Inspecting a message a gateway is holding — everything Abnormal
can show was already delivered. Pre-delivery holds are
SpamTitan Quarantine or Proofpoint Quarantine.
Message Field Reference
These are response fields describing what Abnormal reports about a
message. They are not tool parameters — the only parameters the message
tools accept are threatId and messageId. Availability varies by
message and by tenant configuration; treat any single field as
best-effort.
Core Message Fields
| Field |
Type |
Description |
abxMessageId |
string |
Abnormal's identifier for the message, as returned in the abnormal_messages_list response |
subject |
string |
Email subject line |
fromAddress |
string |
From header email address |
fromName |
string |
From header display name |
toAddresses |
string[] |
All To: recipients |
ccAddresses |
string[] |
All CC: recipients |
bccAddresses |
string[] |
All BCC: recipients (if available) |
sentTime |
datetime |
When the email was sent |
receivedTime |
datetime |
When the email was received by Abnormal |
internetMessageId |
string |
RFC 5322 Message-ID header |
Sender Analysis Fields
| Field |
Type |
Description |
senderAddress |
string |
Envelope sender address |
senderName |
string |
Sender display name |
senderDomain |
string |
Sender domain |
senderIpAddress |
string |
Originating IP address |
returnPath |
string |
Return-Path header (envelope sender) |
replyToEmails |
string[] |
Reply-To header addresses |
Authentication Fields
| Field |
Type |
Description |
spfResult |
string |
SPF check result: pass, fail, softfail, neutral, none |
dkimResult |
string |
DKIM signature result: pass, fail, none |
dmarcResult |
string |
DMARC policy result: pass, fail, none |
authenticationResults |
string |
Full Authentication-Results header |
Attachment Fields
| Field |
Type |
Description |
attachmentCount |
int |
Number of attachments |
attachmentNames |
string[] |
Filenames of attachments |
attachmentTypes |
string[] |
MIME types of attachments |
attachmentSizes |
int[] |
Sizes of attachments in bytes |
URL Fields
| Field |
Type |
Description |
urls |
string[] |
All URLs found in message body |
urlCount |
int |
Total number of URLs |
Delivery Context
| Field |
Type |
Description |
isRead |
boolean |
Whether the recipient has read the email |
isInternal |
boolean |
Whether the email is internal (within org) |
isExternal |
boolean |
Whether the email is from outside the org |
remediationStatus |
string |
Current remediation status |
MCP Tools
Two tools, and both are scoped to a single threat. There is no separate
headers tool and no tenant-wide message search — you cannot ask "show me
every message from this sender". Every message lookup starts from a
threatId.
| Tool |
Description |
Parameters |
abnormal_messages_list |
List the messages inside one threat case. Returns message IDs and summary data. |
threatId (required) |
abnormal_messages_get |
Full analysis of one message: metadata, headers, URLs, attachments, and AI threat analysis — all in a single payload. |
threatId (required), messageId (required) |
Headers arrive inline, not from a separate call
abnormal_messages_get returns the header set as part of its one
response, alongside URLs, attachments and the AI analysis. Everything the
Header Analysis Workflow below asks for comes out of that single call —
there is no second, header-only fetch to make, and nothing to page
through. The practical consequence is on the other side: one
abnormal_messages_get pulls the entire substance of a customer's email
into context, including recipient addresses and Authentication-Results,
whether or not you needed the headers. Call it when you intend to do
forensics on that message, not to browse.
ID vocabulary
threatId is a UUID string. messageId is the message identifier
from the abnormal_messages_list response (URL-encoded when sent). Do
not confuse either with caseId, which abnormal_cases_get takes as a
number.
Tool Usage Examples
List messages associated with a threat:
{
"tool": "abnormal_messages_list",
"parameters": {
"threatId": "184def76-3c28-4e1b-9ef0-a5abc123def4"
}
}
Get one message in full (metadata, headers, URLs, attachments):
{
"tool": "abnormal_messages_get",
"parameters": {
"threatId": "184def76-3c28-4e1b-9ef0-a5abc123def4",
"messageId": "<CA+8mv1x@mail.example.com>"
}
}
Message Analysis Workflows
Header Analysis Workflow
- Retrieve the message -
abnormal_messages_get returns the headers
inline; there is no separate header call
- Check authentication:
- SPF: Does the sending IP match the domain's SPF record?
- DKIM: Is the DKIM signature valid and aligned?
- DMARC: Does the message pass DMARC policy?
- Trace routing:
- Follow Received headers from bottom to top
- Identify mail servers and relay hops
- Check for unusual routing or delays
- Inspect key headers:
- From vs Return-Path mismatch (potential spoofing)
- Reply-To vs From mismatch (redirect replies)
- X-Mailer or User-Agent (sending client)
- Content-Type and encoding
Attachment Analysis Workflow
- List attachments - Review filenames, types, and sizes
- Check for suspicious patterns:
- Double extensions (e.g.,
invoice.pdf.exe)
- Macro-enabled Office files (
.docm, .xlsm)
- Archive files (
.zip, .rar, .7z) containing executables
- Unusual MIME types
- Cross-reference with threat data:
- Check if the attachment hash matches known malware
- Review sandbox analysis results if available
- Assess risk:
- Was the attachment opened by the recipient?
- How many users received the same attachment?
Sender Reputation Workflow
- Check sender identity:
- Is this a first-time sender to this recipient?
- Does the display name match the email address?
- Is the domain recently registered?
- Verify authentication:
- SPF, DKIM, DMARC all passing?
- Are there any authentication failures?
- Check sender IP:
- Is the IP on any blocklists?
- Does it match the expected mail server for the domain?
- Review communication history:
- Has this sender contacted the organization before?
- Is the communication pattern normal?
Authentication Results Reference
SPF Results
| Result |
Meaning |
Risk |
pass |
Sending IP authorized by domain |
Low |
softfail |
IP not authorized but not explicitly denied |
Medium |
fail |
IP explicitly not authorized |
High |
neutral |
No SPF assertion |
Medium |
none |
No SPF record exists |
Medium |
DKIM Results
| Result |
Meaning |
Risk |
pass |
Valid DKIM signature, aligned |
Low |
fail |
DKIM signature invalid |
High |
none |
No DKIM signature present |
Medium |
DMARC Results
| Result |
Meaning |
Risk |
pass |
Passes DMARC policy (SPF or DKIM aligned) |
Low |
fail |
Fails DMARC policy |
High |
none |
No DMARC record exists |
Medium |
Error Handling
Common API Errors
| Code |
Message |
Resolution |
| 400 |
Invalid message ID |
Use a messageId taken from abnormal_messages_list, not a hand-built one |
| 401 |
Unauthorized |
Check API token |
| 404 |
Message not found |
Message may have been purged or threat ID is wrong |
| 429 |
Rate limited |
Wait and retry |
Best Practices
- Always check authentication - SPF/DKIM/DMARC failures are strong spoofing indicators
- Compare From and Return-Path - Mismatches often indicate spoofing or forwarding
- Review Reply-To - Reply-To different from From is a common BEC indicator
- Check attachment types carefully - Not all dangerous files have obvious extensions
- Trace Received headers - Follow the email routing path for anomalies
- Check if email was read - Read emails with credential phishing need password resets
- Cross-reference with threats - Message context enriches threat investigations
Related Skills
1---2name: abnormal-security-messages3description: Abnormal Security message analysis: message retrieval, email header inspection, attachments, sender reputation, delivery context, and SPF/DKIM/DMARC authentication results.4---56# Abnormal Security Message Analysis78## Overview910Abnormal Security provides deep message analysis capabilities beyond basic threat detection. This skill covers message retrieval, header inspection, attachment analysis, sender authentication results, and delivery context. Use it when performing forensic analysis of specific emails or investigating delivery patterns.1112## Anti-triggers1314- **Where a message went, or why it never arrived** — Abnormal sees15 messages only as evidence attached to a detected threat. It has no16 delivery pipeline, no queue, and no bounce record, so "trace this17 email" questions belong to the gateway: use18 `Mimecast Message Tracking`.19- **Removing the message from inboxes, or putting it back** — that is20 the remediation surface; use `Abnormal Security Threats`.21- **Inspecting a message a gateway is holding** — everything Abnormal22 can show was already delivered. Pre-delivery holds are23 `SpamTitan Quarantine` or `Proofpoint Quarantine`.2425## Message Field Reference2627These are **response** fields describing what Abnormal reports about a28message. They are not tool parameters — the only parameters the message29tools accept are `threatId` and `messageId`. Availability varies by30message and by tenant configuration; treat any single field as31best-effort.3233### Core Message Fields3435| Field | Type | Description |36|-------|------|-------------|37| `abxMessageId` | string | Abnormal's identifier for the message, as returned in the `abnormal_messages_list` response |38| `subject` | string | Email subject line |39| `fromAddress` | string | From header email address |40| `fromName` | string | From header display name |41| `toAddresses` | string[] | All To: recipients |42| `ccAddresses` | string[] | All CC: recipients |43| `bccAddresses` | string[] | All BCC: recipients (if available) |44| `sentTime` | datetime | When the email was sent |45| `receivedTime` | datetime | When the email was received by Abnormal |46| `internetMessageId` | string | RFC 5322 Message-ID header |4748### Sender Analysis Fields4950| Field | Type | Description |51|-------|------|-------------|52| `senderAddress` | string | Envelope sender address |53| `senderName` | string | Sender display name |54| `senderDomain` | string | Sender domain |55| `senderIpAddress` | string | Originating IP address |56| `returnPath` | string | Return-Path header (envelope sender) |57| `replyToEmails` | string[] | Reply-To header addresses |5859### Authentication Fields6061| Field | Type | Description |62|-------|------|-------------|63| `spfResult` | string | SPF check result: pass, fail, softfail, neutral, none |64| `dkimResult` | string | DKIM signature result: pass, fail, none |65| `dmarcResult` | string | DMARC policy result: pass, fail, none |66| `authenticationResults` | string | Full Authentication-Results header |6768### Attachment Fields6970| Field | Type | Description |71|-------|------|-------------|72| `attachmentCount` | int | Number of attachments |73| `attachmentNames` | string[] | Filenames of attachments |74| `attachmentTypes` | string[] | MIME types of attachments |75| `attachmentSizes` | int[] | Sizes of attachments in bytes |7677### URL Fields7879| Field | Type | Description |80|-------|------|-------------|81| `urls` | string[] | All URLs found in message body |82| `urlCount` | int | Total number of URLs |8384### Delivery Context8586| Field | Type | Description |87|-------|------|-------------|88| `isRead` | boolean | Whether the recipient has read the email |89| `isInternal` | boolean | Whether the email is internal (within org) |90| `isExternal` | boolean | Whether the email is from outside the org |91| `remediationStatus` | string | Current remediation status |9293## MCP Tools9495Two tools, and both are scoped to a single threat. There is no separate96headers tool and no tenant-wide message search — you cannot ask "show me97every message from this sender". Every message lookup starts from a98`threatId`.99100| Tool | Description | Parameters |101|------|-------------|------------|102| `abnormal_messages_list` | List the messages inside one threat case. Returns message IDs and summary data. | `threatId` (required) |103| `abnormal_messages_get` | Full analysis of one message: metadata, headers, URLs, attachments, and AI threat analysis — all in a single payload. | `threatId` (required), `messageId` (required) |104105### Headers arrive inline, not from a separate call106107`abnormal_messages_get` returns the header set as part of its one108response, alongside URLs, attachments and the AI analysis. Everything the109*Header Analysis Workflow* below asks for comes out of that single call —110there is no second, header-only fetch to make, and nothing to page111through. The practical consequence is on the other side: one112`abnormal_messages_get` pulls the entire substance of a customer's email113into context, including recipient addresses and `Authentication-Results`,114whether or not you needed the headers. Call it when you intend to do115forensics on that message, not to browse.116117### ID vocabulary118119`threatId` is a **UUID string**. `messageId` is the message identifier120from the `abnormal_messages_list` response (URL-encoded when sent). Do121not confuse either with `caseId`, which `abnormal_cases_get` takes as a122**number**.123124### Tool Usage Examples125126**List messages associated with a threat:**127```json128{129 "tool": "abnormal_messages_list",130 "parameters": {131 "threatId": "184def76-3c28-4e1b-9ef0-a5abc123def4"132 }133}134```135136**Get one message in full (metadata, headers, URLs, attachments):**137```json138{139 "tool": "abnormal_messages_get",140 "parameters": {141 "threatId": "184def76-3c28-4e1b-9ef0-a5abc123def4",142 "messageId": "<CA+8mv1x@mail.example.com>"143 }144}145```146147## Message Analysis Workflows148149### Header Analysis Workflow1501511. **Retrieve the message** - `abnormal_messages_get` returns the headers152 inline; there is no separate header call1532. **Check authentication:**154 - SPF: Does the sending IP match the domain's SPF record?155 - DKIM: Is the DKIM signature valid and aligned?156 - DMARC: Does the message pass DMARC policy?1573. **Trace routing:**158 - Follow Received headers from bottom to top159 - Identify mail servers and relay hops160 - Check for unusual routing or delays1614. **Inspect key headers:**162 - From vs Return-Path mismatch (potential spoofing)163 - Reply-To vs From mismatch (redirect replies)164 - X-Mailer or User-Agent (sending client)165 - Content-Type and encoding166167### Attachment Analysis Workflow1681691. **List attachments** - Review filenames, types, and sizes1702. **Check for suspicious patterns:**171 - Double extensions (e.g., `invoice.pdf.exe`)172 - Macro-enabled Office files (`.docm`, `.xlsm`)173 - Archive files (`.zip`, `.rar`, `.7z`) containing executables174 - Unusual MIME types1753. **Cross-reference with threat data:**176 - Check if the attachment hash matches known malware177 - Review sandbox analysis results if available1784. **Assess risk:**179 - Was the attachment opened by the recipient?180 - How many users received the same attachment?181182### Sender Reputation Workflow1831841. **Check sender identity:**185 - Is this a first-time sender to this recipient?186 - Does the display name match the email address?187 - Is the domain recently registered?1882. **Verify authentication:**189 - SPF, DKIM, DMARC all passing?190 - Are there any authentication failures?1913. **Check sender IP:**192 - Is the IP on any blocklists?193 - Does it match the expected mail server for the domain?1944. **Review communication history:**195 - Has this sender contacted the organization before?196 - Is the communication pattern normal?197198## Authentication Results Reference199200### SPF Results201202| Result | Meaning | Risk |203|--------|---------|------|204| `pass` | Sending IP authorized by domain | Low |205| `softfail` | IP not authorized but not explicitly denied | Medium |206| `fail` | IP explicitly not authorized | High |207| `neutral` | No SPF assertion | Medium |208| `none` | No SPF record exists | Medium |209210### DKIM Results211212| Result | Meaning | Risk |213|--------|---------|------|214| `pass` | Valid DKIM signature, aligned | Low |215| `fail` | DKIM signature invalid | High |216| `none` | No DKIM signature present | Medium |217218### DMARC Results219220| Result | Meaning | Risk |221|--------|---------|------|222| `pass` | Passes DMARC policy (SPF or DKIM aligned) | Low |223| `fail` | Fails DMARC policy | High |224| `none` | No DMARC record exists | Medium |225226## Error Handling227228### Common API Errors229230| Code | Message | Resolution |231|------|---------|------------|232| 400 | Invalid message ID | Use a `messageId` taken from `abnormal_messages_list`, not a hand-built one |233| 401 | Unauthorized | Check API token |234| 404 | Message not found | Message may have been purged or threat ID is wrong |235| 429 | Rate limited | Wait and retry |236237## Best Practices2382391. **Always check authentication** - SPF/DKIM/DMARC failures are strong spoofing indicators2402. **Compare From and Return-Path** - Mismatches often indicate spoofing or forwarding2413. **Review Reply-To** - Reply-To different from From is a common BEC indicator2424. **Check attachment types carefully** - Not all dangerous files have obvious extensions2435. **Trace Received headers** - Follow the email routing path for anomalies2446. **Check if email was read** - Read emails with credential phishing need password resets2457. **Cross-reference with threats** - Message context enriches threat investigations246247## Related Skills248249- [Abnormal Threats](../threats/SKILL.md) - Threat detection and analysis250- [Abnormal Cases](../cases/SKILL.md) - Abuse mailbox case management251- [Abnormal API Patterns](../api-patterns/SKILL.md) - API authentication and usage