---
name: "cyrus-cyr_expire"
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-cyr_expire"
---

# cyrus-cyr\_expire(8)

Cyrus IMAP documentation Expire messages and duplicate delivery database entries

## NAME

cyr\_expire - Cyrus IMAP documentation

Expire messages and duplicate delivery database entries

## SYNOPSIS

```
cyr_expire [ -C config-file ] [ -A archive-duration ]
[ -D delete-duration ] [ -E expire-duration ] [ -X expunge-duration ]
[ -p mailbox-pre‐fix ] [ -u username ] [ -t ] [ -v ]
[ -a ] [ -c ] [ -x ]
```

## DESCRIPTION

**cyr\_expire is used to run a number of regular maintenance tasks** **on Cyrus databases, specifically:**

- •

  **expire messages from mailboxes, and**

- •

  **expire entries from the duplicate delivery database, and**

- •

  **cleanse mailboxes of partially expunged messages (when using the "delayed" expunge mode), and**

- •

  **remove deleted mailboxes (when using the "delayed" delete mode), and**

- •

  **expire entries from conversations databases, and**

- •

  **archive messages from mailbox.**

**There are various annotations that cyr\_expire respects:**

- •

  **/vendor/cmu/cyrus-imapd/expire which controls the expirations of** **messages**

- •

  **/vendor/cmu/cyrus-imapd/archive which controls the archival of** **messages**

- •

  **/vendor/cmu/cyrus-imapd/delete which controls the deletion of** **messages**

- •

  **/vendor/cmu/cyrus-imapd/noexpire\_until which disables the expire** **and delete operations per user**

**The first three mailbox annotations specify the age of messages in the** **given mailbox that should be expired/archived/deleted. The** **age is specified as a duration, the default unit are days.** **The duration format is defined in** *[imapd.conf(5)](/imapd.conf/5.md)***.**

**The last mailbox annotation specifies the UNIX epoch time in seconds** **until which expiring messages or removing deleted mailboxes is blocked.** **The zero epoch time represents infinity. This annotation has precedence** **over any of the other annotations or command line flags. It must only** **be set on the user inbox and applies to all mailboxes of that user.**

**The value of the /vendor/cmu/cyrus-imapd/expire annotation is** **inherited by all children of the mailbox on which it is set, so an** **entire mailbox tree can be configured by setting a single annotation on** **the root of that tree.  If a mailbox does not have a** **/vendor/cmu/cyrus-imapd/expire annotation set on it (or does not** **inherit one), then no messages are expired from the mailbox.**

**The annotation can be examined using the info command of** *cyradm(8)***, and modified using the mboxconfig and** **setinfo commands of** *cyradm(8)***.**

**Expiration of duplicate delivery database entries for a given mailbox** **is also controlled by the /vendor/cmu/cyrus-imapd/expire annotation** **which applies to that mailbox.  A value of 0 on the annotation means** **that no expiration is to be performed on that mailbox. Unlike message expiration, if no** **annotation applies to the mailbox then duplicate database entries are** **expired using the value given to the -E option.**

**Expiration of conversations database entries occurs if the** **conversations option is present in** *[imapd.conf(5)](/imapd.conf/5.md)***.** **Expiration can be disabled using the -c option.  The period used to** **expire entries is controlled by the conversations\_expire\_days** **option in** *[imapd.conf(5)](/imapd.conf/5.md)***.**

**cyr\_expire reads its configuration options out of the** *[imapd.conf(5)](/imapd.conf/5.md)* **file unless specified otherwise by -C.**

**cyr\_expire requires at least one of -A -D -E -X or -t to be** **supplied.**

## OPTIONS

- **-C config-file**

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

- **-A archive-duration, --archive-duration=archive-duration**

  **Archive non-flagged messages older than** *archive-duration* **to the** **archive partition, allowing mailbox messages to be split between fast** **storage and slow large storage.  Only does anything if** **archivepartition-\* has been set in your config.** **This value is only used for entries which do not have a** **corresponding /vendonr/cmu/cyrus-imapd/archive mailbox annotation.** **The duration format is defined in** *[imapd.conf(5)](/imapd.conf/5.md)***. The default** **unit are days.**

  **This feature was introduced in version 3.0.**

- **-D delete-duration, --delete-duration=delete-duration**

  **Remove previously deleted mailboxes older than** *delete-duration* **(when using the "delayed" delete mode).** **This value is only used for entries which do not have a** **corresponding /verdor/cmu/cyrus-imapd/delete mailbox annotation.** **The duration format is defined in** *[imapd.conf(5)](/imapd.conf/5.md)***. The default** **unit are days.**

- **-E expire-duration, --expire-duration=expire-duration**

  **Prune the duplicate database of entries older than** *expire-duration***.** **This value is only used for entries which do not have a corresponding** **/vendor/cmu/cyrus-imapd/expire mailbox annotation.** **The duration format is defined in** *[imapd.conf(5)](/imapd.conf/5.md)***. The default** **unit are days.**

- **-X expunge-duration, --expunge-duration=expunge-duration**

  **Expunge previously deleted messages older than** *expunge-duration* **(when using the "delayed" expunge mode).** **The duration format is defined in** *[imapd.conf(5)](/imapd.conf/5.md)***. The default** **unit are days.**

- **-c, --no-conversations**

  **Do not expire conversation database entries, even if the conversations** **feature is enabled.**

  **This feature was introduced in version 3.0.**

- **-x, --no-expunge**

  **Do not expunge messages even if using delayed expunge mode.  This** **reduces IO traffic considerably, allowing cyr\_expire to be run** **frequently to clean up the duplicate database without overloading** **the machine.**

- **-p mailbox-prefix, --prefix=mailbox-prefix**

  **Only find mailboxes starting with this prefix,  e.g.** **"user.justgotspammedlots".**

- **-u userid, --userid=userid**

  **Only find mailboxes belonging to this user,  e.g.** **"***justgotspammedlots@example.com***".**

- **-t, --prune-userflags**

  **Remove any user flags which are not used by remaining (not expunged)** **messages.**

- **-v, --verbose**

  **Enable verbose output.**

- **-a, --ignore-annotations**

  **Skip the annotation lookup, so all /vendor/cmu/cyrus-imapd/expire** **annotations are ignored entirely.  It behaves as if they were not** **set, so only** *expire-days* **is considered for all mailboxes.**

## EXAMPLES

```
cyr_expire -E 3 -D 60 -X 60
```

*Purge duplicates database of all entries older than 3 days, remove* *deleted mailboxes older than 60 days and deleted messages older than* *60 days.*

```
cyr_expire -x -c -A 7d
```

*Perform migration of message older than 7 days to Archive* *partition whilst not altering conversation database nor* *expunging messages.*

## HISTORY

*Archive partition and conversation support was first introduced in Cyrus* *version 3.0.*

## FILES

*/etc/imapd.conf*

## SEE ALSO

*[imapd.conf(5)](/imapd.conf/5.md), [master(8)](/master/8.md), cyradm(8)*

## AUTHOR

*The Cyrus Team, Nic Bernstein (Onlight), Jeroen van Meeuwen (Kolab Systems)*

## COPYRIGHT

*1993–2025, The Cyrus Team*
