Configuration file locations **************************** The main configuration file for Cyrus IMAP is imapd.conf(5) and its path is compiled into the executable files, based upon the "-- sysconfdir" build flag. For many utilities, this may be overridden at runtime via the **-C** flag, followed by the name of the configuration file to use. For example: **ctl_mboxlist** **-C** */usr/local/etc/imapd.conf* **-d** **-f** *mailboxes.dump* The main configuration directory is referred to as "" in Cyrus IMAP documentation, and is set via the "configdirectory" entry in imapd.conf(5): "configdirectory:" The pathname of the IMAP configuration directory. This field is required. While Cyrus itself has no default values for this setting, most distributions use "/var/lib/imap" or "/var/lib/cyrus". State Databases =============== Despite the name, most of what's stored in "" is state information. Here's a list of files typically located therein: * Annotations (annotations.db) * Backups (backups.db) * Duplicate Delivery (deliver.db) * Mailbox List (mailboxes.db) * News database (fetchnews.db) * PTS cache (ptscache.db) * Quotas (quotas.db) * STATUS cache (statuscache.db) * TLS cache (tls_sessions.db) * User Access (user_deny.db) * Zoneinfo db (zoneinfo.db) The links above document the purpose, DB type and choices for those files. You may adjust the locations of these database files via various settings in imapd.conf(5): "annotation_db_path:" The absolute path to the annotations db file. If not specified, will be configdirectory/annotations.db "backup_db_path:" The absolute path to the backup db file. If not specified, will be configdirectory/backups.db "duplicate_db_path:" The absolute path to the duplicate db file. If not specified, will be configdirectory/deliver.db "mboxlist_db_path:" The absolute path to the mailboxes db file. If not specified will be configdirectory/mailboxes.db "newsrc_db_path:" The absolute path to the newsrc db file. If not specified, will be configdirectory/fetchnews.db "ptscache_db_path:" The absolute path to the ptscache db file. If not specified, will be configdirectory/ptscache.db "quota_db_path:" The absolute path for the quota database (if you choose a single-file quota DB type - or the base path if you choose quotalegacy). If not specified will be configdirectory/quotas.db or configdirectory/quota/ "statuscache_db_path:" The absolute path to the statuscache db file. If not specified, will be configdirectory/statuscache.db "tls_sessions_db_path:" The absolute path to the TLS sessions db file. If not specified, will be configdirectory/tls_sessions.db "userdeny_db_path:" The absolute path to the userdeny db file. If not specified, will be configdirectory/user_deny.db "zoneinfo_db_path:" The absolute path to the zoneinfo db file. If not specified, will be configdirectory/zoneinfo.db Ephemeral Databases ------------------- Several of the state databases may be located in RAM-backed locations, such as "/run" or "/var/run" or where ever your OS roots such filesystems (i.e. "tmpfs" on Linux or "mfs" on FreeBSD). Cyrus 3.0 will recreate the following databases for you automatically: * duplicate delivery (deliver.db), * TLS cache (tls_sessions.db), * PTS cache (ptscache.db), * STATUS cache (statuscache.db). Relocating these DBs to ephemeral storage will place less IO load on your disks and tend to run faster. Note: Please be warned that some packagers place tasks such as "tlsprune" (tls_prune(8)) in the "START{}" stanza of cyrus.conf(5). This will cause a startup problem if the "tls_sessions_db" is not present. The solution to this is to remove the "tlsprune" task from "START{}" and schedule it in "EVENTS{}", further down. State Directories ***************** In addition to the files, are several directories: * lock (per-mailbox lock files) * log (per-user telemetry log directories) * proc (per-process state data) * ptclient (PT Loader Unix-domain socket) * quota (per-quotaroot quota state data) * sieve (per-user sieve message filter scripts) * socket (per-service Unix-domain sockets) * sync (per-replica directories with sync log files) * user (per-user DBs, see next section) As with the DB files, above, many of these, too, may be relocated via settings in imapd.conf(5): "mboxname_lockpath:" Path to mailbox name lock files (default $conf/lock) "proc_path:" Path to proc directory. Default is NULL - must be an absolute path if specified. If not specified, the path $configdirectory/proc/ will be used. "ptloader_sock:" Unix domain socket that ptloader listens on. (defaults to configdirectory/ptclient/ptsock) "quota_db_path:" The absolute path for the quota database (if you choose a single-file quota DB type - or the base path if you choose quotalegacy). If not specified will be configdirectory/quotas.db or configdirectory/quota/ Note: If your configuration uses "quota_db: quotalegacy", then "quota_db_path" points to the base of the quota directory hierarchy. If you use any other DB type, then this will be the actual filename. "sieveusehomedir:" 0 If enabled, lmtpd will look for Sieve scripts in user's home directories: ~user/.sieve. "sievedir:" /usr/sieve If sieveusehomedir is false, this directory is searched for Sieve scripts. "idlesocket:" {configdirectory}/socket/idle Unix domain socket that idled listens on. "lmtpsocket:" {configdirectory}/socket/lmtp Unix domain socket that lmtpd listens on, used by deliver(8). This should match the path specified in cyrus.conf(5). "notifysocket:" {configdirectory}/socket/notify Unix domain socket that the mail notification daemon listens on. Per-user State Directories ************************** There are several things tracked per-user, and the data files for these items, such as subscriptions and seen state, are stored in /user. These files may not be relocated from . They are: * Seen State (.seen) * Subscriptions (.sub) * Search Index DB List (.xapianactive) * Mailbox Keys (.mboxkey) * DAV Index (.dav) Please follow those links for more information on these files.