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.
