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.

Note

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/jdoe@example.com
discovered example.com!user.jdoe.Drafts
discovered example.com!user.jdoe.Trash
discovered example.com!user.jdoe.Sent
user/jdoe@example.com
user/jdoe/Sent@example.com
user/jdoe/Trash@example.com
user/jdoe/Drafts@example.com

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.

Note

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

Warning

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.