“Email isn’t working” is one of the vaguest tickets you’ll get, and one of the most urgent. It could mean one person isn’t getting mail, the whole company can’t send, or a single important message vanished. The fix depends entirely on which of those it is, so the job is to narrow it down fast before you start changing settings.
Microsoft 365 gives you two tools that answer most of the question in minutes: the Service health dashboard tells you if the platform itself is down, and message trace shows you exactly where a specific message stopped. Start there every time. This guide works through both, then through the usual culprits — DNS, mail flow rules, quarantine, full mailboxes, and connectors — in the order that resolves the most problems fastest.
First: figure out the scope
Before any deep dive, answer one question — how widespread is it? The scope points you straight at the layer to investigate.
Scope the problem in two minutes
- Is it one mailbox, one domain, or everyone in the tenant?
- Sending, receiving, or both?
- Internal mail, external mail, or only mail to/from one outside domain?
- When did it start, and did anything change (DNS, a new rule, a migration)?
- Is there a bounce/non-delivery report (NDR)? Note the error code.
If it’s the whole tenant, look at service health and DNS. If it’s one mailbox, look at quotas, rules, and forwarding. If it’s only mail to or from one external domain, the problem may be on their side or in a connector. That single split saves you from rebuilding a mailbox when the real issue is a tenant-wide DNS change.
Step 1: Check Service health
Before you troubleshoot your own configuration, rule out a Microsoft-side incident. There’s no point rebuilding a connector during an Exchange Online outage.
- Sign in to the Microsoft 365 admin center (
admin.microsoft.com). - Go to Health → Service health.
- Look for active incidents or advisories affecting Exchange Online or Email and calendar.
If there’s an active incident that matches your symptoms, the fix is to wait and monitor — note the incident ID for your records and let users know. If service health is clean, the problem is in your tenant, your DNS, or the recipient’s side, and you move on to message trace.
Step 2: Run a message trace
Message trace is the single most useful tool for delivery problems. It follows a specific message through Exchange Online and tells you its fate.
- In the Exchange admin center (
admin.exchange.microsoft.com), go to Mail flow → Message trace. - Enter the sender, recipient, and a time range that covers the missing message.
- Run the trace and read the status column.
The status tells you where to look next:
What each message trace status means
| Delivered | Mail reached the mailbox. Look at inbox rules, client filters, or the wrong folder. |
|---|---|
| Pending | Still trying to deliver — often greylisting, a connector retry, or a DNS issue at the target. |
| Failed | Rejected. Open the detail for the reason (bad recipient, quota, policy, auth). |
| Quarantined | Held by anti-spam/anti-malware. Check the quarantine to review or release. |
| Filtered as spam | Routed to junk or blocked by spam policy. Review the spam/phishing policies. |
| Resolved / Expanded | Recipient was a group or alias — trace the final recipient address instead. |
A “Delivered” status is one of the most useful results because it tells you the email reached the mailbox and the problem is on the client or rule side, not in mail flow. That redirects your whole investigation.
Step 3: Check MX, SPF, and DNS
When the whole domain can’t receive mail, or outbound mail is being rejected by recipients, DNS is the prime suspect. Three records do the heavy lifting.
Core mail DNS records for Microsoft 365
| MX | yourdomain-com.mail.protection.outlook.com (priority 0) |
|---|---|
| SPF (TXT) | v=spf1 include:spf.protection.outlook.com -all |
| Autodiscover (CNAME) | autodiscover.outlook.com |
| DKIM (CNAME x2) | selector1/selector2 records from your tenant |
Confirm what your DNS is actually publishing rather than what you think it is:
# MX — where inbound mail is delivered
Resolve-DnsName yourdomain.com -Type MX
# SPF and other TXT records
Resolve-DnsName yourdomain.com -Type TXT
# Autodiscover
Resolve-DnsName autodiscover.yourdomain.com -Type CNAME
If the MX record doesn’t point at the Microsoft 365 endpoint
(yourdomain-com.mail.protection.outlook.com), inbound mail goes somewhere else — a leftover
on-premises server, an old filtering service, or nowhere. This is the classic symptom right after
a migration when DNS wasn’t fully updated.
If you’ve recently moved to the cloud, DNS gaps are common — the cutover migration guide covers the exact MX, SPF, and autodiscover changes that need to be in place after a switch.
Step 4: Review mail flow rules
Mail flow rules (transport rules) can quietly block, redirect, or delete messages exactly as configured. If a message trace shows a message was acted on by a rule, this is where to look.
- In the Exchange admin center, go to Mail flow → Rules.
- Review each enabled rule, especially ones that reject, redirect, delete, or block based on sender, recipient, subject, or attachment.
- Disable or correct any rule that’s catching mail it shouldn’t.
Step 5: Check quarantine
Anti-spam, anti-phishing, and anti-malware policies can hold messages in quarantine. If message trace shows Quarantined or Filtered as spam, this is your stop.
- Go to the Microsoft Defender portal (
security.microsoft.com). - Open Email & collaboration → Review → Quarantine.
- Filter by recipient or sender, review the held messages, and release legitimate ones.
- If a sender is repeatedly caught, adjust the relevant anti-spam or anti-phishing policy rather than releasing message by message.
Be careful loosening spam policies to “fix” delivery. Releasing a genuinely malicious message or over-allowing a domain trades a delivery complaint for a security risk. Release what’s clearly legitimate and tune policies deliberately.
Step 6: Mailbox full or restricted
When it’s one user not receiving, check the mailbox itself.
Connect-ExchangeOnline
# Current size and quota status for the mailbox
Get-MailboxStatistics -Identity [email protected] |
Select-Object DisplayName, TotalItemSize, StorageLimitStatus
# Quota settings on the mailbox
Get-Mailbox -Identity [email protected] |
Select-Object ProhibitSendReceiveQuota, IssueWarningQuota
If the mailbox is over quota, Exchange Online stops accepting new mail and senders get an NDR. Free up space, raise the quota if the plan allows, or enable an archive. A user who can receive but not send may have hit a sending limit or been restricted for suspected spam — check the restricted users list in the Defender portal and the mailbox’s send status.
Step 7: Connector issues
Connectors control mail flow between Exchange Online and external systems — an on-premises server, a third-party filtering service, or a partner organization. A misconfigured connector can break a specific mail path while everything else works.
- In the Exchange admin center, go to Mail flow → Connectors.
- Review inbound and outbound connectors. Check the smart host, the certificate or domain restrictions, and whether the connector is even still needed.
- Use the connector’s validation option to send a test message through it.
Connectors are the usual cause when mail to or from one specific external domain or system fails while general internet mail is fine. A stale connector left over from a migration or an old filtering vendor is a frequent offender — if the service it pointed at is gone, the connector may be sending mail into a black hole.
The fast path under pressure
When mail is down and people are waiting, run this order:
- Service health — rule out a Microsoft outage.
- Message trace the affected message — read the status.
- Scope it — one user, one domain, or everyone.
- DNS (MX/SPF) for tenant-wide or outbound rejection issues.
- Mail flow rules if the trace shows a rule acted on the message.
- Quarantine if the trace says Quarantined or Filtered.
- Mailbox quota / restrictions for single-user receive or send failures.
- Connectors if it’s isolated to one external system or domain.
Most problems resolve by step 2 or 3 — the trace status almost always tells you which later step to jump to.
Wrapping up
When Microsoft 365 mail stops, resist the urge to start changing settings. Scope the problem first, check service health, and run a message trace — those three steps turn a vague “email is broken” into a specific, fixable cause. From there the path is clear: DNS for tenant-wide issues, rules and quarantine for filtered mail, quotas and forwarding for single mailboxes, and connectors for one-off external paths.
Keep the message trace habit. It’s the difference between guessing and knowing, and it’s the one tool that tells you whether a message ever reached the mailbox at all.