When we talk about “Archiving” in Cyrus (from 3.0 onwards) we’re not talking about data retention, what we’re really talking about is time-tiered storage. Elsewhere in these documents we discuss storage tiering based on things like space limitations or scalability. Archiving is somewhat like this, but with an accompanying configuration syntax which determines the management of the tiered data on an ongoing basis.
The general intent of archiving, as deployed within Cyrus, is to allow administrators to dictate that there be two tiers of data storage for each mail spool partition: “current” and “archive.” The common use case is to use higher speed storage media for the former, and lower cost media for the latter; Current goes on SSDs, and Archive goes on traditional spinning media.
Archive operation in Cyrus is enabled via the
setting in imapd.conf(5):
Is archiving enabled for this server. You also need to have an archivepartition for the mailbox. Archiving allows older email to be stored on slower, cheaper disks - even within the same mailbox, as distinct from partitions.
The configuration suite provides directives to define these partitions:
The pathname of the archive partition name, corresponding to spool partition partition-name. For any mailbox residing in a directory on partition-name, the archived messages will be stored in a corresponding directory on archivepartition-name. Note that not every partition-name option is strictly required to have a corresponding archivepartition-name option, but that without one there’s no benefit to enabling archiving.
And to control the criteria used to manage migration of data between partitions:
The number of days after which to move messages to the archive partition if archiving is enabled
The size in kilobytes of the largest message that won’t be archived immediately. Default is 1Mb
If set, messages with the \Flagged system flag won’t be archived, provided they are smaller than archive_maxsize.
Further explanation is probably required for the
archive_maxsize option. The value is a threshold. Messages
larger than this threshold will be immediately put onto the archive
partition, rather than waiting
archive_days number of days.
This is to keep the high speed storage available for the largest
number of “current” messages.
archive_maxsize is not the maximum size of messages which
will be archived, but rather is the threshold above which they will