Different factors can affect exchange server and result to a corrupted exchange mailbox.
These include issues with shutdown, software issues, hardware issues and so on.
Here at Ibmi Media, as part of our Server Support Services, we regularly help our customers to fix Exchange mailbox related issues.
Now let us look into the main causes of the error and how to tackle it squarely.
What triggers an exchange mailbox to become corrupted?
Sometimes, exchange users nay experience some symptoms such as persistent hanging in Outlook, synchronization errors, Incorrect representation of the folder items, incorrect item number, search and public folder errors and so on in relation to a corrupt mailbox.
This error occurs when the client incorrectly updates MAPI flags in the process of working with the mailbox folder elements.
The main causes are outlined below;
i. Software issues.
ii. Hardware problems.
iii. Viruses effect.
iv. Incorrect shutting down.
v. Malfunction of the Application.
vi. Issues with the User.
vii. Issues with the database objects.
viii. Incorrect changes in the database schema.
Now, we will consider the best methods to fix a corrupted exchange mailbox.
How to solve a corrupted Exchange Mailbox?
To fix a corrupted exchange Mailbox, you need to restore the corrupted mailbox by applying the following tips;
i. Start by importing data from Outlook running in a cached mode to a ".PST" file. Then remove and recreate a new Mailbox for "problem" user and import data from the PST file to the new Exchange mailbox.
ii. Now unmount the mailbox store and check it with the Information Store Integrity Checker (Isinteg.exe) utility. This will allow the fixing of errors in the Exchange base on the application level. This requires a detailed downtime in the mail service for all users whose mailboxes are connected to the disconnected database.
iii. You can restore the Exchange database from backup by importing data from a specific mailbox to PST file. Then perform a data transfer to the recreated mailbox. This method have a con where all emails with the user's mailbox after the most recent backup execution time.
However, from Exchange 2010 SP1 release, the new PowerShell cmdlet "New-MailboxRepairRequest" is included. This will help to restore the logical structure of a damaged mailbox.
How to fix a corrupted exchange Mailbox using PowerShell cmdlet?
With the cmdlet "New-MailboxRepairRequest", you can identify logical errors in the Exchange databases on the application level. Additionally, it helps to search and solve the issues affecting a particular mailbox in the database.
Furthermore, using the cmdlet "New-MailboxRepairRequest", the mail database will not go offline completely.The only affected mailbox which will be unavailable is the ones going through the verification process.
The following syntax is the cmdlet for generating the New-MailboxRepairRequest;
New-MailboxRepairRequest -Mailbox -CorruptionType <MailboxStoreCorruptionType> [-Archive ] [-Confirm ] [-DetectOnly ] [-DomainController ] [-WhatIf ]
With Cmdlet, you can easily find and solve the following corruption types in Exchange mailboxes;
"SearchFolder" – Signifies errors in search folders.
"AggregateCounts" – Helps in checking and correcting the number of items in folders and their sizes.
"FolderView" – Signifies the incorrect content represented by folder views.
"ProvisionedFolder" – Signifies the folder logical structure damage.
In addition, the DetectOnly parameter helps us to just check the mailboxes without making any changes to them. Take a look at this for instance;
New-MailboxRepairRequest -Mailbox IBMI -DetectOnly -CorruptionType ProvisionedFolder, SearchFolder
Let us take a look at another instance to analyze the mailbox of the user "IBMI" and then performs recovery for all 4 types of corruption as seen below;
New-MailboxRepairRequest -Mailbox IBMI -CorruptionType ProvisionedFolder, SearchFolder, AggregateCounts, Folderview
In relation, to conduct an analysis of a database, you can use the syntax as specified below. Here replace "AUMailBase1" with the actual database name as shown below;
New-MailboxRepairRequest -Database "AUMailBase1" -CorruptionType ProvisionedFolder, SearchFolder, AggregateCounts, Folderview
Now from the taskID (RequestID), you can easily trace the output of this command or alternatively you can use the Windows event log.
Now let us look at some EventIDs.
EventIDs and what they represent;
"10044" – It represents the mailbox repair request failed for provisioned folders.
"10045" – The database repair request failed for provisioned folders.
"10046" – The provisioned folders repair request completed successfully.
"10047" – A mailbox-level repair request started.
"10048" – The repair request successfully completed.
"10049" – The mailbox or database repair request failed because Exchange encountered a problem with the database or another task is running against the database.
"10050" – The mailbox repair request task skipped a mailbox.
"10051" – The database repair request was canceled because the database was dismounted.
"10059" – A database-level repair request started.
"10062" – Corruption was detected.
"10064" – A Public Folder repair request started.
Note that the "Get-MailboxRepairRequest" cmdlet helps to get the status of the mailbox repair task.
With the "New-MailboxRepairRequest" cmdlet, once the mailbox repair process is started, it cannot be interrupted. To stop the process, then you need to stop the Exchange Information Store service to unmount the mailbox database.
Finally, in order to stabilize the performance of the Exchange server, you should not run the "New-MailboxRepairRequest" at the same time for a large number of databases.