IMAPD.CONF(5)

NAME
imapd.conf - Cyrus IMAP documentation

IMAP configuration file

DESCRIPTION

/etc/imapd.conf is the configuration file for the Cyrus IMAP server. It defines local parameters for IMAP.

Each line of the /etc/imapd.conf file has the form option: value

where option is the name of the configuration option being set and value is the value that the configuration option is being set to.

Although there is no limit to the length of a line, a ``\'' (backslash) character may be used as the last character on a line to force it to continue on the next one. No additional whitespace is inserted before or after the ``\''. Note that a line that is split using ``\'' character(s) is still considered a single line.

For example option:\

value1 value2 \

value3

is equivalent to option: value1 value2 value3

Blank lines and lines beginning with ``#'' are ignored.

For boolean and enumerated options, the values ``yes'', ``on'', ``t'', ``true'' and ``1'' turn the option on, the values ``no'', ``off'', ``f'', ``false'' and ``0'' turn the option off.

Duration options take the form of a number followed by a unit, for example 32m (32 minutes). Units are d (days), h (hours), m (minutes) and s (seconds). Multiple units can be combined and will be summed together, for example 1h30m is equivalent to 90m. If no unit is specified, an option-specific backward-compatible default unit is assumed (documented on an option-by-option basis). These are simple time units: 1d=24h, 1h=60m, 1m=60s (daylight savings, timezones, leap adjustments, etc are not considered).

Byte size options take the form of a number followed by a unit, for example 1KiB (1 kibibyte). Units are B (bytes), KiB (kibibytes), MiB (mebibytes), and GiB (gibibytes), which may also be spelt KB, MB, and GB. Units are parsed without regard to case. Note that regardless of spelling, these units are always powers of 2, and never metric. That is, 1GiB = 1024MiB, 1MiB = 1024KiB, 1KiB = 1024B. If no unit is specified, an option-specific backward-compatible default unit is assumed (documented on an option-by-option basis).

OPTION DESCRIPTIONS

The sections below detail options that can be placed in the /etc/imapd.conf file, and show each option's default value. Some options have no default value, these are listed with ``<no default>''. Some options default to the empty string, these are listed with ``<none>''.

  @include

Default: <none>

Directive which includes the specified file as part of the configuration. If the path to the file is not absolute, CYRUS_PATH is prepended.

  acl_admin_implies_write

Default: 0

If enabled, any user with the admin ACL on a mailbox implicitly gets the ability to write to that mailbox as well.

  addressbookprefix

Default: #addressbooks

The prefix for the addressbook mailboxes hierarchies. The hierarchy delimiter will be automatically appended. The public addressbook hierarchy will be at the toplevel of the shared namespace. A user's personal addressbook hierarchy will be a child of their Inbox.

  admins

Default: <empty string>

The list of userids with administrative rights. Separate each userid with a space. Sites using Kerberos authentication may use separate "admin" instances.

Note that accounts used by users should not be administrators. Administrative accounts should not receive mail. That is, if user "jbRo" is a user reading mail, he should not also be in the admins line. Some problems may occur otherwise, most notably the ability of administrators to create top-level mailboxes visible to users, but not writable by users.

  admins_get_internal_seen

Default: 0

If set, admin users see and set the internal seen state of mailboxes rather than their own separate copy (NOTE: they still don't update the RECENT timestamp unless the mailbox has SHAREDSEEN) as well.

  afspts_localrealms

Default: <none>

The list of realms which are to be treated as local, and thus stripped during identifier canonicalization (for the AFSPTS ptloader module). This is different from loginrealms in that it occurs later in the authorization process (as the user id is canonified for PTS lookup).

  afspts_mycell

Default: <none>

Cell to use for AFS PTS lookups. Defaults to the local cell.

  allowallsubscribe

Default: 0

Allow subscription to nonexistent mailboxes. This option is typically used on backend servers in a Murder so that users can subscribe to mailboxes that don't reside on their "home" server. This option can also be used as a workaround for IMAP clients which don't play well with nonexistent or unselectable mailboxes (e.g., Microsoft Outlook).

  allowanonymouslogin

Default: 0

Permit logins by the user "anonymous" using any password. Also allows use of the SASL ANONYMOUS mechanism.

  allowapop

Default: 1

Allow use of the POP3 APOP authentication command.

Note that this command requires that SASL is compiled with APOP support, that the plaintext passwords are available in a SASL auxprop backend (e.g., sasldb), and that the system can provide enough entropy (e.g., from /dev/urandom) to create a challenge in the banner.

  allowdeleted

Default: 0

Allow access to deleted and expunged data in LIST and SELECT commands. If enabled, use the LIST selection option "vendor.cmu-include-deleted" to include deleted mailboxes in the LIST result. For SELECT, use the "VENDOR.CMU-INCLUDE-EXPUNGED" parameter to include expunged messages in the SELECT result.

  allownewnews

Default: 0

Allow use of the NNTP NEWNEWS command.

Note that this is a very expensive command and should only be enabled when absolutely necessary.

  allowplaintext

Default: 0

If enabled, allows the use of cleartext passwords on the wire.

By default, the use of cleartext passwords requires a TLS/SSL encryption layer to be negotiated prior to any cleartext authentication mechanisms being advertised or allowed. To require a TLS/SSL encryption layer to be negotiated prior to ANY authentication, see the tls_required option.

  allowsetacl

Default: 1

Defaults to enabled. If disabled, disallows the use of the SETACL command at all via IMAP.

  allowspecialusesubfolder

Default: 0

If enabled, allows special-use folders to be moved into subfolders

By default, cyrus does not allow a special-use folder to be moved or renamed if the new folder is not a direct folder of the users INBOX. This was implemented to prevent clients renaming Sent to Trash/Sent, which would confused other clients.

  allowstarttls

Default: 0

If enabled, allows upgrading a plaintext connection to use TLS (a.k.a opportunistic TLS) via a protocol specific command/mechanism. IMAP, LMTP, NNTP, and ManageSieve use the STARTTLS command. POP3 uses the STLS command. HTTP uses the Upgrade header field.

  allowusermoves

Default: 0

Allow moving user accounts (with associated meta-data) via RENAME or XFER.

Note that measures should be taken to make sure that the user being moved is not logged in, and cannot login during the move. Failure to do so may result in the user's meta-data (seen state, subscriptions, etc) being corrupted or out of date.

  altnamespace

Default: 1

Use the alternate IMAP namespace, where personal folders reside at the same level in the hierarchy as INBOX.

This option ONLY applies where interaction takes place with the client/user. Currently this is limited to the IMAP protocol (imapd) and Sieve scripts (lmtpd). This option does NOT apply to admin tools such as cyradm (admins ONLY), reconstruct, quota, etc., NOR does it affect LMTP delivery of messages directly to mailboxes via plus-addressing. The default changed in 3.0 from off to on.

  altprefix

Default: Alt Folders

Alternative INBOX spellings that can't be accessed in altnamespace otherwise go under here.

  annotation_allow_undefined

Default: 0

Allow clients to store values for entries which are not defined either by Cyrus or in the annotations_definitions file.

  annotation_callout

Default: <none>

The pathname of a callout to be used to automatically add annotations or flags to a message when it is appended to a mailbox. The path can be either an executable (including a script), or a UNIX domain socket.

  annotation_callout_disable_append

Default: 0

Disables annotations on append with xrunannotator.

  annotation_db

Default: twoskip

The cyrusdb backend to use for mailbox annotations.

Allowed values: skiplist, twom, twoskip

  annotation_db_path

Default: <none>

The absolute path to the annotations db file. If not specified, will be configdirectory/annotations.db

  annotation_definitions

Default: <none>

File containing external (third-party) annotation definitions.

Each line of the file specifies the properties of an annotation and has the following form: name, scope, attrib-type, proxy-type, attrib-names, acl

name
    is the hierarchical name as in RFC 5257 <https://datatracker.ietf.org/doc/html/rfc5257.html> or RFC 5464 <https://datatracker.ietf.org/doc/html/rfc5464.html> (in the latter case, without the leading /shared or /private). For example, /vendor/acme/blurdybloop.

scope
    specifies whether the annotation is for the server, a mailbox, or a message.

attrib-type
    specifies the attribute data type, which is used only to check the string value passed by clients when setting annotations. The attrib-type is one of:

string
    any value is accepted.

content-type
    this obsolete data type, which was useful for early drafts of the standard, is accepted but silently translated to string.

boolean
    only the strings "true" or "false" are accepted. Checking is case-insensitive but the value is forced to lowercase.

int integers are accepted.

uint
    non-negative integers are accepted.

proxy-type
    specifies whether this attribute is for the backend or proxy servers or both (proxy_and_backend)

attrib-names
    is the space-separated list of available attributes for the annotation. Possible attribute names are value.shared, value.priv, and value (which permits both value.priv and value.shared). The attribute names size, size.shared, and size.priv are accepted but ignored; these attributes are automatically provided by the server if the corresponding value attribute is specified. Some obsolete attributes, which were defined early drafts of the standard, are accepted and ignored with a warning.

extra-permissions
    is the extra ACL permission bits required for setting this annotation, in standard IMAP ACL permission bit string format. Note that this is in addition to the permission bits specified in RFC 5257 <https://datatracker.ietf.org/doc/html/rfc5257.html> and RFC 5464 <https://datatracker.ietf.org/doc/html/rfc5464.html>, so leaving this field empty is harmless. Note also that there is no way to specify that an annotation can only be set by an admin user; in particular the a permission bit does not achieve this.

    Blank lines and lines beginning with ``#'' are ignored.

  annotation_enable_legacy_commands

Default: 0

Whether to enable the legacy GETANNOTATION/SETANNOTATION commands. These commands are deprecated and will be removed in the future, but might be useful in the meantime for supporting old clients that do not implement the RFC 5464 <https://datatracker.ietf.org/doc/html/rfc5464.html> IMAP METADATA extension.

  anyoneuseracl

Default: 1

Should non-admin users be allowed to set ACLs for the 'anyone' user on their mailboxes? In a large organization this can cause support problems, but it's enabled by default.

  anysievefolder

Default: 0

It must be "yes" in order to permit the autocreation of any INBOX subfolder requested by a sieve filter, through the "fileinto" action.

  aps_expiry

Default: 1d

Time after which a CalDAV/CardDAV push subscription will expire. A client will have to refresh the subscription in order to continue to receive push notifications.

For backward compatibility, if no unit is specified, days is assumed.

  aps_topic

Default: <none>

Topic for Apple Push Service registration.

  aps_topic_caldav

Default: <none>

Topic for Apple Push Service registration for CalDAV.

  aps_topic_carddav

Default: <none>

Topic for Apple Push Service registration for CardDAV.

  archive_after

Default: 7d

The duration after which to move messages to the archive partition if archiving is enabled.

For backward compatibility, if no unit is specified, days is assumed.

  archive_days

Default: <none>

Deprecated in favour of archive_after.

  archive_enabled

Default: 0

Is archiving enabled for this server. You also need to have an archivepartition-name for the partition-name. Archiving allows older email to be stored on slower, cheaper disks - even within the same mailbox, as distinct from partitions.

  archive_keepflagged

Default: 0

If set, messages with the \Flagged system flag won't be archived, provided they are smaller than archive_maxsize.

  archive_maxsize

Default: 1024K

The size of the largest message that won't be archived immediately.

For backward compatibility, if no unit is specified, kibibytes is assumed.

  archivepartition-name

Default: <none>

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.

  auditlog

Default: 0

Should cyrus output log entries for every action taken on a message file or mailboxes list entry? It's noisy so disabled by default, but can be very useful for tracking down what happened if things look strange.

  auth_mech

Default: unix

The authorization mechanism to use.

Allowed values: unix, pts, krb5, mboxgroups

  autocreate_acl

Default: <none>

If folders are to be created by autocreate_inbox_folders, this setting can be used to apply additional ACLs to the autocreated folders. The syntax is "autocreate_acl folder identifier rights", where folder must match one of the autocreate_inbox_folders folders, identifier must be a valid cyrus identifier, and rights must be a valid cyrus rights string.

Multiple identifier|rights pairs can be assigned to a single folder by providing this setting multiple times.

For example, "autocreate_acl Plus anyone p" would allow lmtp delivery to a folder named "Plus".

  autocreate_inbox_folders

Default: <none>

If a user does not have an INBOX already, and the INBOX is to be created, create the list of folders in this setting as well. autocreate_inbox_folders is a list of INBOX's subfolders separated by a "|", that are automatically created by the server under the following two scenarios. Leading and trailing whitespace is stripped, so "Junk | Trash" results in two folders: "Junk" and "Trash". See also the xlist-flag option, for setting special-use flags on autocreated folders.

INBOX folders are created under both the following conditions:

1.  The user logins via the IMAP or the POP3 protocol. autocreate_quota option must have a value of zero or greater.

2.  A message arrives for the user through the lmtpd(8) <#std-cyrusman-lmtpd-8>. autocreate_post option must be enabled.

  autocreate_post

Default: 0

If enabled, when lmtpd(8) <#std-cyrusman-lmtpd-8> receives an incoming mail for an INBOX that does not exist, then the INBOX is automatically created by lmtpd and delivery of the message continues.

  autocreate_quota

Default: -1

If set to a value of zero or higher, users have their INBOX folders created upon a successful login event or upon lmtpd(8) <#std-cyrusman-lmtpd-8> message delivery if autocreate_post is enabled, provided their INBOX did not yet already exist.

The user's quota is set to the value if it is greater than zero, otherwise the user has unlimited quota.

Note that quota has kibibyte granularity. Values specified here will be truncated to the nearest whole kibibyte.

For backward compatibility, if no unit is specified, kibibytes is assumed.

  autocreate_quota_messages

Default: -1

If set to a value of zero or higher, users who have their INBOX folders created upon a successful login event (see autocreate_quota), or upon lmtpd(8) <#std-cyrusman-lmtpd-8> message delivery if autocreate_post is enabled, receive the message quota configured in this option.

The default of -1 disables assigning message quota.

For consistency with autocreate_quota, a value of zero is treated as unlimited message quota, rather than a message quota of zero.

  autocreate_sieve_compiled_script

Default: <none>

Deprecated in favour of autocreate_sieve_script_compiled.

  autocreate_sieve_folders

Default: <none>

A "|" separated list of subfolders of INBOX that will be automatically created, if requested by a sieve filter, through the "fileinto" action. The default is to create no folders automatically.

Leading and trailing whitespace is stripped from each folder, so a setting of "Junk | Trash" will create two folders: "Junk" and "Trash".

  autocreate_sieve_script

Default: <none>

The full path of a file that contains a sieve script. This script automatically becomes a user's initial default sieve filter script.

When this option is not defined, no default sieve filter is created. The file must be readable by the Cyrus daemon.

  autocreate_sieve_script_compile

Default: 0

If set to yes and no compiled sieve script file exists, the sieve script which is compiled on the fly will be saved in the file name that autocreate_sieve_script_compiled option points to. In order for a compiled script to be generated, autocreate_sieve_script and autocreate_sieve_script_compiled must have valid values.

  autocreate_sieve_script_compiled

Default: <none>

The full path of a file that contains a compiled in bytecode sieve script. This script automatically becomes a user's initial default sieve filter script. If this option is not specified, or the filename doesn't exist then the script defined by autocreate_sieve_script is compiled on the fly and installed as the user's default sieve script.

  autocreate_subscribe_folders

Default: <none>

A list of folder names, separated by "|", that the users get automatically subscribed to, when their INBOX is created. These folder names must have been included in the value set for autocreateinboxfolders.

  autocreate_subscribe_sharedfolders

Default: <none>

A list of shared folders (bulletin boards), separated by "|", that the users get automatically subscribed to, after their INBOX is created. The shared folder must have been created and the user must have the required permissions to get subscribed to it. Otherwise, subscribing to the shared folder fails.

  autocreate_subscribe_sharedfolders_all

Default: 0

If set to yes, the user is automatically subscribed to all shared folders, one has permission to subscribe to.

  autocreate_users

Default: anyone

A space separated list of users and/or groups that are allowed their INBOX to be automatically created.

  autocreateinboxfolders

Default: <none>

Deprecated in favour of autocreate_inbox_folders.

  autocreatequota

Default: <none>

Deprecated in favour of autocreate_quota.

  autocreatequotamsg

Default: -1

Deprecated in favour of autocreate_quota_messages.

  autoexpunge

Default: 0

If set to yes, then all Deleted messages will be automatically expunged whenever an index is closed, whether CLOSE, UNSELECT, SELECT or on disconnect.

  autosievefolders

Default: <none>

Deprecated in favour of autocreate_sieve_folders.

  autosubscribe_all_sharedfolders

Default: 0

Deprecated in favour of autocreate_subscribe_sharedfolders_all.

  autosubscribeinboxfolders

Default: <none>

Deprecated in favour of autocreate_subscribe_folders.

  autosubscribesharedfolders

Default: <none>

Deprecated in favour of autocreate_subscribe_sharedfolders.

  backup_compact_maxsize

Default: 0

Deprecated. No longer used.

  backup_compact_minsize

Default: 0

Deprecated. No longer used.

  backup_compact_work_threshold

Default: 1

Deprecated. No longer used.

  backup_db

Default: twoskip

Deprecated. No longer used.

  backup_db_path

Default: <none>

Deprecated. No longer used.

  backup_keep_previous

Default: 0

Deprecated. No longer used.

  backup_retention

Default: 7d

Deprecated. No longer used.

  backup_retention_days

Default: <none>

Deprecated. No longer used.

  backup_staging_path

Default: <none>

Deprecated. No longer used.

  backuppartition-name

Default: <none>

Deprecated. No longer used.

  boundary_limit

Default: 1000

messages are parsed recursively and a deep enough MIME structure can cause a stack overflow. Do not parse deeper than this many layers of MIME structure. The default of 1000 is much higher than any sane message should have.

  caldav_accept_invalid_rrules

Default: 0

Accept invalid RRULEs (e.g. FREQ=WEEKLY;BYMONTHDAY=15) rather than rejecting them as errors.

  caldav_alarm_db_path

Default: <none>

Path to the caldav_alarm database file - defaults to $confdir/caldav_alarm.sqlite3 if not set

  caldav_alarm_support_components

Default: VEVENT VTODO

Space-separated list of iCalendar component types for which calalarmd generates alarms.

Allowed values: VEVENT, VTODO

  caldav_alarm_suppress_file

Default: <none>

If this file exists, calalarmd will not process events

  caldav_allowattach

Default: 1

Enable managed attachments support on the CalDAV server.

  caldav_allowcalendaradmin

Default: 0

Enable per-user calendar administration web UI on the CalDAV server.

  caldav_allowscheduling

Default: on

Enable calendar scheduling operations. If set to "apple", the server will emulate Apple CalendarServer behavior as closely as possible.

Allowed values: off, on, apple

  caldav_create_attach

Default: 1

Create the 'Attachments' collection if it doesn't already exist.

  caldav_create_default

Default: 1

Create the 'Default' calendar if it doesn't already exist.

  caldav_create_sched

Default: 1

Create the 'Inbox' and 'Outbox' calendars if they don't already exist.

  caldav_historical_age

Default: 7d

How long after an occurrence of event or task has concluded that it is considered 'historical'. Changes to historical occurrences of events or tasks WILL NOT have invite or reply messages sent for them. A negative value means that events and tasks are NEVER considered historical.

For backward compatibility, if no unit is specified, days is assumed.

  caldav_maxdatetime

Default: 20380119T031407Z

The latest date and time accepted by the server (ISO format). This value is also used for expanding non-terminating recurrence rules.

Note that increasing this value will require the DAV databases for calendars to be reconstructed with the dav_reconstruct(1) <#std-cyrusman-dav_reconstruct-1> utility in order to see its effect on serer-side time-based queries.

  caldav_mindatetime

Default: 19011213T204552Z

The earliest date and time accepted by the server (ISO format).

  caldav_realm

Default: <none>

The realm to present for HTTP authentication of CalDAV resources. If not set (the default), the value of the servername option will be used.

  calendar_component_set

Default: VEVENT VTODO VJOURNAL VFREEBUSY VAVAILABILITY VPOLL

Space-separated list of iCalendar component types that calendar object resources may contain in a calendar collection. This restriction is only set at calendar creation time and only if the CalDAV client hasn't specified a restriction in the creation request.

Allowed values: VEVENT, VTODO, VJOURNAL, VFREEBUSY, VAVAILABILITY, VPOLL

  calendar_default_displayname

Default: personal

The displayname to be used when creating a user's 'Default' calendar.

  calendar_minimum_alarm_interval

Default: 5m

The minimum allowed interval between alarms for a recurring event. Primarily used to suppress alarms for MINUTELY and SECONDLY recurrences. The minimum value is 0, which will allow all alarms.

For backward compatibility, if no unit is specified, minutes is assumed.

  calendar_suppress_duplicate_alarms

Default: 1

Suppress duplicate calendar alarms in calalarmd. If this is set, then at most one alarm notification is sent for any given alarm action, point in time and calendar event.

  calendar_user_address_set

Default: <none>

Space-separated list of domains corresponding to calendar user addresses for which the server is responsible. If not set (the default), the value of the defaultdomain option will be used.

  calendarprefix

Default: #calendars

The prefix for the calendar mailboxes hierarchies. The hierarchy delimiter will be automatically appended. The public calendar hierarchy will be at the toplevel of the shared namespace. A user's personal calendar hierarchy will be a child of their Inbox.

  carddav_allowaddmember

Default: 0

Enable support for POST add-member on the CardDAV server.

  carddav_allowaddressbookadmin

Default: 0

Enable per-user addressbook administration web UI on the CardDAV server.

  carddav_realm

Default: <none>

The realm to present for HTTP authentication of CardDAV resources. If not set (the default), the value of the servername option will be used.

  carddav_repair_vcard

Default: 0

If enabled, VCARDs with invalid content are attempted to be repaired during creation.

Deprecated. No longer used.

  caringo_hostname

Default: <none>

Deprecated. No longer used.

  caringo_port

Default: 80

Deprecated. No longer used.

  chatty

Default: 0

If yes, syslog tags and commands for every IMAP command, mailboxes for every LMTP connection, every POP3 command, etc.

  client_bind

Default: 0

If enabled, a specific IP will be bound when performing a client connection. client_bind_name is used if it is set, otherwise servername is used. This is useful on multi-homed servers where Cyrus should not use other services' interfaces.

If not enabled (the default), no bind will be performed. Client connections will use an IP chosen by the operating system.

  client_bind_name

Default: <none>

IPv4, IPv6 address or hostname to bind for client connections when client_bind is enabled. If not set (the default), servername will be used.

  client_timeout

Default: 10s

Time to wait before returning a timeout failure when performing a client connection (e.g. in a murder environment).

If no unit is specified, seconds is assumed.

  commandmintimer

Default: <none>

Time in floating point seconds. Any imap command that takes longer than this time is logged.

  configdirectory

Default: <none>

The pathname of the IMAP configuration directory. This field is required.

  conversations

Default: 0

Enable the XCONVERSATIONS extensions. Extract conversation tracking information from incoming messages and track them in per-user databases.

  conversations_counted_flags

Default: <none>

space-separated list of flags for which per-conversation counts will be kept. Note that you need to reconstruct the conversations database with ctl_conversationsdb if you change this option on a running server, or the counts will be wrong.

  conversations_db

Default: skiplist

The cyrusdb backend to use for the per-user conversations database.

Allowed values: skiplist, sql, twom, twoskip

  conversations_expire_after

Default: 90d

How long the conversations database keeps the message tracking information needed for receiving new messages in existing conversations.

For backward compatibility, if no unit is specified, days is assumed.

  conversations_expire_days

Default: <none>

Deprecated in favour of conversations_expire_after.

  conversations_keep_existing

Default: 1

During conversations cleanup, don't clean up if there are still existing emails with one of the mentioned CIDs.

  conversations_max_guidexists

Default: 100

maximum records with the same guid. This maps to "labels", so with the default of 100, you can only have 100 labels on an email in JMAP.

  conversations_max_guidinfolder

Default: 10

maximum records with the same guid in the same folder. You can't do this via JMAP, but could via IMAP. The default of 10 should be heaps normally!

  conversations_max_guidrecords

Default: 5000

maximum records with the same guid. This is just a sanity check to stop the same email being added and removed over and over.

  conversations_max_thread

Default: 100

maximum size for a single thread. Threads will split if they have this many messages in them and another message arrives.

  createonpost

Default: 0

Deprecated in favour of autocreate_post.

  crossdomains

Default: 0

Enable cross domain sharing. This works best with alt namespace and unix hierarchy separators on, so you get Other Users/foo@example.com/...

  crossdomains_onlyother

Default: 0

only show the domain for users in other domains than your own (for backwards compatibility if you're already sharing.

  cyrus_group

Default: <none>

The name of the group Cyrus services will run as. If not configured, the primary group of cyrus_user will be used. Can be further overridden by setting the $CYRUS_GROUP environment variable.

  cyrus_user

Default: <none>

The username to use as the 'cyrus' user. If not configured, the compile time default will be used. Can be further overridden by setting the $CYRUS_USER environment variable.

  cyrusdb_autoconvert

Default: 0

Automatically convert any existing db to the configured engine for that database if possible.

  dav_lock_timeout

Default: 20s

The maximum time to wait for a write lock on the per-user DAV database before timeout. For HTTP requests, the HTTP status code 503 is returned if the lock can not be obtained within this time.

If no unit is specified, seconds is assumed.

  dav_realm

Default: <none>

The realm to present for HTTP authentication of generic DAV resources (principals). If not set (the default), the value of the servername option will be used.

  davdriveprefix

Default: #drive

The prefix for the DAV storage mailboxes hierarchies. The hierarchy delimiter will be automatically appended. The public storage hierarchy will be at the toplevel of the shared namespace. A user's personal storage hierarchy will be a child of their Inbox.

  davnotificationsprefix

Default: #notifications

The prefix for the DAV notifications hierarchy. The hierarchy delimiter will be automatically appended. The public notifications hierarchy will be at the toplevel of the shared namespace. A user's personal notifications hierarchy will be a child of their Inbox.

  debug

Default: 0

If enabled, allow syslog() to pass LOG_DEBUG messages.

This can be toggled for a running process by sending it SIGUSR1.

  debug_command

Default: <none>

Debug command to be used by processes started with -D option. The string is a C format string that gets 3 options: the first is the name of the executable (as specified in the cmd parameter in cyrus.conf). The second is the pid (integer) and the third is the service ID.

Example: /usr/local/bin/gdb /usr/cyrus/bin/%s %d

  debug_log_sync_partition_choice

Default: 0

If enabled, replication will log which partition it chose for staging. This is mainly useful for regression testing the sync_client -a switch.

  debug_slowio

Default: 0

If enabled, I/O operations will be artificially slowed down. This option has no effect unless Cyrus was compiled with the --enable-debug-slowio configure argument. This is mainly useful for testing certain edge case handling.

  debug_writefail_guid

Default: <none>

If set, any arriving message with this guid will fail as if the underlying disk write had failed, pretending to be a disk full condition. This is mainly useful for regression testing certain edge case handling. Currently only implemented for replication uploads.

  defaultacl

Default: anyone lrs

The Access Control List (ACL) placed on a newly-created (non-user) mailbox that does not have a parent mailbox.

  defaultdomain

Default: internal

The default domain for virtual domain support.

  defaultpartition

Default: <none>

The partition name used by default for new mailboxes. If not specified, the partition with the most free space will be used for new mailboxes.

Note that the partition specified by this option must also be specified as partition-name, where you substitute 'name' for the alphanumeric string you set defaultpartition to.

  defaultsearchtier

Default: <empty string>

Name of the default tier that messages will be indexed to. Search indexes can be organized in tiers to allow index storage in different directories and physical media. See squatter(8) <#std-cyrusman-squatter-8> for details. The default search tier also requires the definition of an according searchpartition-name entry.

This option MUST be specified for xapian search.

  defaultserver

Default: <none>

The backend server name used by default for new mailboxes. If not specified, the server with the most free space will be used for new mailboxes.

  delete_mode

Default: delayed

The manner in which mailboxes are deleted. In the default delayed mode, mailboxes that are being deleted are renamed to a special mailbox hierarchy under the deletedprefix, to be removed later by cyr_expire(8) <#std-cyrusman-cyr_expire-8>.

In immediate mode, the mailbox is removed from the filesystem immediately.

Allowed values: immediate, delayed

  delete_unsubscribe

Default: 0

Whether to also unsubscribe from mailboxes when they are deleted. Note that this behaviour contravenes RFC 3501 <https://datatracker.ietf.org/doc/html/rfc3501.html> section 6.3.9, but may be useful for avoiding user/client software confusion.

  deletedprefix

Default: DELETED

With delete_mode set to delayed, the deletedprefix setting defines the prefix for the hierarchy of deleted mailboxes.

The hierarchy delimiter will be automatically appended.

  deleteright

Default: c

Deprecated - only used for backwards compatibility with existing installations. Lists the old RFC 2086 <https://datatracker.ietf.org/doc/html/rfc2086.html> right which was used to grant the user the ability to delete a mailbox. If a user has this right, they will automatically be given the new 'x' right.

  disable_shared_namespace

Default: 0

Preclude list command on shared namespace. If set to 'yes', the LIST response will never include any non-user mailboxes. Admin users will always see all mailboxes.

  disable_user_namespace

Default: 0

Preclude list command on user namespace. If set to 'yes', the LIST response will never include any other user's mailbox. Admin users will always see all mailboxes.

  disconnect_on_vanished_mailbox

Default: 0

If enabled, IMAP/POP3/NNTP clients will be disconnected by the server if the currently selected mailbox is (re)moved by another session. Otherwise, the missing mailbox is treated as empty while in use by the client.

  duplicate_db

Default: twoskip

The cyrusdb backend to use for the duplicate delivery suppression and sieve.

Allowed values: skiplist, sql, twom, twoskip

  duplicate_db_path

Default: <none>

The absolute path to the duplicate db file. If not specified, will be configdirectory/deliver.db

  duplicatesuppression

Default: 1

If enabled, lmtpd will suppress delivery of a message to a mailbox if a message with the same message-id (or resent-message-id) is recorded as having already been delivered to the mailbox. Records the mailbox and message-id/resent-message-id of all successful deliveries.

  event_content_inclusion_mode

Default: standard

The mode in which message content may be included with MessageAppend and MessageNew. "standard" mode is the default behavior in which message is included up to a size with the notification. In "message" mode, the message is included and may be truncated to a size. In "header" mode, it includes headers truncated to a size. In "body" mode, it includes body truncated to a size. In "headerbody" mode, it includes full headers and body truncated to a size.

Allowed values: standard, message, header, body, headerbody

  event_content_size

Default: 0

Truncate the message content that may be included with MessageAppend and MessageNew. Set 0 to include the entire message itself.

If no unit is specified, bytes is assumed.

  event_exclude_flags

Default: <none>

Don't send event notification for given IMAP flag(s).

  event_exclude_specialuse

Default: \Junk

Don't send event notification for folder with given special-use attributes. Set ALL for any folder.

  event_extra_params

Default: timestamp

Space-separated list of extra parameters to add to any appropriated event.

Allowed values: bodyStructure, clientAddress, diskUsed, flagNames, messageContent, messageSize, messages, modseq, service, timestamp, uidnext, vnd.cmu.midset, vnd.cmu.unseenMessages, vnd.cmu.envelope, vnd.cmu.sessionId, vnd.cmu.mailboxACL, vnd.cmu.mbtype, vnd.cmu.davFilename, vnd.cmu.davUid, vnd.fastmail.clientId, vnd.fastmail.sessionId, vnd.fastmail.convExists, vnd.fastmail.convUnseen, vnd.fastmail.cid, vnd.fastmail.counters, vnd.fastmail.jmapEmail, vnd.fastmail.jmapStates, vnd.cmu.emailid, vnd.cmu.threadid, vnd.cmu.visibleUsers, vnd.fastmail.traceId

  event_groups

Default: message mailbox

Space-separated list of groups of related events to turn on notification.

Allowed values: message, quota, flags, access, mailbox, subscription, calendar, applepushservice, jmap

  event_notifier

Default: <none>

notifyd(8) <#std-cyrusman-notifyd-8> method to use for "EVENT" notifications which are based on the RFC 5423 <https://datatracker.ietf.org/doc/html/rfc5423.html>. If not set, "EVENT" notifications are disabled.

  expire_by_savedate

Default: 0

If true, calculate age of messages for expiry by the savedate (timestamp when the message was added to this folder) rather than gmtime (date header on the message). Default is true.

  expire_keep_flagged

Default: 0

If true, don't expire messages which have the `Flagged` IMAP flag set. Default is false.

  expunge_mode

Default: delayed

The mode in which messages (and their corresponding cache entries) are expunged. "semidelayed" mode is the old behavior in which the message files are purged at the time of the EXPUNGE, but index and cache records are retained to facilitate QRESYNC. In "delayed" mode, which is the default since Cyrus 2.5.0, the message files are also retained, allowing unexpunge to rescue them. In "immediate" mode, both the message files and the index records are removed as soon as possible. In all cases, nothing will be finally purged until all other processes have closed the mailbox to ensure they never see data disappear under them. In "semidelayed" or "delayed" mode, a later run of "cyr_expire" will clean out the retained records (and possibly message files). This reduces the amount of I/O that takes place at the time of EXPUNGE and should result in greater responsiveness for the client, especially when expunging a large number of messages.

Allowed values: immediate, semidelayed, delayed

  failedloginpause

Default: 3s

Time to pause after a failed login.

If no unit is specified, seconds is assumed.

  fastmailsharing

Default: 0

If enabled, use FastMail style sharing (oldschool full server paths).

  fatals_abort

Default: 0

If enabled, when fatal errors are detected, Cyrus will call abort() to produce a core dump, unless the error was due to a misbehaving client. This is useful if you have the ability to debug a core dump.

If not enabled (the default), the process will exit normally with an error code.

  flushseenstate

Default: 1

Deprecated. No longer used.

  foolstupidclients

Default: 0

If enabled, only list the personal namespace when a LIST "*" is performed (it changes the request to a LIST "INBOX*").

  force_sasl_client_mech

Default: <none>

Force preference of a given SASL mechanism for client side operations (e.g. murder environments). This is separate from (and overridden by) the ability to use the <host shortname>_mechs option to set preferred mechanisms for a specific host.

  fulldirhash

Default: 0

If enabled, uses an improved directory hashing scheme which hashes on the entire username instead of using just the first letter as the hash. This changes hash algorithm used for quota and user directories and if hashimapspool is enabled, the entire mail spool.

Note that this option CANNOT be changed on a live system. The server must be quiesced and then the directories moved with the rehash(8) <#std-cyrusman-rehash-8> utility.

  generate_compiled_sieve_script

Default: 0

Deprecated in favour of autocreate_sieve_script_compile.

  global_lock

Default: 1

Use a global shared lock for ALL writes, allowing the global lock wrapper tool to freeze the world

  hashimapspool

Default: 0

If enabled, the partitions will also be hashed, in addition to the hashing done on configuration directories. This is recommended if one partition has a very bushy mailbox tree.

  hostname_mechs

Default: <none>

Force a particular list of SASL mechanisms to be used when authenticating to the backend server hostname (where hostname is the short hostname of the server in question). If it is not specified it will query the server for available mechanisms and pick one to use. - Cyrus Murder

  hostname_password

Default: <none>

The password to use for authentication to the backend server hostname (where hostname is the short hostname of the server) - Cyrus Murder

  http_h2_altsvc

Default: <none>

If set, HTTP/2 (over TLS) will be advertised as being available on the specified [host]:port.

  http_jwt_key_dir

Default: <none>

The absolute path to a directory containing one or more key files to authenticate JSON Web Tokens (RFC 7519 <https://datatracker.ietf.org/doc/html/rfc7519.html>) for HTTP connections. Keys for the following JWS algorithms are supported: "HS256", "HS384", "HS512", "RS256", "RS384", "RS512".

A key file consists of one or more keys encoded in PEM format. RSA keys must be embedded between the lines "-----BEGIN PUBLIC KEY-----" and "-----END PUBLIC KEY-----"

HMAC digest keys must be embedded between the lines "-----BEGIN HMAC KEY-----" and "-----END HMAC KEY-----", encoded in base64.

Any lines before or after a PEM key definition are ignored, empty lines are ignored anywhere in the file.

The JSON Web Token must be the value of the HTTP "Authorization" header, using the "Bearer" authentication scheme. The JWS Header must include the "alg" and "typ" parameter. A header with any other parameter is rejected. The JWS Payload must include the "sub" claim with the Cyrus user identifier as value. It may include the "iat" claim (see http_jwt_max_age). A payload with any other claim is rejected.

  http_jwt_max_age

Default: 0s

Defines the timespan in which a JSON Web Token is valid (see http_jwt_key_dir). The value must be zero or positive.

If non-zero, the timespan starts at the point in time specified in the "iat" claim of the JWS Payload and ends after the duration of this option value has passed. Tokens without an "iat" claim, or with an issue date in the future, are rejected. There is no leeway for clock skew. Starting from Cyrus version 3.8, the "iat" claim only is validated if no "exp" claim is present.

The zero value disables validation of the "iat" JWS claim.

Starting from Cyrus 3.8, the "nbf" and "exp" claims always are validated.

If no unit is specified, seconds is assumed.

  httpallowcompress

Default: 1

If enabled, the server will compress response payloads if the client indicates that it can accept them. Note that the compressed data will appear in telemetry logs, leaving only the response headers as human-readable.

  httpallowcors

Default: <none>

A wildmat pattern specifying a list of origin URIs ( scheme "://" host [ ":" port ] ) that are allowed to make Cross-Origin Resource Sharing (CORS) requests on the server. By default, CORS requests are disabled.

Note that the scheme and host should both be lowercase, the port should be omitted if using the default for the scheme (80 for http, 443 for https), and there should be no trailing '/' (e.g.: "<http://www.example.com:8080>", "<https://example.org>").

  httpallowedurls

Default: <none>

Space-separated list of relative URLs (paths) rooted at httpdocroot to be served by httpd. If set, this option will limit served static content to only those paths specified (returning "404 Not Found" to any other client requested URLs). Otherwise, httpd will serve any content found in httpdocroot.

Note that any path specified by rss_feedlist_template is an exception to this rule.

  httpallowtrace

Default: 0

Allow use of the TRACE method.

Note that sensitive data might be disclosed by the response.

  httpcontentmd5

Default: 0

If enabled, HTTP responses will include a Content-MD5 header for the purpose of providing an end-to-end message integrity check (MIC) of the payload body. Note that enabling this option will use additional CPU to generate the MD5 digest, which may be ignored by clients anyways.

  httpdocroot

Default: <none>

If set, http will serve the static content (html/text/jpeg/gif files, etc) rooted at this directory. Otherwise, httpd will not serve any static content.

  httpkeepalive

Default: 20s

Set the length of the HTTP server's keepalive heartbeat. The default is 20 seconds. The minimum value is 0, which will disable the keepalive heartbeat. When enabled, if a request takes longer than httpkeepalive to process, the server will send the client provisional responses every httpkeepalive until the final response can be sent.

If no unit is specified, seconds is assumed.

  httplogheaders

Default: <none>

Space-separated list of HTTP header fields that will be included in the requests logged by httpd(8) <#std-cyrusman-httpd-8>.

  httpmodules

Default: <empty string>

Space-separated list of HTTP modules that will be enabled in httpd(8) <#std-cyrusman-httpd-8>. This option has no effect on modules that are disabled at compile time due to missing dependencies (e.g. libical).

Note that "domainkey" depends on "ischedule" being enabled, and that both "freebusy" and "ischedule" depend on "caldav" being enabled.

The "convert" module is experimental and is not meant for production use.

Allowed values: admin, caldav, carddav, convert, cgi, domainkey, freebusy, ischedule, jmap, prometheus, rss, tzdist, webdav

  httpprettytelemetry

Default: 0

If enabled, HTTP response payloads including server-generated markup languages (HTML, XML) will utilize line breaks and indentation to promote better human-readability in telemetry logs. Note that enabling this option will increase the amount of data sent across the wire.

  httppts_uri

Default: <none>

The URL endpoint to use when for querying group membership, in URI Template (level 1) format [RFC 6570 <https://datatracker.ietf.org/doc/html/rfc6570.html>]. The URL MUST contain a variable called "groupId"

  httptimeout

Default: 5m

Set the length of the HTTP server's inactivity autologout timer. The minimum value is 0, which will disable persistent connections.

For backward compatibility, if no unit is specified, minutes is assumed.

  icalendar_max_size

Default: 0

Maximum allowed iCalendar size. CalDAV and JMAP will reject storage of resources whose iCalendar representation is larger than this.

If set to 0 (the default), a large internally-defined limit will be applied.

If no unit is specified, bytes is assumed.

  idlesocket

Default: {configdirectory}/socket/idle

Unix domain socket that idled listens on.

  ignorereference

Default: 0

For backwards compatibility with Cyrus 1.5.10 and earlier -- ignore the reference argument in LIST or LSUB commands.

  imap_inprogress_interval

Default: 10s

The interval after which the server will send an "INPROGRESS" response code to the client during a long-running imap command (e.g. search, copy). The default is 10 seconds. The minimum value is 0, which will disable "INPROGRESS" response codes.

If no unit is specified, seconds is assumed.

  imapidlepoll

Default: 60s

The interval for polling for mailbox changes and ALERTs while running the IDLE command. This option is used when idled is not enabled or cannot be contacted. The minimum value is 1 second. A value of 0 will disable IDLE.

If no unit is specified, seconds is assumed.

  imapidletimeout

Default: <none>

Timeout for idling clients (RFC 2177 <https://datatracker.ietf.org/doc/html/rfc2177.html>). If not set (the default), the value of timeout will be used instead.

For backward compatibility, if no unit is specified, minutes is assumed.

  imapidresponse

Default: 1

If enabled, the server responds to an ID command with a parameter list containing: version, vendor, support-url, os, os-version, command, arguments, environment. Otherwise the server returns NIL.

  imapmagicplus

Default: 0

Only list a restricted set of mailboxes via IMAP by using userid+namespace syntax as the authentication/authorization id. Using userid+ (with an empty namespace) will list only subscribed mailboxes.

  imipnotifier

Default: <none>

notifyd(8) <#std-cyrusman-notifyd-8> method to use for "IMIP" notifications which are based on the RFC 6047 <https://datatracker.ietf.org/doc/html/rfc6047.html>. If not set, "IMIP" notifications are disabled.

  implicit_owner_rights

Default: lkxan

The implicit Access Control List (ACL) for the owner of a mailbox.

  improved_mboxlist_sort

Default: 0

Deprecated. No longer used.

  iolog

Default: 0

Should cyrus output I/O log entries.

  ischedule_dkim_domain

Default: <none>

The domain to be reported as doing iSchedule DKIM signing.

  ischedule_dkim_key_file

Default: <none>

File containing the private key for iSchedule DKIM signing.

  ischedule_dkim_required

Default: 1

A DKIM signature is required on received iSchedule requests.

  ischedule_dkim_selector

Default: <none>

Name of the selector subdividing the domain namespace. This specifies the actual key used for iSchedule DKIM signing within the domain.

  jmap_emailsearch_db_path

Default: <none>

The absolute path to the JMAP email search cache file. If not specified, JMAP Email/query and Email/queryChanges will not cache email search results.

Deprecated. No longer used.

  jmap_imagesize_annot

Default: <none>

The name of the per-message annotation, if any, that stores a JSON object, mapping message part numbers of MIME image types to an array of their image dimensions. The array must have at least two entries, where the first entry denotes the width and the second entry the height of the image. Any additional values are ignored.

For example, if message part 1.2 contains an image of width 300 and height 200, then the value of this annotation would be:

{ "1.2" : [ 300, 200 ] }

  jmap_inlinedcids_annot

Default: <none>

The name of the per-message annotation, if any, that stores a JSON object, mapping RFC 2392 <https://datatracker.ietf.org/doc/html/rfc2392.html> Content-IDs referenced in HTML bodies to the respective HTML body part number.

For example, if message part 1.2 contains HTML and references an inlined image at "<cid:foo>", then the value of this annotation would be:

{ "<foo>" : "1.2" }

Note that the Content-ID key must be URL-unescaped and enclosed in angular brackets, as defined in RFC 2392 <https://datatracker.ietf.org/doc/html/rfc2392.html>.

  jmap_mail_max_size_attachments_per_email

Default: 10M

The value to return for the maxSizeAttachmentsPerEmail property of the JMAP "<urn:ietf:params:jmap:mail>" capabilities object. The Cyrus JMAP implementation does not enforce this size limit.

For backward compatibility, if no unit is specified, kibibytes is assumed.

  jmap_max_calendareventnotifs

Default: 200

The maximum count of CalendarEventNotification objects to keep per account. Any notifications exceeding this count are expunged to make room for new ones. Zero or any negative number disables this limit.

  jmap_max_calls_in_request

Default: 50

The maximum number of calls per JMAP request object. Returned as the maxCallsInRequest property value of the JMAP "<urn:ietf:params:jmap:core>" capabilities object.

  jmap_max_catenate_items

Default: 100

The maximum number of items that can be catenated together by a JMAP Blob/upload action. Returned as the maxDataSources property value of the JMAP "<urn:ietf:params:jmap:blob>" capabilities object. Default value is 100.

  jmap_max_concurrent_requests

Default: 5

The value to return for the maxConcurrentRequests property of the JMAP "<urn:ietf:params:jmap:core>" capabilities object. The Cyrus JMAP implementation does not enforce this rate-limit.

  jmap_max_concurrent_upload

Default: 5

The value to return for the maxConcurrentUpload property of the JMAP "<urn:ietf:params:jmap:core>" capabilities object. The Cyrus JMAP implementation does not enforce this rate-limit.

  jmap_max_delayed_send

Default: 512d

The value to return for the maxDelayedSend property of the JMAP "<urn:ietf:params:jmap:emailsubmission>" capabilities object. The Cyrus JMAP implementation does not enforce this limit.

If no unit is specified, seconds is assumed.

  jmap_max_objects_in_get

Default: 4096

The maximum number of ids that a JMAP client may request in a single "/get" type method call. The actual number of returned objects in the response may exceed this number if the JMAP object type supports unbounded "/get" calls. Returned as the maxObjectsInGet property value of the JMAP "<urn:ietf:params:jmap:core>" capabilities object.

  jmap_max_objects_in_set

Default: 4096

The maximum number of objects a JMAP client may send to create, update or destroy in a single /set type method call. Returned as the maxObjectsInSet property value of the JMAP "<urn:ietf:params:jmap:core>" capabilities object.

  jmap_max_size_blob_set

Default: 4M

The maximum size that the JMAP API accepts for Blob/upload. Returned as the maxSizeBlobSet property value of the JMAP "<urn:ietf:params:jmap:blob>" capabilities object.

For backward compatibility, if no unit is specified, kibibytes is assumed.

  jmap_max_size_request

Default: 10M

The maximum size that the JMAP API accepts for requests at the API endpoint. Returned as the maxSizeRequest property value of the JMAP "<urn:ietf:params:jmap:core>" capabilities object.

For backward compatibility, if no unit is specified, kibibytes is assumed.

  jmap_max_size_upload

Default: 1G

The maximum size that the JMAP API accepts for blob uploads. Returned as the maxSizeUpload property value of the JMAP "<urn:ietf:params:jmap:core>" capabilities object.

For backward compatibility, if no unit is specified, kibibytes is assumed.

  jmap_nonstandard_extensions

Default: 0

If enabled, support non-standard JMAP extensions. If not enabled, only IETF standard JMAP functionality is supported.

  jmap_preview_annot

Default: <none>

The name of the per-message annotation, if any, to store message previews.

  jmap_preview_length

Default: 64B

The maximum length of dynamically generated message previews. Previews stored in jmap_preview_annot take precedence.

If no unit is specified, bytes is assumed.

  jmap_pushpoll

Default: 60s

The interval for polling for changes on an EventSource connection or when push has been ennabled on a WebSocket channel. The minimum value is 1 second. A value of 0 will disable push.

If no unit is specified, seconds is assumed.

  jmap_querycache_max_age

Default: 0m

The duration after which unused cached JMAP query results must be evicted from process memory. If non-zero, then the full result of the last query (before windowing) is stored in-memory. Subsequent queries with the same expression and query state can then page through the cached result. A zero value disables query result caching.

This feature currently only is enabled for Email/query.

For backward compatibility, if no unit is specified, minutes is assumed.

  jmap_set_has_attachment

Default: 1

If enabled, the $hasAttachment flag is determined and set for new messages created with the JMAP Email/set or Email/import methods. This option should typically be enabled, but installations using Cyrus-external message annatotors to determine the $hasAttachment flag might want to disable it.

  jmap_vacation

Default: 1

If enabled, support the JMAP vacation extension.

  jmapaccess_url

Default: <none>

The JMAP Session URL to advertise to sucessfully authenticated IMAP clients, if the same credentials can be used to authenticate via JMAP (see draft-ietf-extra-jmapaccess).

  jmapnotificationfolder

Default: #jmapnotification

The name of the folder for JMAP notifications.

  jmappushsubscriptionfolder

Default: #jmappushsubscription

The name of the folder for JMAP Push Subscriptions.

  jmapsubmission_deleteonsend

Default: 1

If enabled (the default) then delete the EmailSubmission as soon as the email has been sent.

  jmapsubmissionfolder

Default: #jmapsubmission

The name of the folder for JMAP Submissions.

  jmapuploadfolder

Default: #jmap

The name of the folder for JMAP uploads.

  ldap_authz

Default: <none>

SASL authorization ID for the LDAP server.

  ldap_base

Default: <empty string>

Contains the LDAP base dn for the LDAP ptloader module.

  ldap_bind_dn

Default: <none>

Bind DN for the connection to the LDAP server (simple bind). Do not use for anonymous simple binds.

  ldap_ca_dir

Default: <none>

Path to a directory with CA (Certificate Authority) certificates.

  ldap_ca_file

Default: <none>

Path to a file containing CA (Certificate Authority) certificate(s).

  ldap_ciphers

Default: <none>

List of SSL/TLS ciphers to allow. The format of the string is described in ciphers(1).

  ldap_client_cert

Default: <none>

File containing the client certificate.

  ldap_client_key

Default: <none>

File containing the private client key.

  ldap_deref

Default: never

Specify how aliases dereferencing is handled during search.

Allowed values: search, find, always, never

  ldap_domain_base_dn

Default: <empty string>

Base DN to search for domain name spaces.

  ldap_domain_filter

Default: (&(objectclass=domainrelatedobject)(associateddomain=%s))

Filter to use searching for domains.

  ldap_domain_name_attribute

Default: associateddomain

The attribute name for domains.

  ldap_domain_result_attribute

Default: inetdomainbasedn

Result attribute

  ldap_domain_scope

Default: sub

Search scope

Allowed values: sub, one, base

  ldap_filter

Default: (uid=%u)

Specify a filter that searches user identifiers. The following tokens can be used in the filter string:

%%  %

%u  user

%U  user portion of %u (%U = test when %u = <test@domain.tld>)

%d  domain portion of %u if available (%d = domain.tld when %u = <test@domain.tld>), otherwise same as %R

%R  domain portion of %u starting with @ (%R = @domain.tld when %u = <test@domain.tld>)

%D  user dn (use when ldap_member_method is set to filter)

%1-9
    domain tokens (%1 = tld, %2 = domain when %d = domain.tld)

    ldap_filter is not used when ldap_sasl is enabled.

  ldap_group_base

Default: <empty string>

LDAP base dn for ldap_group_filter.

  ldap_group_filter

Default: (cn=%u)

Specify a filter that searches for group identifiers. See ldap_filter for more options.

  ldap_group_scope

Default: sub

Specify search scope for ldap_group_filter.

Allowed values: sub, one, base

  ldap_groupmember_attribute

Default: member

Specify a field within groups with a list of members.

  ldap_id

Default: <none>

SASL authentication ID for the LDAP server

  ldap_mech

Default: <none>

SASL mechanism for LDAP authentication

  ldap_member_attribute

Default: <none>

Specify an attribute for ldap_member_method: attribute.

  ldap_member_base

Default: <empty string>

LDAP base dn for ldap_member_filter.

  ldap_member_filter

Default: (member=%D)

Specify a filter for ldap_member_method: filter.

  ldap_member_method

Default: attribute

Specify a group method.

The attribute method retrieves groups from a multi-valued attribute specified in ldap_member_attribute.

The filter method uses a filter specified by ldap_member_filter.

Allowed values: attribute, filter

  ldap_member_scope

Default: sub

Specify search scope for ldap_member_filter.

Allowed values: sub, one, base

  ldap_password

Default: <none>

Password for the connection to the LDAP server (SASL and simple bind). Do not use for anonymous simple binds.

  ldap_realm

Default: <none>

SASL realm for LDAP authentication

  ldap_referrals

Default: 0

Specify whether or not the client should follow referrals.

  ldap_restart

Default: 1

Specify whether or not LDAP I/O operations are automatically restarted if they abort prematurely.

  ldap_sasl

Default: 1

Use SASL for LDAP binds in the LDAP PTS module.

  ldap_sasl_authc

Default: <none>

Deprecated in favour of ldap_id.

  ldap_sasl_authz

Default: <none>

Deprecated in favour of ldap_authz.

  ldap_sasl_mech

Default: <none>

Deprecated in favour of ldap_mech.

  ldap_sasl_password

Default: <none>

Deprecated in favour of ldap_password.

  ldap_sasl_realm

Default: <none>

Deprecated in favour of ldap_realm.

  ldap_scope

Default: sub

Specify search scope.

Allowed values: sub, one, base

  ldap_servers

Default: <ldap://localhost/>

Deprecated in favour of ldap_uri.

  ldap_size_limit

Default: 1

Specify a number of entries for a search request to return.

  ldap_start_tls

Default: 0

Use transport layer security for <ldap://> using STARTTLS. Do not use ldaps:// in ldap_uri with this option enabled.

  ldap_time_limit

Default: 5s

How long to wait for a search request to complete.

If no unit is specified, seconds is assumed.

  ldap_timeout

Default: 5s

How long a search can take before timing out.

If no unit is specified, seconds is assumed.

  ldap_tls_cacert_dir

Default: <none>

Deprecated in favour of ldap_ca_dir.

  ldap_tls_cacert_file

Default: <none>

Deprecated in favour of ldap_ca_file.

  ldap_tls_cert

Default: <none>

Deprecated in favour of ldap_client_cert.

  ldap_tls_check_peer

Default: 0

Deprecated in favour of ldap_verify_peer.

  ldap_tls_ciphers

Default: <none>

Deprecated in favour of ldap_ciphers.

  ldap_tls_key

Default: <none>

Deprecated in favour of ldap_client_key.

  ldap_uri

Default: <none>

Contains a list of the URLs of all the LDAP servers when using the LDAP PTS module.

  ldap_user_attribute

Default: <none>

Specify LDAP attribute to use as canonical user id.

  ldap_verify_peer

Default: 0

Require and verify server certificate. If this option is yes, you must specify ldap_ca_file or ldap_ca_dir.

  ldap_version

Default: 3

Specify the LDAP protocol version. If ldap_start_tls and/or ldap_sasl are enabled, ldap_version will be automatically set to 3.

  literalminus

Default: 0

if enabled, CAPABILITIES will reply with LITERAL- rather than LITERAL+ (RFC 7888 <https://datatracker.ietf.org/doc/html/rfc7888.html>). Doesn't actually size-restrict uploads though.

  lmtp_catchall_mailbox

Default: <none>

Mail sent to mailboxes which do not exist, will be delivered to this user. NOTE: This must be an existing local user name with an INBOX, NOT an email address!

  lmtp_downcase_rcpt

Default: 1

If enabled, lmtpd will convert the recipient addresses to lowercase (up to a '+' character, if present).

  lmtp_exclude_specialuse

Default: \Snoozed

Don't allow delivery to folders with given special-use attributes.

Note that "snoozing" of emails can currently only be done via the JMAP protocol, so delivery directly to the Snoozed mailbox is prohibited by default as it will not be moved back into INBOX automatically.

  lmtp_fuzzy_mailbox_match

Default: 0

If enabled, and the mailbox specified in the detail part of the recipient (everything after the '+') does not exist, lmtpd will try to find the closest match (ignoring case, ignoring whitespace, falling back to parent) to the specified mailbox name.

  lmtp_over_quota_perm_failure

Default: 0

If enabled, lmtpd returns a permanent failure code when a user's mailbox is over quota. By default, the failure is temporary, causing the MTA to queue the message and retry later.

  lmtp_preparse

Default: 0

If enabled, lmtpd will map in the email and parse the xapian data for jmapsearch. The advantage is that the parsing is done without holding any locks. The disadvantage is that the parsing is done even if it winds up not being needed.

  lmtp_strict_quota

Default: 0

If enabled, lmtpd returns a failure code when the incoming message will cause the user's mailbox to exceed its quota. By default, the failure won't occur until the mailbox is already over quota.

  lmtp_strict_rfc2821

Default: 1

By default, lmtpd will be strict (per RFC 2821 <https://datatracker.ietf.org/doc/html/rfc2821.html>) with regards to which envelope addresses are allowed. If this option is set to false, 8bit characters in the local-part of envelope addresses are changed to 'X' instead. This is useful to avoid generating backscatter with certain MTAs like Postfix or Exim which accept such messages.

  lmtpsocket

Default: {configdirectory}/socket/lmtp

Unix domain socket that lmtpd listens on, used by deliver(8). This should match the path specified in cyrus.conf(5).

  lmtptxn_timeout

Default: 5m

Timeout used during a lmtp transaction to a remote backend (e.g. in a murder environment). Can be used to prevent hung lmtpds on proxy hosts when a backend server becomes unresponsive during a lmtp transaction. Change to zero for infinite.

If no unit is specified, seconds is assumed.

  lock_debugtime

Default: <none>

A floating point number of seconds. If set, time how long we wait for any lock, and syslog the filename and time if it's longer than this value. The default of NULL means not to time locks. This is implemented for fcntl(2) locks and has no effect on flock(2) locks.

  loginrealms

Default: <empty string>

The list of remote realms whose users may authenticate using cross-realm authentication identifiers. Separate each realm name by a space. (A cross-realm identity is considered any identity returned by SASL with an "@" in it.).

  loginuseacl

Default: 0

If enabled, any authentication identity which has a rights on a user's INBOX may log in as that user.

  logtimestamps

Default: 0

Include notations in the protocol telemetry logs indicating the number of seconds since the last command or response.

  mailbox_default_options

Default: 0

Default "options" field for the mailbox on create. You'll want to know what you're doing before setting this, but it can apply some default annotations like duplicate suppression.

  mailbox_initial_flags

Default: <none>

space-separated list of permanent flags which will be pre-set in every newly created mailbox. If you know you will require particular flag names then this avoids a possible race condition against a client that fills the entire 128 available slots. Default is NULL, which is no flags.

Example: $Label1 $Label2 $Label3 NotSpam Spam

  mailbox_legacy_dirs

Default: 0

If enabled, new mailboxes without parents will be created with legacy paths. sub mailboxes of users will still inherit the parent legacy setting.

  mailbox_maxmessages_addressbook

Default: 0

Limit the number of messages that may exist in a single mailbox of "addressbook" type. Default (0) means no limit. This limit applies after quotas are checked, so if you have both quota limits and this set, then you will be denied if you are either over quota or over this per-mailbox count.

  mailbox_maxmessages_calendar

Default: 0

Limit the number of messages that may exist in a single mailbox of "calendar" type. Default (0) means no limit. This limit applies after quotas are checked, so if you have both quota limits and this set, then you will be denied if you are either over quota or over this per-mailbox count.

  mailbox_maxmessages_email

Default: 0

Limit the number of messages that may exist in a single mailbox of "email" (normal) type. Default (0) means no limit. This limit applies after quotas are checked, so if you have both quota limits and this set, then you will be denied if you are either over quota or over this per-mailbox count.

  mailnotifier

Default: <none>

notifyd(8) <#std-cyrusman-notifyd-8> method to use for "MAIL" notifications. If not set, "MAIL" notifications are disabled.

  master_bind_errors_fatal

Default: 0

If enabled, failure to bind a port during startup is treated as a fatal error, causing master to shut down immediately. The default is to keep running, with the affected service disabled until the next SIGHUP causes it to retry.

Note that this only applies during startup. New services that fail to come up in response to a reconfig+SIGHUP will just be logged and disabled like the default behaviour, without causing master to exit.

  master_pid_file

Default: {configdirectory}/master.pid

The path to a file that master(8) will write its PID to when running as a daemon.

  master_ready_file

Default: {configdirectory}/master.ready

The path to a file that master(8) will update to indicate that it is ready to accept client connections. This file will be created if it does not already exist, or truncated if it does.

  maxargssize

Default: 0

Maximum total size of arguments to an IMAP command that will be accepted by Cyrus. Commands with arguments that exceed this limit will be rejected.

If set to 0 (the default), a large internally-defined limit will be applied.

If no unit is specified, bytes is assumed.

  maxheaderlines

Default: 1000

Maximum number of lines of header that will be processed into cache records. Default 1000. If set to zero, it is unlimited. If a message hits the limit, an error will be logged and the rest of the lines in the header will be skipped. This is to avoid malformed messages causing giant cache records.

  maxliteral

Default: 128K

Maximum size of a single literal allowed by the IMAP parser.

If set to 0, a large internally-defined limit will be applied.

Literals used for message [part] data in APPEND are only limited by the maxmessagesize option.

If the literalminus option is enabled, non-synchonizing literals will be limited to the lesser of 4K and either maxliteral or maxmessagesize, depending on the use-case.

If no unit is specified, bytes is assumed.

  maxlogins_per_host

Default: 0

Maximum number of logged in sessions allowed per service per host, zero means no limit.

  maxlogins_per_user

Default: 0

Maximum number of logged in sessions allowed per service per user, zero means no limit.

  maxmessagesize

Default: 0

Maximum size of messages that will be accepted by Cyrus. This affects LMTP deliveries, IMAP appends, DAV uploads, etc. Messages larger than this will be rejected.

If set to 0 (the default), a large internally-defined limit will be applied.

If no unit is specified, bytes is assumed.

  maxquoted

Default: 128K

Maximum size of a single quoted string allowed by the IMAP parser.

If set to 0, a large internally-defined limit will be applied.

If no unit is specified, bytes is assumed.

  maxword

Default: 128K

Maximum size of a single word allowed by the IMAP parser.

If set to 0, a large internally-defined limit will be applied.

If no unit is specified, bytes is assumed.

  mboxkey_db

Default: twoskip

The cyrusdb backend to use for mailbox keys.

Allowed values: skiplist, twom, twoskip

  mboxlist_db

Default: twoskip

The cyrusdb backend to use for the mailbox list.

Allowed values: flat, skiplist, sql, twom, twoskip

  mboxlist_db_path

Default: <none>

The absolute path to the mailboxes db file. If not specified will be configdirectory/mailboxes.db

  mboxname_lockpath

Default: <none>

Path to mailbox name lock files (default $conf/lock)

  mboxname_userpath

Default: <none>

Path to the parent directory of the user and domain directories. This defaults to 'configdir' if not specified. This option can be used (along with other related options) to place all persistent data outside the configdir, allowing it to be on ephemeral storage without using symlinks

  metapartition-name

Default: <none>

The pathname of the metadata partition name, corresponding to spool partition partition-name. For any mailbox residing in a directory on partition-name, the metadata files listed in metapartition_files will be stored in a corresponding directory on metapartition-name. Note that not every partition-name option is required to have a corresponding metapartition-name option, so that you can selectively choose which spool partitions will have separate metadata partitions.

  metapartition_files

Default: <empty string>

Space-separated list of metadata files to be stored on a metapartition rather than in the mailbox directory on a spool partition.

Allowed values: header, index, cache, expunge, squat, annotations, lock, dav, archivecache

  munge8bit

Default: 1

If enabled, lmtpd munges messages with 8-bit characters in the headers. The 8-bit characters are changed to `X'. If reject8bit is enabled, setting munge8bit has no effect. (A proper solution to non-ASCII characters in headers is offered by RFC 2047 <https://datatracker.ietf.org/doc/html/rfc2047.html> and its predecessors.)

  mupdate_authname

Default: <none>

The SASL username (Authentication Name) to use when authenticating to the mupdate server (if needed).

  mupdate_config

Default: standard

The configuration of the mupdate servers in the Cyrus Murder. The "standard" config is one in which there are discreet frontend (proxy) and backend servers. The "unified" config is one in which a server can be both a frontend and backend. The "replicated" config is one in which multiple backend servers all share the same mailspool, but each have their own "replicated" copy of mailboxes.db.

Allowed values: standard, unified, replicated

  mupdate_connections_max

Default: 128

The max number of connections that a mupdate process will allow, this is related to the number of file descriptors in the mupdate process. Beyond this number connections will be immediately issued a BYE response.

  mupdate_password

Default: <none>

The SASL password (if needed) to use when authenticating to the mupdate server.

  mupdate_port

Default: 3905

The port of the mupdate server for the Cyrus Murder.

  mupdate_realm

Default: <none>

The SASL realm (if needed) to use when authenticating to the mupdate server.

  mupdate_retry_delay

Default: 20

The base time to wait between connection retries to the mupdate server.

  mupdate_server

Default: <none>

The mupdate server for the Cyrus Murder.

  mupdate_username

Default: <empty string>

The SASL username (Authorization Name) to use when authenticating to the mupdate server.

  mupdate_workers_max

Default: 50

The maximum number of mupdate worker threads (overall).

  mupdate_workers_maxspare

Default: 10

The maximum number of idle mupdate worker threads.

  mupdate_workers_minspare

Default: 2

The minimum number of idle mupdate worker threads.

  mupdate_workers_start

Default: 5

The number of mupdate worker threads to start.

  netscapeurl

Default: <none>

If enabled at compile time, this specifies a URL to reply when Netscape asks the server where the mail administration HTTP server is. Administrators should set this to a local resource.

  newsaddheaders

Default: to

Space-separated list of headers to be added to incoming usenet articles. Added To: headers will contain email delivery addresses corresponding to each newsgroup in the Newsgroups: header. Added Reply-To: headers will contain email delivery addresses corresponding to each newsgroup in the Followup-To: or Newsgroups: header. If the specified header(s) already exist in an article, the email delivery addresses will be appended to the original header body(s).

This option applies if and only if the newspostuser option is set.

Allowed values: to, replyto

  newsgroups

Default: *

A wildmat pattern specifying which mailbox hierarchies should be treated as newsgroups. Only mailboxes matching the wildmat will accept and/or serve articles via NNTP. If not set, a default wildmat of "*" (ALL shared mailboxes) will be used. If the newsprefix option is also set, the default wildmat will be translated to "<newsprefix>.*"

  newsmaster

Default: news

Userid that is used for checking access controls when executing Usenet control messages. For instance, to allow articles to be automatically deleted by cancel messages, give the "news" user the 'd' right on the desired mailboxes. To allow newsgroups to be automatically created, deleted and renamed by the corresponding control messages, give the "news" user the 'c' right on the desired mailbox hierarchies.

  newspeer

Default: <none>

A list of whitespace-separated news server specifications to which articles should be fed. Each server specification is a string of the form [user[:pass]@]host[:port][/wildmat] where 'host' is the fully qualified hostname of the server, 'port' is the port on which the server is listening, 'user' and 'pass' are the authentication credentials and 'wildmat' is a pattern that specifies which groups should be fed. If no 'port' is specified, port 119 is used. If no 'wildmat' is specified, all groups are fed. If 'user' is specified (even if empty), then the NNTP POST command will be used to feed the article to the server, otherwise the IHAVE command will be used.

A '@' may be used in place of '!' in the wildmat to prevent feeding articles cross-posted to the given group, otherwise cross-posted articles are fed if any part of the wildmat matches. For example, the string "peer.example.com:*,!control.*,@local.*" would feed all groups except control messages and local groups to peer.example.com. In the case of cross-posting to local groups, these articles would not be fed.

  newspostuser

Default: <none>

Userid used to deliver usenet articles to newsgroup folders (usually via lmtp2nntp). For example, if set to "post", email sent to "post+comp.mail.imap" would be delivered to the "comp.mail.imap" folder.

When set, the Cyrus NNTP server will add the header(s) specified in the newsaddheaders option to each incoming usenet article. The added header(s) will contain email delivery addresses corresponding to each relevant newsgroup. If not set, no headers are added to usenet articles.

  newsprefix

Default: <none>

Prefix to be prepended to newsgroup names to make the corresponding IMAP mailbox names.

  newsrc_db_path

Default: <none>

The absolute path to the newsrc db file. If not specified, will be configdirectory/fetchnews.db

  nntptimeout

Default: 3m

Set the length of the NNTP server's inactivity autologout timer. The minimum value is 3 minutes, also the default.

For backward compatibility, if no unit is specified, minutes is assumed.

  notesmailbox

Default: <none>

The top level mailbox in each user's account which is used to store Apple-style Notes. Default is blank (disabled).

  notify_external

Default: <none>

Path to the external program that notifyd(8) will call to send mail notifications.

The external program will be called with the following command line options:

-c class

-p priority

-u user

-m mailbox

    And the notification message will be available on stdin.

  notifysocket

Default: {configdirectory}/socket/notify

Unix domain socket that the mail notification daemon listens on.

  object_storage_dummy_spool

Default: <none>

Deprecated. No longer used.

  object_storage_enabled

Default: 0

Deprecated. No longer used.

  openio_account

Default: <none>

Deprecated. No longer used.

  openio_autocreate

Default: 0

Deprecated. No longer used.

  openio_namespace

Default: <none>

Deprecated. No longer used.

  openio_proxy_timeout

Default: 5s

Deprecated. No longer used.

  openio_rawx_timeout

Default: 30s

Deprecated. No longer used.

  openio_verbosity

Default: <none>

Deprecated. No longer used.

  partition-name

Default: <none>

The pathname of the partition name. At least one partition pathname MUST be specified. If the defaultpartition option is used, then its pathname MUST be specified. For example, if the value of the defaultpartion option is part1, then the partition-part1 field is required.

  partition_select_exclude

Default: <none>

List of partitions to exclude from selection mode.

  partition_select_mode

Default: freespace-most

Partition selection mode.

random
    (pseudo-)random selection

freespace-most
    partition with the most free space (KiB)

freespace-percent-most
    partition with the most free space (%)

freespace-percent-weighted
    each partition is weighted according to its free space (%); the more free space the partition has, the more chances it has to be selected

freespace-percent-weighted-delta
    each partition is weighted according to its difference of free space (%) compared to the most used partition; the more the partition is lagging behind the most used partition, the more chances it has to be selected

    Note that actually even the most used partition has a few chances to be selected, and those chances increase when other partitions get closer

    Allowed values: random, freespace-most, freespace-percent-most, freespace-percent-weighted, freespace-percent-weighted-delta

  partition_select_soft_usage_limit

Default: 0

Limit of partition usage (%): if a partition is over that limit, it is automatically excluded from selection mode.

If all partitions are over that limit, this feature is not used anymore.

  partition_select_usage_reinit

Default: 0

For a given session, number of operations (e.g. partition selection) for which partitions usage data are cached.

  plaintextloginalert

Default: <none>

Message to send to client after a successful plaintext login.

  plaintextloginpause

Default: <none>

Time to pause after a successful plaintext login. For systems that support strong authentication, this permits users to perceive a cost of using plaintext passwords. (This does not affect the use of PLAIN in SASL authentications.)

If no unit is specified, seconds is assumed.

  popexpiretime

Default: -1

The duration advertised as being the minimum a message may be left on the POP server before it is deleted (via the CAPA command, defined in the POP3 Extension Mechanism, which some clients may support). This duration has a granularity of whole days, with partial days truncated (so e.g. "45m" is effectively "0d"). "NEVER", the default, may be specified with a negative number.

The Cyrus POP3 server never deletes mail, no matter what the value of this parameter is. However, if a site implements a less liberal policy, it needs to change this parameter accordingly.

For backward compatibility, if no unit is specified, days is assumed.

  popminpoll

Default: <none>

Set the minimum amount of time the server forces users to wait between successive POP logins.

For backward compatibility, if no unit is specified, minutes is assumed.

  poppollpadding

Default: 1

Create a softer minimum poll restriction. Allows poppollpadding connections before the minpoll restriction is triggered. Additionally, one padding entry is recovered every popminpoll minutes. This allows for the occasional polling rate faster than popminpoll, (i.e., for clients that require a send/receive to send mail) but still enforces the rate long-term. Default is 1 (disabled).

The easiest way to think of it is a queue of past connections, with one slot being filled for every connection, and one slot being cleared every popminpoll minutes. When the queue is full, the user will not be able to check mail again until a slot is cleared. If the user waits a sufficient amount of time, they will get back many or all of the slots.

  popsubfolders

Default: 0

Allow access to subfolders of INBOX via POP3 by using userid+subfolder syntax as the authentication/authorization id.

  poptimeout

Default: 10m

Set the length of the POP server's inactivity autologout timer. The minimum value is 10 minutes, the default.

For backward compatibility, if no unit is specified, minutes is assumed.

  popuseacl

Default: 0

Enforce IMAP ACLs in the pop server. Due to the nature of the POP3 protocol, the only rights which are used by the pop server are 'r', 't', and 's' for the owner of the mailbox. The 'r' right allows the user to open the mailbox and list/retrieve messages. The 't' right allows the user to delete messages. The 's' right allows messages retrieved by the user to have the \Seen flag set (only if popuseimapflags is also enabled).

  popuseimapflags

Default: 0

If enabled, the pop server will set and obey IMAP flags. Messages having the \Deleted flag are ignored as if they do not exist. Messages that are retrieved by the client will have the \Seen flag set. All messages will have the \Recent flag unset.

  postmaster

Default: postmaster

Username that is used as the 'From' address in rejection MDNs produced by sieve.

  postspec

Default: <none>

Deprecated. No longer used.

  postuser

Default: <empty string>

Userid used to deliver messages to shared folders. For example, if set to "bb", email sent to "bb+shared.blah" would be delivered to the "shared.blah" folder. By default, an email address of "+shared.blah" would be used.

  proc_path

Default: <none>

Path to proc directory. Default is NULL - must be an absolute path if specified. If not specified, the path $configdirectory/proc/ will be used.

  prometheus_enabled

Default: 0

Whether tracking of metrics for Prometheus is enabled.

  prometheus_master_update_freq

Default: <none>

Frequency in at which master should re-collate its statistics report. If not set, prometheus_service_update_freq is used.

If no unit is specified, seconds is assumed.

  prometheus_need_auth

Default: admin

Authentication level required to fetch Prometheus metrics.

Allowed values: none, user, admin

  prometheus_service_update_freq

Default: 10s

Frequency in at which promstatsd should re-collate its service statistics report. The minimum value is 1 second.

If no unit is specified, seconds is assumed.

  prometheus_stats_dir

Default: <none>

Directory to use for gathering prometheus statistics. If specified, must be an absolute path. If not specified, the default path $configdirectory/stats/ will be used. It may be advantageous to locate this directory on ephemeral storage.

  prometheus_update_freq

Default: 10s

Deprecated in favour of prometheus_service_update_freq, prometheus_master_update_freq, and prometheus_usage_update_freq.

If no unit is specified, seconds is assumed.

Deprecated in favour of prometheus_service_update_freq.

  prometheus_usage_update_freq

Default: <none>

Frequency in at which promstatsd should re-collate its usage statistics report. Note that this report is relatively expensive to produce. If not set, usage statistics are not reported.

Best to make this a multiple of prometheus_service_update_freq.

If no unit is specified, seconds is assumed.

  proxy_authname

Default: proxy

The authentication name to use when authenticating to a backend server in the Cyrus Murder.

  proxy_compress

Default: 0

Try to enable protocol-specific compression when performing a client connection to a backend server in the Cyrus Murder.

Note that this should only be necessary over slow network connections. Also note that currently only IMAP and MUPDATE support compression.

  proxy_password

Default: <none>

The default password to use when authenticating to a backend server in the Cyrus Murder. May be overridden on a host-specific basis using the hostname_password option.

  proxy_realm

Default: <none>

The authentication realm to use when authenticating to a backend server in the Cyrus Murder

  proxyd_allow_status_referral

Default: 0

Set to true to allow proxyd to issue referrals to clients that support it when answering the STATUS command. This is disabled by default since some clients issue many STATUS commands in a row, and do not cache the connections that these referrals would cause, thus resulting in a higher authentication load on the respective backend server.

  proxyd_disable_mailbox_referrals

Default: 0

Set to true to disable the use of mailbox-referrals on the proxy servers.

  proxyservers

Default: <none>

A list of users and groups that are allowed to proxy for other users, separated by spaces. Any user listed in this will be allowed to login for any other user: use with caution. In a standard murder this option should ONLY be set on backends. DO NOT SET on frontends or things won't work properly.

  ptloader_sock

Default: <none>

Unix domain socket that ptloader listens on.

(defaults to configdirectory/ptclient/ptsock).

  pts_module

Default: afskrb

The PTS module to use.

Allowed values: afskrb, ldap, http

  ptscache_db

Default: twoskip

The cyrusdb backend to use for the pts cache.

Allowed values: skiplist, twom, twoskip

  ptscache_db_path

Default: <none>

The absolute path to the ptscache db file. If not specified, will be configdirectory/ptscache.db

  ptscache_timeout

Default: 3h

The timeout for the PTS cache database when using the auth_krb_pts authorization method (default: 3 hours).

If no unit is specified, seconds is assumed.

  ptskrb5_convert524

Default: 1

When using the AFSKRB ptloader module with Kerberos 5 canonicalization, do the final 524 conversion to get a n AFS style name (using '.' instead of '/', and using short names.

  ptskrb5_strip_default_realm

Default: 1

When using the AFSKRB ptloader module with Kerberos 5 canonicalization, strip the default realm from the userid (this does not affect the stripping of realms specified by the afspts_localrealms option).

  qosmarking

Default: cs0

This specifies the Class Selector or Differentiated Services Code Point designation on IP headers (in the ToS field).

Allowed values: cs0, cs1, cs2, cs3, cs4, cs5, cs6, cs7, af11, af12, af13, af21, af22, af23, af31, af32, af33, af41, af42, af43, ef

  quota_db

Default: quotalegacy

The cyrusdb backend to use for quotas.

Allowed values: flat, skiplist, sql, quotalegacy, twom, twoskip

  quota_db_path

Default: <none>

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/

  quota_use_conversations

Default: 0

If conversations it enabled and quotaroot is a user folder, use the conversations quota counts, which count multiple copies of exactly the same message (by GUID) as only one.

  quotawarn

Default: 90

Deprecated in favour of quotawarnpercent.

  quotawarnkb

Default: <none>

Deprecated in favour of quotawarnsize.

  quotawarnmsg

Default: 0

The maximum amount of messages at which to give a quota warning (if this value is 0, or if the quota is smaller than this amount, then warnings are always given).

  quotawarnpercent

Default: 90

The percent of quota utilization over which the server generates warnings.

  quotawarnsize

Default: 0

The maximum amount of free space at which to give a quota warning (if this value is 0, or if the quota is smaller than this amount, then warnings are always given).

Note that quota has kibibyte granularity. Values specified here will be truncated to the nearest whole kibibyte.

For backward compatibility, if no unit is specified, kibibytes is assumed.

  readonly

Default: 0

If enabled, all IMAP, POP and JMAP connections are read-only, no writes allowed.

  reject8bit

Default: 0

If enabled, lmtpd rejects messages with 8-bit characters in the headers.

  replicaonly

Default: 0

If enabled, marks the server as only being a replica. This will stop calalarmd from doing anything, and also deny any non-silent writes (nothing is allowed to increase modseq or uidvalidity).

  restore_authname

Default: <none>

Deprecated. No longer used.

  restore_password

Default: <none>

Deprecated. No longer used.

  restore_realm

Default: <none>

Deprecated. No longer used.

  reverseacls

Default: 0

At startup time, ctl_cyrusdb -r will check this value and it will either add or remove reverse ACL pointers from mailboxes.db

  reverseuniqueids

Default: 1

Deprecated. No longer used.

  rfc2046_strict

Default: 0

If enabled, imapd will be strict (per RFC 2046 <https://datatracker.ietf.org/doc/html/rfc2046.html>) when matching MIME boundary strings. This means that boundaries containing other boundaries as substrings will be treated as identical. Since enabling this option will break some messages created by Eudora 5.1 (and earlier), it is recommended that it be left disabled unless there is good reason to do otherwise.

  rfc2047_utf8

Default: 0

If enabled, imapd will parse any non-encoded character sequence in MIME header values as UTF8. This is useful for installations that either advertise the UTF8SMTP (RFC 5335 <https://datatracker.ietf.org/doc/html/rfc5335.html>) extension or receive mails with improperly escaped UTF-8 byte sequences. It is recommended that this option is left disabled unless there is good reason to do otherwise.

  rfc3028_strict

Default: 1

If enabled, Sieve will be strict (per RFC 3028 <https://datatracker.ietf.org/doc/html/rfc3028.html>) with regards to which headers are allowed to be used in address and envelope tests. This means that only those headers which are defined to contain addresses will be allowed in address tests and only "to" and "from" will be allowed in envelope tests. When disabled, ANY grammatically correct header will be allowed.

  rss_feedlist_template

Default: <none>

File containing HTML that will be used as a template for displaying the list of available RSS feeds. A single instance of the variable %RSS_FEEDLIST% should appear in the file, which will be replaced by a nested unordered list of feeds. The toplevel unordered list will be tagged with an id of "feed" (<ul id='feed'>) which can be used by stylesheet(s) in your template. The dynamically created list of feeds based on the HTML template will be accessible at the "/rss" URL on the server.

  rss_feeds

Default: *

A wildmat pattern specifying which mailbox hierarchies should be treated as RSS feeds. Only mailboxes matching the wildmat will have their messages available via RSS. If not set, a default wildmat of "*" (ALL mailboxes) will be used.

  rss_maxage

Default: <none>

Maximum age of items to display in an RSS channel. If non-zero, httpd will only display items received within this time period. If set to 0, all available items will be displayed (the default).

For backward compatibility, if no unit is specified, days is assumed.

  rss_maxitems

Default: 0

Maximum number of items to display in an RSS channel. If non-zero, httpd will display no more than the rss_maxitems most recent items. If set to 0, all available items will be displayed (the default).

  rss_maxsynopsis

Default: 0

Maximum RSS item synopsis length. If non-zero, httpd will display no more than the first rss_maxsynopsis characters of an item's synopsis. If set to 0, the entire synopsis will be displayed (the default).

  rss_realm

Default: <none>

The realm to present for HTTP authentication of RSS feeds. If not set (the default), the value of the servername option will be used.

  sasl_auto_transition

Default: 0

If enabled, the SASL library will automatically create authentication secrets when given a plaintext password. See the SASL documentation.

  sasl_maximum_layer

Default: 256

Maximum SSF (security strength factor) that the server will allow a client to negotiate.

  sasl_minimum_layer

Default: 0

The minimum SSF that the server will allow a client to negotiate. A value of 1 requires integrity protection; any higher value requires some amount of encryption.

  sasl_option

Default: 0

Any SASL option can be set by preceding it with sasl_. This file overrides the SASL configuration file.

  sasl_pwcheck_method

Default: <none>

The mechanism used by the server to verify plaintext passwords. Possible values include "auxprop", "saslauthd", and "pwcheck".

  search_attachment_extractor_idle_timeout

Default: 5m

Defines the duration after which to close unused connections to the search attachment extractor service. If the idle timeout is less than search_attachment_extractor_request_timeout, then it is ignored and request timeout used instead.

If no unit is specified, seconds is assumed.

  search_attachment_extractor_request_timeout

Default: 5m

Defines the duration after which to cancel non-responding requests to the search attachment extractor service.

If no unit is specified, seconds is assumed.

  search_attachment_extractor_url

Default: <none>

A HTTP or HTTPS URL to extract search text from rich text attachments and other media during search indexing. The server at this URL must implement the following protocol:

1.  For each attachment of an email, Cyrus sends a GET request to the URL <extractor-url>/<cyrus-id>, where <extractor-url> is the configured URL and <cyrus-id> is a Cyrus-chosen path segment that uniquely identifies this attachment.

2.  If the extractor already has a cached plain text extract of the attachment identified by <cyrus-id> then it may return HTTP status code 200 (OK) and the plain text extract with a Content-Type "text/plain" header. Otherwise it must return HTTP status 404 (Not Found).

3.  If Cyrus receives the HTTP status code 404 (Not Found), then it sends a PUT request to the same URL as previously. The PUT request body contains the decoded, binary body of the attachment. The Content-Type request header has the same value as declared in the MIME part headers, including any type parameters.

4.  The extractor must return the plain text extract with either HTTP status 200 (OK) or 201 (Created) and a Content-Type "text/plain" header. If no text can be extracted, then the extractor may return any return code in the range 4xx, or 200 and an empty response body.

    Any other HTTP status code is treated as an error. For performance reasons, the Cyrus indexer attempts to keep-alive the TCP connection to the extractor. Xapian only.

  search_batchsize

Default: 20

The number of messages to be indexed in one batch (default 20). Note that long batches may delay user commands or mail delivery.

  search_engine

Default: none

The indexing engine used to speed up searching.

Allowed values: none, squat, xapian

  search_fuzzy_always

Default: 0

Whether to enable RFC 6203 <https://datatracker.ietf.org/doc/html/rfc6203.html> FUZZY search for all IMAP SEARCH. If turned on, search attributes will be searched using FUZZY search by default. If turned off, clients have to explicitly use the FUZZY search key to enable fuzzy search for regular SEARCH commands.

  search_index_headers

Default: 1

Whether to index headers other than From, To, Cc, Bcc, and Subject. Experiment shows that some headers such as Received and DKIM-Signature can contribute up to 2/3rds of the index size but almost nothing to the utility of searching. Note that if header indexing is disabled, headers can still be searched, the searches will just be slower.

  search_index_language

Default: 0

If enabled, then messages bodies are stemmed by detected language in addition to the default English stemmer. Xapian only.

  search_index_parts

Default: 0

Deprecated. No longer used.

  search_index_skip_domains

Default: <none>

A space separated list of domains - if set, any users in the listed domains will be skipped when indexing.

  search_index_skip_users

Default: <none>

A space separated list of usernames - if set, any users in the list will be skipped when indexing.

  search_indexed_db

Default: twoskip

The cyrusdb backend to use for the search latest indexed uid state. Xapian only.

Allowed values: flat, skiplist, twom, twoskip

  search_maxsize

Default: 4M

The maximum size to index for each message part. Message contents that occur after this byte offset will not be indexed nor used to generate search snippets. Xapian-only.

For backward compatibility, if no unit is specified, kibibytes is assumed.

  search_maxtime

Default: <none>

The maximum number of seconds to run a search for before aborting. Default of no value means search "forever" until other timeouts.

  search_normalisation_max

Default: 1000

A resource bound for the combinatorial explosion of search expression tree complexity caused by normalising expressions with many OR nodes. These can use more CPU time to optimise than they save IO time in scanning folders.

  search_query_language

Default: 0

Deprecated. No longer used.

  search_queryscan

Default: 5000

The minimum number of records require to do a direct scan of all G keys rather than indexed lookups. A value of 0 means always do indexed lookups.

  search_skipdiacrit

Default: 1

When searching, should diacriticals be stripped from the search terms. The default is "true", a search for "hav" will match "Håvard". This is not RFC 5051 <https://datatracker.ietf.org/doc/html/rfc5051.html> compliant, but is backwards compatible, and may be preferred by some sites.

  search_skiphtml

Default: 0

If enabled, HTML parts of messages are skipped, i.e. not indexed and not searchable. Otherwise, they're indexed.

  search_snippet_length

Default: 255

The maximum byte length of a snippet generated by the XSNIPPETS command. Only supported by the Xapian search backend, which attempts to always fill search_snippet_length bytes in the generated snippet.

  search_stopword_path

Default: <none>

The absolute base path to the search stopword lists. If not specified, no stopwords will be taken into account during search indexing. Currently, the only supported and default stop word file is english.txt.

  search_whitespace

Default: merge

When searching, how whitespace should be handled. Options are: "skip" (default in 2.3 and earlier series) - where a search for "equi" would match "the quick brown fox". "merge" - the default, where "he qu" would match "the quick brownfox", and "keep", where whitespace must match exactly. The default of "merge" is recommended for most cases - it's a good compromise which keeps words separate.

Allowed values: skip, merge, keep

  searchpartition-name

Default: <none>

The pathname where to store the xapian search indexes of searchtier for mailboxes of partition name. This must be configured for the defaultsearchtier and any additional search tier (see squatter(8) <#std-cyrusman-squatter-8> for details).

For example: if defaultpartition is defined as part1 and defaultsearchtier as tier1 then the configuration must contain an entry tier1searchpartition-part1 that defines the path where to store this tier1's search index for the part1 partition.

This option MUST be specified for xapian search.

  seenstate_db

Default: twoskip

The cyrusdb backend to use for the seen state.

Allowed values: flat, skiplist, twom, twoskip

  sendmail

Default: /usr/sbin/sendmail

The pathname of the sendmail executable. Sieve invokes sendmail for sending rejections, redirects and vacation responses.

  sendmail_auth_id

Default: CYRUS_SENDMAIL_AUTH_ID

The name of an environment variable to set when invoking sendmail. The value of this environment variable will contain the user id of the currently authenticated user. If no user is authenticated the environment variable is not set.

  serverinfo

Default: on

The server information to display in the greeting and capability responses. Information is displayed as follows:

off no server information in the greeting or capabilities

min servername in the greeting; no server information in the capabilities

on  servername and product version in the greeting; product version in the capabilities

    Allowed values: off, min, on

  serverlist

Default: <none>

Whitespace separated list of backend server names. Used for finding server with the most available free space for proxying CREATE.

  serverlist_select_mode

Default: freespace-most

Server selection mode.

random
    (pseudo-)random selection

freespace-most
    backend with the most (total) free space (KiB)

freespace-percent-most
    backend whose partition has the most free space (%)

freespace-percent-weighted
    same as for partition selection, comparing the free space (%) of the least used partition of each backend

freespace-percent-weighted-delta
    same as for partition selection, comparing the free space (%) of the least used partition of each backend.

    Allowed values: random, freespace-most, freespace-percent-most, freespace-percent-weighted, freespace-percent-weighted-delta

  serverlist_select_soft_usage_limit

Default: 0

Limit of backend usage (%): if a backend is over that limit, it is automatically excluded from selection mode.

If all backends are over that limit, this feature is not used anymore.

  serverlist_select_usage_reinit

Default: 0

For a given session, number of operations (e.g. backend selection) for which backend usage data are cached.

  servername

Default: <none>

This is the hostname visible in the greeting messages of the POP, IMAP and LMTP daemons. If it is unset, then the result returned from gethostname(2) is used. This is also the value used by murder clusters to identify the host name. It should be resolvable by DNS to the correct host, and unique within an active cluster. If you are using low level replication (e.g. drbd) then it should be the same on each copy and the DNS name should also be moved to the new master on failover.

  sharedprefix

Default: Shared Folders

If using the alternate IMAP namespace, the prefix for the shared namespace. The hierarchy delimiter will be automatically appended.

  sieve_allowreferrals

Default: 1

If enabled, timsieved will issue referrals to clients when the user's scripts reside on a remote server (in a Murder). Otherwise, timsieved will proxy traffic to the remote server.

  sieve_duplicate_max_expiration

Default: 90d

Maximum expiration time for duplicate message tracking records.

If no unit is specified, seconds is assumed.

  sieve_extensions

Default: fileinto reject vacation vacation-seconds notify include envelope environment body relational regex subaddress copy date index imap4flags mailbox mboxmetadata servermetadata variables editheader extlists duplicate ihave fcc special-use redirect-dsn redirect-deliverby mailboxid vnd.cyrus.log vnd.cyrus.jmapquery processcalendar snooze vnd.cyrus.implicit_keep_target vnd.cyrus.redirect-multiple

Space-separated list of Sieve extensions allowed to be used in sieve scripts. This option has no effect on options that are disabled at compile time (e.g., "regex").

Allowed values: fileinto, reject, vacation, vacation-seconds, notify, include, envelope, environment, body, relational, regex, subaddress, copy, date, index, imap4flags=imapflags, mailbox, mboxmetadata, servermetadata, variables, editheader, extlists, duplicate, ihave, fcc, special-use, redirect-dsn, redirect-deliverby, mailboxid, vnd.cyrus.log=x-cyrus-log, vnd.cyrus.jmapquery=x-cyrus-jmapquery, processcalendar=vnd.cyrus.imip, snooze=vnd.cyrus.snooze=x-cyrus-snooze, vnd.cyrus.implicit_keep_target, vnd.cyrus.redirect-multiple

  sieve_folder

Default: #sieve

The name of the folder for storing Sieve scripts.

  sieve_maxscripts

Default: 5

Maximum number of sieve scripts any user may have, enforced at submission by timsieved(8).

  sieve_maxscriptsize

Default: 32K

Maximum size any sieve script can be, enforced at submission by timsieved(8) and JMAP.

For backward compatibility, if no unit is specified, kibibytes is assumed.

  sieve_mdn_original_recipient_header

Default: original-recipient

The name of the header field in which the Sieve "reject" action can find the original recipient of the message.

  sieve_mdn_private

Default: 0

If true, the Final-Recipient header in the MDN generated by Sieve's "reject" action will be replaced with something that does not publicly identify the user.

  sieve_sasl_send_unsolicited_capability

Default: 1

Deprecated. No longer used.

  sieve_use_lmtp_reject

Default: 1

Enabled by default. If reject can be done via LMTP, then return a 550 rather than generating the bounce message in Cyrus.

  sieve_utf8fileinto

Default: 0

If enabled, the sieve engine expects folder names for the fileinto action in scripts to use UTF8 encoding. Otherwise, modified UTF7 encoding should be used.

  sieve_vacation_max_response

Default: 90d

Maximum time interval between consecutive vacation responses, per RFC 6131 <https://datatracker.ietf.org/doc/html/rfc6131.html>. The default is 90 days. The minimum is 7 days.

If no unit is specified, seconds is assumed.

  sieve_vacation_min_response

Default: 3d

Minimum time interval between consecutive vacation responses, per RFC 6131 <https://datatracker.ietf.org/doc/html/rfc6131.html>. The default is 3 days.

If no unit is specified, seconds is assumed.

  sievedir

Default: /var/sieve

If sieveusehomedir is false, this directory is searched for Sieve scripts.

  sievenotifier

Default: <none>

Notifyd(8) method to use for "SIEVE" notifications. If not set, "SIEVE" notifications are disabled.

This method is only used when no method is specified in the script.

  sieveusehomedir

Default: 0

If enabled, lmtpd will look for Sieve scripts in user's home directories: ~user/.sieve.

  singleinstancestore

Default: 1

If enabled, imapd, lmtpd and nntpd attempt to only write one copy of a message per partition and create hard links, resulting in a potentially large disk savings.

  skiplist_always_checkpoint

Default: 1

If enabled, this option forces the skiplist cyrusdb backend to always checkpoint when doing a recovery. This causes slightly more IO, but on the other hand leads to more efficient databases, and the entire file is already "hot".

  skiplist_unsafe

Default: 0

If enabled, this option forces the skiplist cyrusdb backend to not sync writes to the disk. Enabling this option is NOT RECOMMENDED.

  smtp_auth_authname

Default: <none>

The authentication name to use when authenticating to the SMTP server defined in smtp_host.

  smtp_auth_password

Default: <none>

The password to use when authenticating to the SMTP server defined in smtp_host.

  smtp_auth_realm

Default: <none>

The authentication SASL realm to use when authenticating to a SMTP server.

  smtp_backend

Default: sendmail

The SMTP backend to use for sending email.

The host backend sends message submissions via a TCP socket to the SMTP host defined in the config option smtp_host.

The sendmail backend forks the Cyrus process into the executable defined in the config option sendmail. The executable must accept "-bs" as command line argument, read from stdin and must implement the minimum SMTP protocol as defined in section 4.5.1 of RFC 5321 <https://datatracker.ietf.org/doc/html/rfc5321.html>.

If the SMTP EHLO command reports AUTH (RFC 4954 <https://datatracker.ietf.org/doc/html/rfc4954.html>) as a supported extension, then the MAIL FROM command includes the AUTH parameter, with its value set to the name of any authenticated user which triggered the email. The AUTH parameter is omitted if the user is unknown to the calling process.

If the directory configdirectory/log/smtpclient.smtp_backend exists, then telemetry logs for outgoing SMTP sessions will be created in this directory.

Allowed values: host, sendmail

  smtp_host

Default: localhost:587

The SMTP host to use for sending mail (also see the smtp_backend option). The value of this option must the name or IP address of a TCP host, followed optionally by a colon and the port or service to use. The default port is 587.

TLS may be activated by appending "/tls" to the value.

Authentication is enabled if smtp_auth_authname is set. Authentication can be explicitly disabled by appending "/noauth" to the host address.

  soft_noauth

Default: 1

If enabled, lmtpd returns temporary failures if the client does not successfully authenticate. Otherwise lmtpd returns permanent failures (causing the mail to bounce immediately).

  sortcache_db

Default: twoskip

Deprecated. No longer used.

  specialuse_extra

Default: <none>

Whitespace separated list of extra special-use attributes that can be set on a mailbox. RFC 6154 <https://datatracker.ietf.org/doc/html/rfc6154.html> currently lists what special-use attributes can be set. This allows extending that list in the future or adding your own if needed.

  specialuse_nochildren

Default: \Scheduled \Snooze

Whitespace separated list of special-use attributes that may not contain child folders. If set, mailboxes with any of these attributes may not have child folders created, and these attributes cannot be added to mailboxes that already have children.

  specialuse_protect

Default: \Archive \Drafts \Important \Junk \Sent \Scheduled \Snooze \Trash

Whitespace separated list of special-use attributes to protect the mailboxes for. If set, don't allow mailboxes with these special use attributes to be deleted or renamed to have a different parent. Default is the built-in list

  specialusealways

Default: 1

If enabled, this option causes unextended LIST and LSUB output to include the "special-use" flags.

  sql_database

Default: <none>

Name of the database which contains the cyrusdb table(s).

  sql_engine

Default: <none>

Name of the SQL engine to use.

Allowed values: mysql, pgsql, sqlite

  sql_hostnames

Default: <empty string>

Comma separated list of SQL servers (in host[:port] format).

  sql_passwd

Default: <none>

Password to use for authentication to the SQL server.

  sql_user

Default: <none>

Username to use for authentication to the SQL server.

  sql_usessl

Default: 0

If enabled, a secure connection will be made to the SQL server.

  srs_alwaysrewrite

Default: 0

If true, perform SRS rewriting for ALL forwarding, even when not required.

  srs_domain

Default: <none>

The domain to use in rewritten addresses. This must point only to machines which know the encoding secret used by this system. When present, SRS is enabled.

  srs_hashlength

Default: 0

The hash length to generate in a rewritten address.

  srs_secrets

Default: <none>

A list of secrets with which to generate addresses.

  srs_separator

Default: <none>

The separator to appear immediately after SRS[01] in rewritten addresses.

  srvtab

Default: <empty string>

Deprecated. No longer used.

  statuscache

Default: 0

Enable/disable the imap status cache.

  statuscache_db

Default: twoskip

The cyrusdb backend to use for the imap status cache.

Allowed values: skiplist, sql, twom, twoskip

  statuscache_db_path

Default: <none>

The absolute path to the statuscache db file. If not specified, will be configdirectory/statuscache.db

  submitservers

Default: <none>

A list of users and groups that are allowed to resolve "urlauth=submit+" IMAP URLs, separated by spaces. Any user listed in this will be allowed to fetch the contents of any valid "urlauth=submit+" IMAP URL: use with caution.

  subscription_db

Default: flat

The cyrusdb backend to use for the subscriptions list.

Allowed values: flat, skiplist, twom, twoskip

  suppress_capabilities

Default: <none>

Suppress the named capabilities from any capability response. Use the exact case as it appears in the response, e.g. "suppress_capabilities: ESEARCH QRESYNC WITHIN XLIST LIST-EXTENDED" if you have a murder with 2.3.x backends and don't want clients being confused by new capabilities that some backends don't support.

  sync_authname

Default: <none>

The authentication name to use when authenticating to a sync server. Prefix with a channel name to only apply for that channel.

  sync_batchsize

Default: 8192

the number of messages to upload in a single mailbox replication. Default is 8192. If there are more than this many messages appended to the mailbox, generate a synthetic partial state and send that.

  sync_cache_db

Default: twoskip

The cyrusdb backend to use for the replication cache.

Allowed values: skiplist, sql, twom, twoskip

  sync_cache_db_path

Default: <none>

The path for the replication cache. Prefix with a channel name to apply for that channel. NOTE, it's quite important to have a different one per backend!

  sync_host

Default: <none>

Name of the host (replica running sync_server(8)) to which replication actions will be sent by sync_client(8). Prefix with a channel name to only apply for that channel.

  sync_log

Default: 0

Enable replication action logging by lmtpd(8), imapd(8), pop3d(8), and nntpd(8). The log {configdirectory}/sync/log is used by sync_client(8) for "rolling" replication.

  sync_log_chain

Default: 0

Enable replication action logging by sync_server as well, allowing chaining of replicas. Use this on 'B' for A => B => C replication layout.

  sync_log_channels

Default: <none>

If specified, log all events to multiple log files in directories specified by each "channel". Each channel can then be processed separately, such as by multiple sync_client(8)s in a mesh replication scheme, or by squatter(8) for rolling search index updates.

You can use "" (the two-character string U+22 U+22) to mean the default sync channel.

  sync_log_unsuppressable_channels

Default: squatter

If specified, the named channels are exempt from the effect of setting sync_log_chain: off, i.e. they are always logged to by the sync_server process. This is only really useful to allow rolling search indexing on a replica.

  sync_password

Default: <none>

The default password to use when authenticating to a sync server. Prefix with a channel name to only apply for that channel.

  sync_port

Default: <none>

Name of the service (or port number) of the replication service on replica host. Prefix with a channel name to only apply for that channel. If not specified, and if sync_try_imap is set to "yes" (the default), then the replication client will first try "imap" (port 143) to check if imapd supports replication. Otherwise it will default to "csync" (usually port 2005).

  sync_realm

Default: <none>

The authentication realm to use when authenticating to a sync server. Prefix with a channel name to only apply for that channel.

  sync_reconnect_maxwait

Default: 20m

When sync_client cannot connect to the replica, it enters a retry loop with an exponential backoff between attempts. This option sets the upper limit on that exponential backoff: no matter how long the replica has been down so far, sync_client will never wait longer than sync_reconnect_maxwait between retries.

If this is zero or negative, the backoff duration will be allowed to increase indefinitely (not recommended).

If no unit is specified, seconds is assumed.

  sync_repeat_interval

Default: 1s

Minimum interval between replication runs in rolling replication mode. If a replication run takes longer than this time, we repeat immediately. Prefix with a channel name to only apply for that channel.

If no unit is specified, seconds is assumed.

  sync_rightnow_channel

Default: <none>

if set, run sync_client to this channel immediately. As with channels, set this value to '""' to sync the default channel!

  sync_shutdown_file

Default: <none>

Simple latch used to tell sync_client(8) that it should shut down at the next opportunity. Safer than sending signals to running processes. Prefix with a channel name to only apply for that channel.

  sync_timeout

Default: 30m

How long to wait for a response before returning a timeout failure when talking to a replication peer (client or server). The minimum duration is 3 seconds, the default is 30 minutes.

If no unit is specified, seconds is assumed.

  sync_try_imap

Default: 1

Whether sync_client should try to perform an IMAP connection before falling back to csync. If this is set to "no", sync_client will only use csync. Prefix with a channel name to apply only for that channel.

  syslog_facility

Default: <none>

Configure a syslog facility. The default is whatever is compiled in. Allowed values are: DAEMON, MAIL, NEWS, USER, and LOCAL0 through to LOCAL7

  syslog_prefix

Default: <none>

String to be prepended to the process name in syslog entries. Can be further overridden by setting the $CYRUS_SYSLOG_PREFIX environment variable.

Using the $CYRUS_SYSLOG_PREFIX environment variable has the additional advantage that it can be set before the imapd.conf is read, so errors while reading the config file can be syslogged with the correct prefix.

  tcp_keepalive

Default: 0

Enable keepalive on TCP connections.

  tcp_keepalive_cnt

Default: 0

Number of TCP keepalive probes to send before declaring the connection dead (0 == system default).

  tcp_keepalive_idle

Default: 0

How long a connection must be idle before keepalive probes are sent (0 == system default).

If no unit is specified, seconds is assumed.

  tcp_keepalive_intvl

Default: 0

Time between keepalive probes (0 == system default).

If no unit is specified, seconds is assumed.

  telemetry_bysessionid

Default: 0

If true, log by sessionid instead of PID for telemetry.

  temp_path

Default: /tmp

The pathname to store temporary files in. It is recommended to use an in-memory filesystem such as tmpfs for this path.

  timeout

Default: 32m

The length of the IMAP server's inactivity autologout timer. The minimum value is 30 minutes. The default is 32 minutes, to allow a bit of leeway for clients that try to NOOP every 30 minutes.

For backward compatibility, if no unit is specified, minutes is assumed.

  tls_ca_file

Default: <none>

Deprecated in favour of tls_client_ca_file.

  tls_ca_path

Default: <none>

Deprecated in favour of tls_client_ca_dir.

  tls_cert_file

Default: <none>

Deprecated in favour of tls_server_cert.

  tls_cipher_list

Default: DEFAULT

Deprecated in favour of tls_ciphers.

  tls_ciphers

Default: DEFAULT

The list of SSL/TLS ciphers to allow. The format of the string (and definition of "DEFAULT") is described in ciphers(1).

See also Mozilla's server-side TLS recommendations:

<https://wiki.mozilla.org/Security/Server_Side_TLS> .

  tls_client_ca_dir

Default: <none>

Path to a directory containing the CA certificates used to verify client SSL certificates used for authentication.

  tls_client_ca_file

Default: <none>

Path to a file containing the CA certificate(s) used to verify client SSL certificates used for authentication.

  tls_client_cert

Default: <none>

File containing the certificate presented to a server for authentication during STARTTLS. A value of "disabled" will disable this server's use of certificate-based authentication.

  tls_client_certs

Default: optional

Disable ("off"), allow ("optional", default) or require ("require") the use of SSL certificates by clients to authenticate themselves.

Allowed values: off, optional, require

  tls_client_key

Default: <none>

File containing the private key belonging to the tls_client_cert certificate. A value of "disabled" will disable this server's use of certificate-based authentication.

  tls_crl_file

Default: <none>

Path to a file containing the Certificate Revocation List.

  tls_eccurve

Default: prime256v1

The elliptic curve used for ECDHE. Default is NIST Suite B prime256. See 'openssl ecparam -list_curves' for possible values.

  tls_key_file

Default: <none>

Deprecated in favour of tls_server_key.

  tls_prefer_server_ciphers

Default: 0

Prefer the ciphers on the server side instead of client side.

  tls_required

Default: 0

If enabled, require a TLS/SSL encryption layer to be negotiated prior to ANY authentication mechanisms being advertised or allowed.

  tls_server_ca_dir

Default: <none>

Path to a directory with CA certificates used to verify certificates offered by the server, when cyrus acts as client. This directory must have filenames with the hashed value of the certificates (see openssl(1)).

  tls_server_ca_file

Default: <none>

Path to a file containing CA certificates used to verify certificates offered by the server, when cyrus acts as client.

  tls_server_cert

Default: <none>

File containing the certificate, including the full chain, presented to clients. Two certificates can be set, e.g RSA and EC, if the filenames are separated with comma without spaces.

  tls_server_dhparam

Default: <none>

Deprecated. No longer used.

  tls_server_key

Default: <none>

File containing the private key belonging to the certificate in tls_server_cert. If not set, tls_server_cert must contain both private and public key. Two files with keys can be set, if two certificates are used, in which case the files must be separated with comma without spaces.

  tls_session_timeout

Default: 24h

The length of time that a TLS session will be cached for later reuse. The maximum value is 24 hours, also the default. A value of 0 will disable session caching.

For backward compatibility, if no unit is specified, minutes is assumed.

  tls_sessions_db

Default: twoskip

The cyrusdb backend to use for the TLS cache.

Allowed values: skiplist, sql, twom, twoskip

  tls_sessions_db_path

Default: <none>

The absolute path to the TLS sessions db file. If not specified, will be configdirectory/tls_sessions.db

  tls_versions

Default: tls1_0 tls1_1 tls1_2 tls1_3

A list of SSL/TLS versions to not disable. Cyrus IMAP SSL/TLS starts with all protocols, and subtracts protocols not in this list. Newer versions of SSL/TLS will need to be added here to allow them to get disabled.

  tlscache_db

Default: twoskip

Deprecated in favour of tls_sessions_db.

  tlscache_db_path

Default: <none>

Deprecated in favour of tls_sessions_db_path.

  uidbatches_max_messages

Default: 100000

The maximum number of messages that the server will process in a single UIDBATCHES command - either the number of requested batches multiplied by the batch size, or the number of messages in the mailbox if all batches are requested. The default of 100000 is the minimum allowed value per the specification.

  uidbatches_min_batch

Default: 500

The minimum batch size allowed by the server for a UIDBATCHES command. The default of 500 is the maximum allowed value per the specification. The minium allowed value is 10.

  uidl_format

Default: cyrus

Choose the format for UIDLs in pop3. Possible values are "uidonly", "cyrus", "dovecot" and "courier". "uidonly" forces the old default of UID, "cyrus" is UIDVALIDITY.UID. Dovecot is 8 digits of leading hex (lower case) each UID UIDVALIDITY. Courier is UIDVALIDITY-UID.

Allowed values: uidonly, cyrus, dovecot, courier

  umask

Default: 077

The umask value used by various Cyrus IMAP programs.

  unix_group_enable

Default: 1

Should we look up groups when using auth_unix (disable this if you are not using groups in ACLs for your IMAP server, and you are using auth_unix with a backend (such as LDAP) that can make getgrent() calls very slow).

  unixhierarchysep

Default: 1

Use the UNIX separator character '/' for delimiting levels of mailbox hierarchy. Turn off to use the netnews separator character '.'. Note that with the newnews separator, no dots may occur in mailbox names. The default switched in 3.0 from off to on.

  userdeny_db

Default: flat

The cyrusdb backend to use for the user access list.

Allowed values: flat, skiplist, sql, twom, twoskip

  userdeny_db_path

Default: <none>

The absolute path to the userdeny db file. If not specified, will be configdirectory/user_deny.db

  username_tolower

Default: 1

Convert usernames to all lowercase before login/authentication. This is useful with authentication backends which ignore case during username lookups (such as LDAP).

  userprefix

Default: Other Users

If using the alternate IMAP namespace, the prefix for the other users namespace. The hierarchy delimiter will be automatically appended.

  vcard_max_size

Default: 0

Maximum allowed vCard size.

If non-zero, CardDAV and JMAP will reject storage of contacts whose vCard representation is larger than vcard_max_size.

If set to 0 (the default), a large internally-defined limit will be applied.

If no unit is specified, bytes is assumed.

  virtdomains

Default: off

Configure virtual domain support.

off Cyrus does not know or care about domains. Only the local part of email addresses is ever considered. This is not recommended for any deployment, but is currently the default.

userid
    The user's domain is determined by splitting a fully qualified userid at the last '@' or '%' symbol. If the userid is unqualified, the defaultdomain will be used. This is the recommended configuration for all deployments. If you wish to provide calendaring services you must use this configuration.

on  Fully qualified userids are respected, as per userid. Unqualified userids will have their domain determined by doing a reverse lookup on the IP address of the incoming network interface, or if no record is found, the defaultdomain will be used.

    Allowed values: off, userid, on

  virusscan_notification_subject

Default: Automatically deleted mail

The text used in the subject of email notifications created by cyr_virusscan(8) when deleting infected mail.

  virusscan_notification_template

Default: <none>

The absolute path to a file containing a template to use to describe infected messages that have been deleted by cyr_virusscan(8). See cyr_virusscan(8) for specification of the format of this file. If not specified, the builtin default template will be used.

  webdav_attachments_baseurl

Default: <none>

The base URL for WebDAV managed attachments, excluding the Cyrus-specific URL paths. Typically, this only includes the HTTP scheme and host name at which DAV clients may fetch managed attachments from, e.g. "<https://dav.example.com>". If not specified, the target host of the DAV HTTP request that uploaded the attachment will be used. For JMAP, the Link.blobId property of JSCalendar objects will be disabled.

  webdav_attachments_max_binary_attach_size

Default: 1024K

The maximum byte length of an ATTACH property value when managed attachment URIs get rewritten to BINARY during iTIP processing. Any attachment that exceeds this byte size keeps its managed attachment URI as ATTACH value. A zero size limit causes attachments of any size be rewritten as BINARY.

For backward compatibility, if no unit is specified, kibibytes is assumed.

  websocket_timeout

Default: 30m

Set the length of the HTTP server's inactivity autologout timer when a WebSocket channel has been established. The default is 30 minutes. The minimum value is 0, which will disable WebSockets.

For backward compatibility, if no unit is specified, minutes is assumed.

  xbackup_enabled

Default: 0

Deprecated. No longer used.

  xlist-flag

Default: <none>

Set the special-use flag flag on the specified folder when it is autocreated (see the autocreate_inbox_folders option). For example, if xlist-junk: Spam is set, and the folder Spam is autocreated, the special-use flag \Junk will be set on it.

(This option is so named for backward compatibility with old config files.)

  zoneinfo_db

Default: twoskip

The cyrusdb backend to use for zoneinfo. This database is used by the "tzdist" httpmodule, and is managed by ctl_zoneinfo(8).

Allowed values: flat, skiplist, twom, twoskip

  zoneinfo_db_path

Default: <none>

The absolute path to the zoneinfo db file. If not specified, will be configdirectory/zoneinfo.db

  zoneinfo_dir

Default: <none>

The absolute path to the zoneinfo directory, containing timezone definitions as generated by the vzic tool. This overrides any compile-time value that was set with the --with-zoneinfo-dir configure option.

If not specified, and no compile-time value was set, then whatever definitions libical finds will be used.

If you are providing a Time Zone Data Distribution Service (i.e. you have "tzdist" listed in httpmodules), then this configuration option or a compile time value MUST be specified.

SEE ALSO

imapd(8) <#std-cyrusman-imapd-8>, pop3d(8) <#std-cyrusman-pop3d-8>, nntpd(8) <#std-cyrusman-nntpd-8>, lmtpd(8) <#std-cyrusman-lmtpd-8>, httpd(8) <#std-cyrusman-httpd-8>, timsieved(8) <#std-cyrusman-timsieved-8>, idled(8) <#std-cyrusman-idled-8>, notifyd(8) <#std-cyrusman-notifyd-8>, deliver(8) <#std-cyrusman-deliver-8>, master(8) <#std-cyrusman-master-8>, ciphers(1)

Author
The Cyrus Team

Copyright
1993–2026, The Cyrus Team