How to Fix the Corrupted System Mailboxes & “The user doesn’t have an exchange mailbox” Error in Exchange Server 2013
Here’s an Exchange 2013 problem and resolution.
PROBLEM
When upgrading from Exchange Server 2007 to Exchange Server 2013 I ran into some errors. First there were several system mailboxes that were corrupted and in an inconsistent state. In addition, I was getting an error when I tried to move mailboxes from Exchange 2007 to Exchange 2013 database. The error said that The user doesn’t have an Exchange mailbox. I only found one reference to this error in the entire Google search database that was tied to Office 365 and wasn’t really quite related to my problem at all. I also didn’t find anything on Microsoft TechNet or different support forums that was helpful. The Exchange Help on TechNet basically said that if you get this error then something is wrong. Duh!
Error #1
Here’s a sample of the corrupted system mailbox warnings that I was getting. I copied and pasted the errors from a popup box into Word 2013 to be able to better analyze them.
Error #2
Another error that was the most unusual was the following error.
The user doesn’t have an Exchange mailbox.
I encountered this error when I was logged in with an account that has the highest level permissions in the Exchange Organization as well as on the Exchange server. I was using the Exchange Management Console to move the mailboxes when I would get this error. I looked at the account that I was logged in as well as the account that I was moving and they both had mailboxes. How do I know? Well, I logged in with those accounts and was able to send and receive email. I believe the error was due to a problem with the Migration Mailbox, as described in the next section.
SOLUTION
Look in Active Directory Users and Computers. You will find the user accounts in the Users container. In my case I noticed that the two System Mailbox accounts, the FederatedEmail account, the Migration account and the DiscoverySearchMailbox account were all corrupted and were in an inconsistent state. You can type get-user -arbitration and get-mailbox -arbitration to verify this. Although a read on a Microsoft Exchange team blog that you can ignore the Migration mailbox error when you upgrade from Exchange 2007 to Exchange 2013 because you will notice that the account is actually working, in my case the situation was different and the account was not working and it was corrupted for sure so I have to fix that account along with the rest.
I basically used a troubleshooting tip from a Microsoft KB article that was helpful in fixing a problem with Migration Mailbox and applied that technique to fixing the corrupted system mailboxes. Here’s the step-by-step procedure for fixing the corrupted system mailboxes as well as the “The user doesn’t have an Exchange mailbox” error. The solution to the second error about Migration Mailbox error is more specifically addressed and detailed in my article Error: The Migration Mailbox for the Organization is Either Missing or Invalid.
- Start Exchange Management Shell in Exchange Server 2013.
- Type get-mailbox -arbitration commands to see the system mailboxes that are corrupted.
NOTE: The command for to list the user arbitration accounts is get-user -arbitration but in this article our focus is on the system accounts. - Go to Active Directory Users and Computers.
- Go to the Users container (yes, Users is not an Organizational Unit, it’s a “special container.” If you want an explanation, just ask.)
- Delete the corrupted mailboxes one by one (see the Warning graphic above).
- Start the Command Prompt with elevated privileges and run the following command. You will need access to the Exchange Server 2013 source files where the setup.exe file is located.WARNING! You are working with Exchange 2013, not Exchange Server 2010, so the setup file is setup.exe, not setup.com. Obviously, you can simply skip the extension and you will be fine but if you are going to use the extension it must be .exe). Also, in Exchange 2013 you must accept the Exchange Server License Terms and type /IAcceptExchangeServerLicenseTerms at the end.
Setup.exe /PrepareAD /IAcceptExchangeServerLicenseTerms
Wait until the setup process finishes successfully. If you don’t wait for the process to finish you will get an error.
NOTE: If you forget to type /IAcceptExchangeServerLicenseTerms parameter at the end you will see a reminder in the screenshot below that you need to accept the licensing terms posted at the URL http://go.microsoft.com/fwlink/p/?LinkId=150127. However, the URL won’t help you because the license page is a generic page where you have to find your software and version and as of September 2014 Microsoft still has not updated that licensing page to post a link to the Exchange Server 2013 licensing terms. You only have the option to read licensing agreement for Exchange 2007 or Exchange 2010.
WARNING: Running the Setup.exe /PrepareAD /IAcceptExchangeServerLicenseTerms will recreate the System, Federated, Migration and Discovery Search mailboxes but will not enable them. You must enable these mailboxes after they have been recreated.
- Go to the Users container in Active Directory Users and Computers.
- Make a note of the Globally Unique ID (GUID) and the Display Name for all the accounts that you are working with, such as FederatedEmail, Migration, DiscoverySearchMailbox, and the two System accounts. You will find this information on the General tab of the account Properties in the Users container in Active Directory Users and Computers.
- Start the Exchange Management Shell and enable the first system mailbox account by running the following two PowerShell cmdlets individually. Replace the GUID and Display Name with your own data. Your Display Name may be the same but the GUID is likely to be different:
Enable-Mailbox -Arbitration -Identity “SystemMailbox{e0dc1c29-89c3-4034-b678-e6c29d823ed9}”
Set-Mailbox -Arbitration -Identity “SystemMailbox{e0dc1c29-89c3-4034-b678-e6c29d823ed9}” -DisplayName “Microsoft Exchange”
Then run the cmdlets to enable the second corrupted system mailbox.
Enable-Mailbox -Arbitration -Identity “SystemMailbox{1f05a927-d92f-447e-a024-1f3420f5de7a}”
Set-Mailbox -Arbitration -Identity “SystemMailbox{1f05a927-d92f-447e-a024-1f3420f5de7a}” -DisplayName “Microsoft Exchange Approval Assistant”
The following screenshot shows the first two commands. Repeat the process for all other corrupted mailboxes, such as FederatedEmail, Migration and DiscoverySearchMailbox.
When finished, you should not get any more errors and your system mailboxes will be back in business and you will also be able to migrate the users to another database without getting the error “The user doesn’t have an Exchange mailbox.” Use the Users container in Active Directory Users and Computers to verify that the deleted accounts were recreated as shown below.
If you run the get-mailbox -arbitration command you should not see any corrupted accounts. Please note that this command will not show you all the system accounts . In my case I can see the system accounts and the migration account.
Copyright ©2014 Zubair Alexander. All rights reserved.
Thanks a lot, helped me so much! I need to add the string “–Management:$true” at the “set-mailbox” cmdlet to let the migration work again.