Reconstructing Mailboxes

Individual mailboxes or folders

If you have a mailbox within the filesystem but the folders and/or messages do not show up via IMAP or the cyradm utility, you may need to run reconstruct on the mailbox. This will rebuild the cyrus.* cache files and add any new folders to the internal cyrus mailbox list.


The -k switch preserves expunged messages so they can be undeleted if required. Without it, anything expunged will be permanently removed (Applies to Cyrus IMAP 2.3 and below.) On Cyrus IMAP 2.4.0 and above, this is not required as preserving the expunged messages is the only mode of operation.

cyrus $ /usr/lib/cyrus-imapd/reconstruct -k -r -f user/

The above output shows the 3 sub-folders Sent, Trash and Drafts were found in addition to the top level INBOX. Sub-folders are only detected by the presence of a cyrus.header file.

Once this has been done, the client will probably need to subscribe to the newly discovered folders.


After restoring folders using reconstruct, you may need to recalculate the quota usage for the mailbox since this is not done by the reconstruct command.

Recovering a complete spool directory


Use the -m switch with caution!

When invoked with the -m switch, reconstruct will rebuild the master mailboxes file. This can (in theory) be used to recover from almost any sort of data corruption.