SecureOps Playbooks logoSecureOps Playbooks

Exchange / Read-only

Find External Mailbox Forwarding in Exchange Online

Find mailbox forwarding that could send mail outside the organization and prepare a reviewable export.

Risk: HighExample playbookRead-onlyValidation pending

Practical intro

External forwarding is not automatically bad. It can support a real workflow, reflect an old process, or point to something that needs a deeper look. The point of this check is to make forwarding visible so it can be reviewed.

Why I check this

In real tenant reviews, it is common to find settings that made sense at one point but were never revisited. Forwarding is worth checking because it can affect where business mail goes and who can see it.

What this check tells you

This example reads mailbox-level forwarding fields from Exchange Online and exports mailboxes where forwarding appears to be configured. It is useful as a first mailbox configuration review because it gives you a concrete list of mailboxes with forwarding values to explain.

What this helps you decide

This helps you decide which mailbox forwarding entries need an owner, a reason, and a closer look before mail flow or security changes. For an everyday admin, the useful question is bigger than whether forwarding exists. You need to know why this mailbox sends copies somewhere else and whether that path is still expected.

What this does not prove

This check does not prove that forwarding is malicious or incorrect. It does not detect inbox rules, mail flow rules, third-party app access, OAuth consent abuse, connectors, journaling, or every downstream routing path. External forwarding can be legitimate, forgotten, or suspicious depending on context.

When I would run this

Permissions and modules

Use an account with approved read access to mailbox configuration. The example uses the Exchange Online PowerShell module. Microsoft recommends the Exchange Online PowerShell module for modern Exchange Online scenarios, and Get-EXOMailbox can return explicitly requested properties.

Read-only PowerShell example

This example reads mailbox objects, filters for forwarding-related fields, and exports a CSV for review. It does not change mailbox settings. The example uses Get-EXOMailbox with the forwarding properties requested explicitly.

# SecureOps Playbooks | secureopsplaybooks.com
# Read-only example: external mailbox forwarding review. Validate in a lab first.

Connect-ExchangeOnline

$forwardingProperties = @(
  "DisplayName",
  "UserPrincipalName",
  "PrimarySmtpAddress",
  "ForwardingSmtpAddress",
  "ForwardingAddress",
  "DeliverToMailboxAndForward"
)

$mailboxes = Get-EXOMailbox -ResultSize Unlimited -Properties $forwardingProperties

$forwardingReview = $mailboxes |
  Where-Object {
    $_.ForwardingSmtpAddress -or
    $_.ForwardingAddress -or
    $_.DeliverToMailboxAndForward
  } |
  Select-Object DisplayName,
    UserPrincipalName,
    PrimarySmtpAddress,
    ForwardingSmtpAddress,
    ForwardingAddress,
    DeliverToMailboxAndForward

$forwardingReview |
  Sort-Object UserPrincipalName |
  Export-Csv ".\mailbox-forwarding-review.csv" -NoTypeInformation

Expected output columns

How to read the results

Review external addresses first, then confirm whether the forwarding is expected. Finding this value does not automatically mean the setting is malicious or incorrect. It means the setting should be reviewed in context.

Common findings

False positives or normal explanations

A mailbox may forward to a ticketing system, a shared service address, or an approved operational mailbox. Do not assume intent from the field alone.

What to verify before action

Troubleshooting

Limitations

This checks mailbox-level forwarding properties only. It does not inspect inbox rule forwarding, mail flow rules, third-party app access, OAuth consent abuse, connectors, journaling, third-party routing, or downstream systems. Those are separate follow-up checks, and this export should not be treated as a complete forwarding investigation.

Sources and documentation to review

Validation status

This is an example read-only playbook. Review the Microsoft documentation, permissions, and output in a test or lab environment before using it as part of a production change process.

Related playbooks

Use this in the Quick-Check Pack

The Quick-Check Pack is meant to help admins slow down, collect the basics, and avoid making decisions from memory.

Get the Quick-Check Pack