---
name: "cyrus-reconstruct"
section: "8"
platform: "linux"
package: "cyrus-common"
version: "3.10.2-1+deb13u2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/cyrus-reconstruct"
---

# cyrus-reconstruct(8)

Cyrus IMAP documentation Reconstruct mailboxes

## NAME

reconstruct - Cyrus IMAP documentation

Reconstruct mailboxes

## SYNOPSIS

```
reconstruct [ -C config-file ] [ -p partition ] [ -x ] [ -r ]
    [ -f ] [ -U ] [ -s ] [ -q ] [ -G ] [ -R ] [ -o ]
    [ -O ] [ -M ] mailbox...
reconstruct [ -C config-file ] [ -p partition ] [ -x ] [ -r ]
    [ -f ] [ -U ] [ -s ] [ -q ] [ -G ] [ -R ] [ -o ]
    [ -O ] [ -M ] -u user...
reconstruct [ -C config-file ] [ -p partition ] [ -r ]
    [ -q ] -V version mailbox...
reconstruct [ -C config-file ] [ -p partition ] [ -r ]
    [ -q ] -V version -u user...
reconstruct [ -C config-file ] -P cyrus-header-paths...
```

## DESCRIPTION

**reconstruct** *rebuilds one or more IMAP mailboxes.  It can be* *used to recover from almost any sort of data corruption.*

*If* **reconstruct** *can find existing header and index files, it* *attempts to preserve any data in them that is not derivable from the* *message files themselves. The state* **reconstruct** *attempts to* *preserve includes the flag names, flag state, and internaldate.*

**reconstruct** *derives all other information from the message files.*

**reconstruct** *reads its configuration options out of the [imapd.conf(5)](/imapd.conf/5.md) file unless specified otherwise by* **-C***.  Any mailbox directory underneath* *the path specified in the* **partition-news** *configuration option is* *assumed to be in news format.*

**reconstruct** *does not adjust the quota usage recorded in any quota* *root files.  After running* **reconstruct***, it is advisable to run* **[quota(8)](/quota/8.md)** *with the* **-f** *switch in order to fix the quota* *root files.*

*When upgrading versions of Cyrus software, it may be necessary to run* **reconstruct** *with the* **-V** *option, to rebuild indexes to a* *given version (or max for the most recent).  Note that the* **-V** *option cannot be combined with most other reconstruct options.  If* *a mailbox needs reconstructing you should do that first, and then* *upgrade it with* **-V** *once it's good.*

## OPTIONS

- **-C config-file**

  *Use the specified configuration file config-file rather than the default [imapd.conf(5)](/imapd.conf/5.md).*

- **-p partition, --partition=partition**

  *Search for the listed (non-existant) mailboxes on the indicated* *partition. Create the mailboxes in the database in addition to* *reconstructing them. (not compatible with the use of wildcards)*

- **-x, --ignore-disk-metadata**

  *When processing a mailbox which is not in the mailbox list (e.g.* *via the* **-p** *or* **-f** *options), do not import the metadata from* *the mailbox, instead create it anew (this specifically affects at* *least the mailbox's seen state unique identifier, user flags, and* *ACL).*

- **-r, --recursive**

  *Recursively reconstruct all sub-mailboxes of the mailboxes or* *mailbox prefixes given as arguments.*

- **-f, --scan-filesystem**

  *Examine the filesystem underneath mailbox, adding all directories* *with a* **cyrus.header** *found there as new mailboxes.  Useful for* *restoring mailboxes from backups.*

- **-s, --no-stat**

  *Don't stat underlying files.  This makes reconstruct run faster, at* *the expense of not noticing some issues (like zero byte files or* *size mismatches).  "***reconstruct -s***" should be quite fast.*

- **-q, --quiet**

  *Emit less verbose information to syslog.*

- **-n, --dry-run**

  *Don't make any changes.  Problems are reported, but not fixed.*

- **-G, --force-reparse**

  *Force re-parsing of the underlying message (checks GUID* *correctness). Reconstruct with -G should fix all possible* *individual message issues, including corrupted data files.*

- **-I, --update-uniqueids**

  *If two mailboxes exist with the same UNIQUEID and reconstruct visits* *both of them, -I will cause the second mailbox to have a new UNIQUEID* *created for it.  If you don't specify -I, you will just get a syslog* *entry telling you of the clash.*

- **-R, --guid-mismatch-keep**

  *Perform a UID upgrade operation on GUID mismatch files.  Use this* *option if you think your index is corrupted rather than your* *message files, or if all backup attempts have failed and you're* *happy to be served the missing files.*

- **-U, --guid-mismatch-discard**

  *Use this option if you have corrupt message files in your spool and* *have been unable to restore them from backup.  This will make the* *mailbox IOERROR free and fix replication.*

  *WARNING:* *this deletes corrupt message files for ever - so make sure you've* *exhausted other options first!*

- **-o, --ignore-odd-files**

  *Ignore odd files in your mailbox disk directories, instead of* *complaining about them.  Probably useful if you are using some* *tool which adds additional tracking files.*

- **-O, --delete-odd-files**

  *Delete odd files.  This is the opposite of* **-o***.*

- **-M, --prefer-mboxlist**

  *Prefer mailboxes.db over cyrus.header - will rewrite ACL or* *uniqueid from the mailboxes.db into the header file rather than the* *other way around.  This feature was introduced in version 3.0.*

- **-V version, --set-version=version**

  *Change the* **cyrus.index** *minor version to a specific version.* *This can be useful for upgrades or downgrades. Use a magical* *version of max to upgrade to the latest available database format* *version.*

- **-u, --userids**

  *Instead of mailbox prefixes, give userids on the command line*

- **-P, --header-paths**

  *Instead of mailbox prefixes, give paths to cyrus.header files on* *the command line.  The paths can be mailbox directories, or* *explicit cyrus.header filenames.* *This will ONLY create/repair mailboxes.db records using data in* *cyrus.header and cyrus.index.*

## EXAMPLES

```
reconstruct -r -f tech.support
```

*Recursively reconstruct all mailboxes within the tech.support* *hierarchy, restoring any directories containing* **cyrus.header** *files.*

```
reconstruct -r -f tech.support.Archive.2%
```

*Recursively reconstruct all mailboxes within the* *tech.support.Archive hierarchy with names beginning with '2',* *restoring any directories containing* **cyrus.header** *files.*

```
reconstruct -r -f -u jsmith
```

*Recursively reconstruct all mailboxes belonging to jsmith,* *restoring any directories containing* **cyrus.header** *files.*

## HISTORY

*The options* **-k** *(keep flags) and* **-g** *(clear GUID) have been* *deprecated in Cyrus version 2.4.*

*The* **-u** *and* **-V** *options were added in Cyrus version 2.5.*

*The* **-M** *option was added in Cyrus version 3.0.*

## FILES

*/etc/imapd.conf*

## SEE ALSO

*[imapd.conf(5)](/imapd.conf/5.md)*

## AUTHOR

*The Cyrus Team, Nic Bernstein (Onlight)*

## COPYRIGHT

*1993–2025, The Cyrus Team*
