Event ID 4000

Event ID 4000: Message Queue Growth - Fix Guide 2025

Complete troubleshooting guide for Exchange Server Event ID 4000 message queue growth alerts. Learn how to diagnose queue backlogs, identify delivery failures, and restore normal mail flow in 15-30 minutes.

Medha Cloud
Medha Cloud Exchange Server Team
Exchange Database Recovery Team13 min read

Table of Contents

Reading Progress
0 of 9

Event ID 4000 alerts you that message queues are growing beyond normal levels. This usually means something is preventing mail delivery - whether to external domains, internal mailboxes, or partner systems. This guide helps you identify the blocked destination and restore normal delivery.

Our Exchange Mail Flow Specialists resolve queue backlog issues daily. This guide provides the same systematic approach we use to clear queues and restore mail flow.

Error Overview: What Event ID 4000 Means

Event ID 4000 is logged when Exchange transport queues accumulate beyond configured thresholds. It's an early warning that mail delivery is falling behind, giving you time to investigate before users notice delays.

Typical Event Log Entry
Log Name:      Application
Source:        MSExchangeTransport
Event ID:      4000
Level:         Warning
Description:   Queue "mail.partner.com" has grown to 2,847 messages.
               This queue has been in retry status for 00:45:00.
               Last retry error: Connection refused by remote server.

Types of Queues in Exchange

Submission QueueMessages waiting to be categorized and routed
Delivery QueuesMessages waiting to deliver to specific destinations
Unreachable QueueMessages to destinations with no route
Poison QueueMessages that crashed the Transport service

Symptoms & Business Impact

What Users Experience:

  • Delayed email delivery (minutes to hours)
  • Emails to specific domains consistently delayed
  • Messages show as "Sent" but not received
  • Eventually, NDRs for expired messages

What Admins See:

  • Event ID 4000 warnings in Application log
  • Queue Viewer shows large message counts
  • Specific queues in "Retry" status
  • LastError field indicates delivery failure reason

Business Impact:

  • Partner Communication: Automated systems fail
  • Customer Response: Delayed replies to customers
  • Time-Sensitive: Meeting invites, approvals delayed

Common Causes of Queue Growth

1. Destination Server Unavailable (40%)

The receiving server is down, rejecting connections, or unreachable due to network issues.

2. DNS Resolution Failure (20%)

Exchange cannot resolve MX/A records for the destination domain.

3. Network/Firewall Issues (15%)

Outbound port 25 blocked, routing issues, or firewall changes preventing delivery.

4. Connector Misconfiguration (12%)

Send connector pointing to wrong smart host, wrong address spaces, or disabled.

5. Recipient Server Rejecting (8%)

Destination server rejecting due to blacklisting, authentication, or policy.

6. Internal Database Issue (5%)

For internal delivery, target database may be dismounted or unreachable.

Quick Diagnosis

📌 Version Compatibility: This guide applies to Exchange 2016, Exchange 2019, Exchange 2022. Commands may differ for other versions.

Step 1: Get Queue Overview
# View all queues with message counts
Get-Queue | Select-Object Identity, Status, MessageCount, NextHopDomain, LastError |
  Sort-Object MessageCount -Descending | Format-Table -AutoSize

# Find queues in Retry status (problems)
Get-Queue | Where-Object {$_.Status -eq "Retry"} |
  Select-Object Identity, MessageCount, LastError
Step 2: Investigate Largest Queue
# Get details on the largest queue
$largestQueue = Get-Queue | Sort-Object MessageCount -Descending | Select-Object -First 1
$largestQueue | Format-List *

# Sample messages in that queue
$largestQueue | Get-Message -ResultSize 20 |
  Select-Object DateReceived, FromAddress, Subject, Status, LastError |
  Format-Table -AutoSize

Pro Tip: The LastError field is crucial - it tells you exactly why delivery is failing. Common values include "Connection refused", "DNS query failed", "Relay access denied", or specific SMTP error codes.

Step 3: Test Connectivity to Destination
# Get the destination from the queue
$destination = "mail.partner.com"  # From queue NextHopDomain

# Test SMTP connectivity
Test-NetConnection -ComputerName $destination -Port 25

# Test DNS resolution
Resolve-DnsName -Name $destination -Type MX
Resolve-DnsName -Name $destination -Type A
Step 4: Check Send Connector
# Verify send connector configuration
Get-SendConnector | Select-Object Name, AddressSpaces, SmartHosts, Enabled, DNSRoutingEnabled |
  Format-List

# Check connector for specific domain routing
$domain = "partner.com"
Get-SendConnector | Where-Object {
  $_.AddressSpaces | ForEach-Object { $_.Address -like "*$domain*" }
}

Quick Fix (10 Minutes)

Fix A: Force Retry Queued Messages

Retry All Queued Messages
# Retry all queues in Retry status
Get-Queue | Where-Object {$_.Status -eq "Retry"} | Retry-Queue

# Retry specific queue
Retry-Queue -Identity "SERVERNAME\partner.com"

# Force immediate connection attempt
Get-Queue | Where-Object {$_.MessageCount -gt 100} | Retry-Queue -Resubmit $true

Fix B: Fix DNS Issues

Resolve DNS Problems
# Configure reliable external DNS
Set-TransportService $env:COMPUTERNAME -ExternalDNSServers 8.8.8.8,1.1.1.1

# Clear DNS cache
Clear-DnsClientCache
ipconfig /flushdns

# Restart Transport to apply
Restart-Service MSExchangeTransport

# Retry queues
Get-Queue | Where-Object {$_.Status -eq "Retry"} | Retry-Queue

Fix C: Redirect to Smart Host

Use Smart Host as Workaround
# If direct delivery failing, route through smart host
# Create or modify send connector
Set-SendConnector "Internet Send Connector" `
  -SmartHosts "smtp-relay.company.com" `
  -DNSRoutingEnabled $false

# Or create domain-specific connector
New-SendConnector -Name "Partner via SmartHost" `
  -AddressSpaces "SMTP:partner.com;1" `
  -SmartHosts "smtp-relay.company.com" `
  -DNSRoutingEnabled $false

Fix D: Clear Spam/Unwanted Messages

Remove Unwanted Messages
# Identify spam in queue
Get-Queue | Get-Message -ResultSize 100 |
  Group-Object FromAddress |
  Sort-Object Count -Descending |
  Select-Object Count, Name

# Remove messages from specific sender (if spam)
# Get-Queue | Get-Message -Filter {FromAddress -like "*spam@*"} |Get-Message -Filter {FromAddress -like "*spam@*"} |
#   Remove-Message -WithNDR $false -Confirm:$false-WithNDR $false -Confirm:$false

# Remove old stuck messages (older than 24 hours)
# Get-Queue | Get-Message |Get-Message |
#   Where-Object {$_.DateReceived -lt (Get-Date).AddHours(-24)} |$_.DateReceived -lt (Get-Date).AddHours(-24)} |
#   Remove-Message -WithNDR $true-WithNDR $true

Detailed Solution

Scenario: Internal Database Delivery Queue

Fix Internal Delivery Issues
# Check if target database is mounted
Get-MailboxDatabase -Status | Select-Object Name, Mounted, Server

# If database is dismounted, mount it
Mount-Database "Mailbox Database 01"

# Check database replication status (DAG)
Get-MailboxDatabaseCopyStatus | Where-Object {$_.Status -ne "Mounted" -and $_.Status -ne "Healthy"}

Scenario: Blacklisted IP

Identify and Resolve Blacklisting
# If LastError mentions "blocked" or "blacklisted""blacklisted"
# Check your IP reputation
# Visit: mxtoolbox.com/blacklists.aspx

# Temporary workaround: Route through different IP
# Configure smart host with clean IP

# Long-term: Request delisting and investigate cause
# Check for compromised accounts sending spam

Verify the Fix

Verification Commands
# 1. Check queue depths decreasing
Get-Queue | Select-Object Identity, MessageCount | Sort-Object MessageCount -Descending

# 2. Verify no queues in Retry status
Get-Queue | Where-Object {$_.Status -eq "Retry"}

# 3. Check message tracking for deliveries
Get-MessageTrackingLog -Start (Get-Date).AddMinutes(-30) -EventId DELIVER |
  Select-Object Timestamp, Recipients | Format-Table

# 4. Send test message to previously affected destination
Send-MailMessage -From "admin@company.com" -To "test@partner.com" `
  -Subject "Queue Test $(Get-Date)" -Body "Testing delivery" -SmtpServer localhost

Prevention

1. Monitor Queue Depths

Queue Monitoring Script
# Schedule to run every 15 minutes
$threshold = 500
$problemQueues = Get-Queue | Where-Object {$_.MessageCount -gt $threshold}

if ($problemQueues) {
    $body = "Queue growth detected:\n"
    $body += ($problemQueues | Select-Object Identity, MessageCount, LastError | Out-String)

    Send-MailMessage -To "admin@company.com" -From "alerts@company.com" `
      -Subject "Exchange Queue Alert" -Body $body `
      -SmtpServer "backup-smtp.company.com"
}

2. Configure Queue Thresholds

  • Set alerts at levels appropriate for your volume
  • Monitor trends rather than absolute numbers
  • Create runbooks for common queue issues

3. Test Delivery Paths

  • Weekly: Test delivery to key partner domains
  • After changes: Verify send connectors work
  • Monitor: Track delivery latency trends

Queues Still Growing? Get Expert Help.

If message queues continue to grow despite these troubleshooting steps, there may be complex routing issues, persistent delivery failures, or infrastructure problems requiring deeper investigation.

Exchange Queue Management Support

Average Response Time: 15 Minutes

Frequently Asked Questions

Event ID 4000 is a transport queue growth alert indicating message queues are growing faster than Exchange can deliver them. This typically means delivery to one or more destinations is failing or delayed, causing messages to accumulate in queues.

Still Stuck? We Can Help

If you're still experiencing Event ID 4000 after following this guide, our Exchange specialists can diagnose and fix the issue quickly.

  • Remote troubleshooting in 95 minutes average
  • No upfront commitment or diagnosis fees
  • Fix-it-right guarantee with documentation
Get Expert Help
95 min
Average Response Time
24/7/365 Availability
Medha Cloud

Medha Cloud Exchange Server Team

Microsoft Exchange Specialists

Our Exchange Server specialists have 15+ years of combined experience managing enterprise email environments. We provide 24/7 support, emergency troubleshooting, and ongoing administration for businesses worldwide.

15+ Years ExperienceMicrosoft Certified99.7% Success Rate24/7 Support