Exchange Server 排錯先看服務與 health set,再看 queue 的 NextHopDomain/LastError、database copy、磁碟與憑證。不要看到 queue 變多就先 restart Transport。
Server 與 Health Set
列出 Exchange ServerExchange Management Shell
Get-ExchangeServer | Format-Table Name,ServerRole,Edition,AdminDisplayVersion,Site先確認版本、角色與 AD site。
檢查必要服務Exchange Management Shell
Test-ServiceHealth服務停止要先找原因,別一律全部啟動。
查看不健康 MonitorExchange Management Shell
Get-ServerHealth -Identity EX01 | Where-Object AlertValue -ne 'Healthy' | Format-Table HealthSetName,Name,AlertValue,LastTransitionTimeManaged Availability 可能已在嘗試復原,先看事件。
查看 Health Set 摘要Exchange Management Shell
Get-HealthReport -Identity EX01找出 Unhealthy 或 Degraded 的 health set。
查看 Exchange 服務PowerShell
Get-Service MSExchange* | Sort-Object Status,Name | Format-Table Status,Name,StartType不同角色不是每個服務都應 Running。
查看磁碟空間PowerShell
Get-Volume | Where-Object DriveLetter | Sort-Object SizeRemaining | Format-Table DriveLetter,FileSystemLabel,SizeRemaining,SizeQueue、database、log 與 transport 都會受磁碟空間影響。
Queue 與 Mail Flow
查看 QueueExchange Management Shell
Get-Queue | Sort-Object MessageCount -Descending | Format-Table Identity,Status,MessageCount,NextHopDomain,LastError先看哪個目的地累積與 LastError。
跨伺服器 Queue 摘要Exchange Management Shell
Get-QueueDigest -GroupBy ServerName -DetailsLevel Normal預設可能只顯示達門檻的 queue,注意資料延遲。
查看單一 Queue 的郵件Exchange Management Shell
Get-Message -Queue 'EX01\123' | Select-Object Identity,FromAddress,Recipients,Status,LastError內容含個資,輸出要限制。
只重試指定 QueueExchange Management Shell
Retry-Queue -Identity 'EX01\123' -Confirm:$false先修 DNS/TLS/connector 原因;不要用全域 retry 製造尖峰。
測試內部 Mail FlowExchange Management Shell
Test-Mailflow -TargetMailboxServer EX02結果要和 transport log、queue 與實際收信一起看。
查看 Send ConnectorExchange Management Shell
Get-SendConnector | Format-List Name,Enabled,AddressSpaces,SmartHosts,DNSRoutingEnabled,RequireTLS,SourceTransportServers確認路由與 TLS 要求。
查看 Receive ConnectorExchange Management Shell
Get-ReceiveConnector -Server EX01 | Format-Table Identity,Bindings,RemoteIPRanges,AuthMechanism,PermissionGroupsRemoteIPRanges 過寬可能形成 relay 風險。
Database、DAG 與憑證
查看 Database 狀態Exchange Management Shell
Get-MailboxDatabase -Status | Format-Table Name,Server,Mounted,DatabaseSize,AvailableNewMailboxSpaceAvailableNewMailboxSpace 不是磁碟剩餘空間。
查看 Database CopyExchange Management Shell
Get-MailboxDatabaseCopyStatus * | Format-Table Name,Status,CopyQueueLength,ReplayQueueLength,ContentIndexStatequeue 突升先看網路、磁碟、replication service 與事件。
查看 DAG 狀態Exchange Management Shell
Get-DatabaseAvailabilityGroup -Status | Format-List Name,Servers,OperationalServers,PrimaryActiveManager,WitnessServer,WitnessDirectoryQuorum 與 witness 狀態要搭配 Failover Clustering 檢查。
查看 Exchange 憑證Exchange Management Shell
Get-ExchangeCertificate | Format-Table Thumbprint,Services,Subject,CertificateDomains,NotAfter,Status到期前確認 IIS、SMTP 與 namespace 綁定。
查看 Autodiscover URIExchange Management Shell
Get-ClientAccessService | Format-List Name,AutoDiscoverServiceInternalUri混合或多站點環境要按版本與設計判讀。
查看 Web Services URLExchange Management Shell
Get-WebServicesVirtualDirectory | Format-List Identity,InternalUrl,ExternalUrl同時核對 DNS、憑證 SAN、load balancer 與 authentication。
查看 Mailbox 統計Exchange Management Shell
Get-MailboxStatistics -Database 'DB01' | Sort-Object TotalItemSize -Descending | Select-Object -First 20 DisplayName,TotalItemSize,ItemCount,LastLogonTime輸出含使用者資訊,只供容量規劃。
怎麼確認有做對
- Test-ServiceHealth 與重要 health set 正常,磁碟有足夠空間。
- Queue 能持續下降,LastError 原因已消失,不是只手動 Retry。
- DAG copy queue、replay queue、content index 與實際資料庫掛載正常。
常見錯誤
- Exchange 出錯就重開所有 MSExchange service。
- Queue 一多就 Remove-Message。
- 只看 database size,不看磁碟、transaction log、backup truncation。
- 續憑證後沒有驗證 IIS/SMTP service assignment 與 mail flow。
常見問題
Queue 卡住先重啟 Transport 有用嗎?
可能暫時變化,但會中斷處理,也會丟失根因線索。先讀 NextHopDomain、LastError、DNS、TLS、connector、back pressure 與磁碟。
CopyQueueLength 不為 0 就是 DAG 壞掉嗎?
短暫非零不一定異常,要看是否持續上升、ReplayQueueLength、網路與磁碟延遲、replication health 和事件。
延伸閱讀
版本與官方文件
參數會隨工具版本與作業系統實作改變。正式環境先用 --help、-h 或系統內建說明確認,再以當版官方文件為準。
常見問題
Queue 卡住先重啟 Transport 有用嗎?
可能暫時變化,但會中斷處理,也會丟失根因線索。先讀 NextHopDomain、LastError、DNS、TLS、connector、back pressure 與磁碟。
CopyQueueLength 不為 0 就是 DAG 壞掉嗎?
短暫非零不一定異常,要看是否持續上升、ReplayQueueLength、網路與磁碟延遲、replication health 和事件。