✅ Issue Resolved?
Implement our prevention checklist to avoid recurrence. Set up monitoring alerts and daily health checks.
Review Prevention StepsSystematic diagnosis for scenarios where inbound and/or outbound mail has stopped flowing completely. Includes decision tree, root cause patterns, and safe remediation.
Last Updated: January 9, 2026 | Author: Amelia R. Patel, Principal Security Engineer
Diagnosis time: 25–35 minutes. This guide prevents extended outages through systematic root-cause identification.
Stuck at any step? Request Exchange Security Assessment with principal engineers for guided troubleshooting.
Mail is not being delivered. This includes:
If mail is still flowing for some users/domains, see Delayed Email or Partial Delivery guides instead.
These specific error codes indicate mail flow failures. Use these to narrow your diagnosis:
550 5.1.1 Recipient rejected
550 5.2.1 Mailbox disabled
421 4.4.0 Connection refused (EOP timeout)
550 5.7.1 TLS required
451 4.7.0 Temporary server error
5.2.2 Outbound traffic restricted
421 4.4.2 Connection dropped
550 5.1.1 Destination not found
451 4.4.0 Connection timeout (to external server)
Mail flow failures typically fall into these 8 categories. Use this to guide your diagnostic approach:
nslookupIn Exchange admin center → Mail flow → Message trace:
Decision: If 0 messages in trace → go to Step 2. If messages exist with failed status → go to Step 3.
In Exchange admin center → Mail flow → Connectors:
Decision: If connector is red/disabled → restart or reconfigure (see Rollback section). If green → go to Step 4.
In Exchange admin center → Mail flow → Connectors:
Decision: If outbound connector is red → restart on-premises mail server and refresh (see Rollback). If green → go to Step 4.
From hybrid server (if on-premises), run:
telnet outlook.office365.com 25
Expected result: Connection successful, 220 response from EOP
Check inbound DNS:
nslookup -type=MX yourdomain.com
Expected: MX record pointing to yourdomain-com.mail.protection.outlook.com
Decision: If telnet fails → firewall/connectivity issue. If DNS wrong → correct MX records immediately. If both OK → go to Step 5.
In Exchange admin center → Mail flow → Rules:
Decision: If rule is blocking → adjust conditions or disable rule. If no broad blocks → go to Step 6.
In Exchange admin center → Recipients → Mailboxes:
Get-Mailbox -Identity user@domain | Select-Object RecipientTypeDetails, ExternalEmailAddressDecision: If mailbox not licensed or not provisioned → assign license and sync (see Rollback). If provisioned → go to Step 7.
If using hybrid setup:
Get-MsolDirSyncStatus
Expected: LastSyncSuccess within last hour
Force sync:
Start-ADSyncSyncCycle -PolicyType Delta
Decision: If sync stuck → restart AAD Connect service. If sync OK → escalate to Microsoft (go to Escalation Criteria section).
| Root Cause | Evidence | Fix |
|---|---|---|
| Connector offline | Red status in connectors list, no messages in trace | Restart mail server, refresh connector |
| Network/firewall block | Telnet to EOP fails, but connector shows green | Check firewall rules, verify TCP 25/587 open |
| Wrong MX records | nslookup shows MX not pointing to protection.outlook.com | Update DNS MX records immediately |
| Transport rule rejecting all | Rule with broad conditions (no filtering) and reject action | Disable rule or add condition to exempt senders |
| Mailbox not licensed/provisioned | User mailbox shows no license or RecipientTypeDetails is wrong | Assign Exchange license and run directory sync |
| Directory sync stopped | LastSyncSuccess is hours old, AAD Connect shows errors | Restart AAD Connect, check event logs, force delta sync |
Restart-Service MSExchangeTransport
Import-Module ADSync
Start-ADSyncSyncCycle -PolicyType Delta
nslookup -type=MX yourdomain.com
yourdomain-com.mail.protection.outlook.com, log into DNS registraryourdomain-com.mail.protection.outlook.com with priority 10Escalate if:
What to include in Microsoft ticket:
Proactive monitoring catches connector failures, DNS drift, and throttling before complete mail flow stoppage:
Get-InboundConnector | Test-InboundConnector daily via scheduled task (alert on failures)nslookup -type=mx yourdomain.com (catch unauthorized changes)Get-InboundConnector | Export-Clixml# Run every 15 minutes via scheduled task
$Last15Min = (Get-Date).AddMinutes(-15)
$Trace = Get-MessageTrace -StartDate $Last15Min -EndDate (Get-Date)
if ($Trace.Count -eq 0) {
Send-MailMessage -To "soc@company.com" -Subject "ALERT: Zero mail flow detected" -Body "No messages in last 15 min"
}
Alert threshold: Zero messages in 15-minute window = P1 incident (immediate investigation).
Implement our prevention checklist to avoid recurrence. Set up monitoring alerts and daily health checks.
Review Prevention StepsRequest an assessment-first review with principal engineers. We'll identify root cause and provide a safe remediation roadmap.
Request Exchange Security AssessmentSimilar problems you might face:
💡 Pro Tip: Bookmark this guide for future incidents
Run a 24h message trace with no filters. If it shows 0 messages accepted, rejected, or queued, mail has been blocked for the entire window.
Restart the transport service on the hybrid server, refresh the connector, and send a test email. See the Safe Rollback section above.
Ensure MX points to yourdomain-com.mail.protection.outlook.com with correct priority. Validate with nslookup -type=MX yourdomain.com before changes.
If connectors are green, DNS and firewall are verified, but EOP shows no accepted messages after all diagnostics, escalate with trace evidence.