Hi Lasker Sokia
Thank you for reaching out to Microsoft Q&A forum
Based on your description, I understand that on your Exchange Server 2019, the Microsoft Exchange Transport service is failing to start and remains stuck in a "Starting" state indefinitely. Attempts to restart the service via PowerShell (Restart-Service MSExchangeTransport) or reboot the server have no effect.
As far as I know, this issue usually happens when the transport modules take too long to start, often due to problems with the queue database (mail.que) or folder permissions. The Transport service needs quick access to this database for mail routing, so delays caused by insufficient permissions, corrupted queue files, or Active Directory connection issues can prevent it from starting properly. Other services may run fine, but the Transport service is more sensitive to these dependencies, especially after updates or configuration changes. If not fixed, it can temporarily disrupt mail flow—though messages in the queue are typically preserved.
Therefore, you can follow the steps below to see if the issue can be solved:
Step 1: Create a backup
Back up C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\data\Queue. Check Event Viewer (Application → MSExchangeTransport) for Event IDs: 1022, 2080, 4000, 9646, or 1026.
Step 2: Enable diagnostics and verify permissions
Set-EventLogLevel "MSExchangeTransport\SmtpReceive" -Level Expert
Set-EventLogLevel "MSExchangeTransport\Categorizer" -Level Expert
icacls "C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\data\Queue" /grant "NETWORK SERVICE:(OI)(CI)F" /T
Step 3: Stop services and force terminate if needed
Stop-Service MSExchangeFrontEndTransport, MSExchangeDelivery, MSExchangeTransport -Force
# If hung:
$pid = (Get-Process EdgeTransport -ErrorAction SilentlyContinue).Idif ($pid) { Stop-Process -Id $pid -Force }
Step 4: Recreate Queue Database and Restart
cd "C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\data\Queue"
Rename-Item mail.que, trn.chk, trn.log -NewName {$_.Name + ".old"}
Remove-Item trntmp.log -ErrorAction SilentlyContinueStart-Service
MSExchangeTransportTest-ServiceHealth
Step 5: Reset Logging and run System Checks (If Needed)
Set-EventLogLevel "MSExchangeTransport\SmtpReceive" -Level Lowest
Set-EventLogLevel "MSExchangeTransport\Categorizer" -Level Lowest
# Only if logs show .NET/corruption errors:
sfc /scannowDISM /Online /Cleanup-Image /RestoreHealth
Please feel free to leave a comment below if you require any additional help.
Best regards
If the answer is helpful, please click "Accept Answer" and kindly upvote it. If you have extra questions about this answer, please click "Comment".
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.