**imapd.conf**
**************

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*:\

         *value*1 *value*2 \

            *value*3

   is equivalent to
      *option*: *value*1 *value*2   *value*3

   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).


FIELD 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>''.

   "acl_admin_implies_write:" 0

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

   "addressbookprefix:" #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:" <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.

   "afspts_localrealms:" <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:" <none>

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

   "allowallsubscribe:" 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:" 0

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

   "allowapop:" 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:" 0

      Allow access to deleted and expunged data via vendor.cmu-*
      access

   "allownewnews:" 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:" 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:" 1

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

   "allowusermoves:" 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:" 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:" Alt Folders

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

   "annotation_db:" twoskip

      The cyrusdb backend to use for mailbox annotations.

      Allowed values: *skiplist*, *twoskip*, *zeroskip*

   "annotation_db_path:" <none>

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

   "anyoneuseracl:" 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.

   "annotation_allow_undefined:" 0

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

   "annotation_definitions:" <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** or **RFC 5464**
         (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** and **RFC 5464**, 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_callout:" <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:" 0

      Disables annotations on append with xrunannotator

   "annotation_enable_legacy_commands:" 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** IMAP METADATA
      extension.

   "aps_topic:" <none>

      Topic for Apple Push Service registration.

   "aps_topic_caldav:" <none>

      Topic for Apple Push Service registration for CalDAV.

   "aps_topic_carddav:" <none>

      Topic for Apple Push Service registration for CardDAV.

   "archive_enabled:" 0

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

   "archive_days:" <none>

      Deprecated in favour of *archive_after*.

   "archive_after:" 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_maxsize:" 1024 K

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

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

   "archive_keepflagged:" 0

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

   "archivepartition-name:" <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:" 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:" unix

      The authorization mechanism to use.

      Allowed values: *unix*, *pts*, *krb*, *krb5*

   "autocreateinboxfolders:" <none>

      Deprecated in favor of *autocreate_inbox_folders*.

   "autocreatequota:" <none>

      Deprecated in favor of *autocreate_quota*.

   "autocreatequotamsg:" -1

      Deprecated in favor of *autocreate_quota_messages*.

   "autosievefolders:" <none>

      Deprecated in favor of *autocreate_sieve_folders*.

   "generate_compiled_sieve_script:" 0

      Deprecated in favor of *autocreate_sieve_script_compile*.

   "autocreate_sieve_compiled_script:" <none>

      Deprecated in favor of *autocreate_sieve_script_compiled*.

   "autosubscribeinboxfolders:" <none>

      Deprecated in favor of *autocreate_subscribe_folders*.

   "autosubscribesharedfolders:" <none>

      Deprecated in favor of *autocreate_subscribe_sharedfolders*.

   "autosubscribe_all_sharedfolders:" 0

      Deprecated in favor of *autocreate_subscribe_sharedfolders_all*.

   "autocreate_acl:" <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:" <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)*.
         *autocreate_post* option must be enabled.

   "autocreate_post:" 0

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

   "autocreate_quota:" -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)*
      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:" -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)* 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_folders:" <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:" <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:" 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_compiledscript option points to.
      In order a compiled script to be generated,
      autocreate_sieve_script and autocreate_sieve_compiledscript must
      have valid values

   "autocreate_sieve_script_compiled:" <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:" <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
      autocreateinboxfolders option of the imapd.conf.

   "autocreate_subscribe_sharedfolders:" <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:" 0

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

   "autocreate_users:" anyone

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

   "autoexpunge:" 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

   "backuppartition-name:" <none>

      The pathname of the backup partition *name*.  At least one
      backup partition pathname MUST be specified if backups are in
      use.  Note that there is no relationship between spool
      partitions and backup partitions.

   "backup_compact_minsize:" 0

      The minimum size of chunks in each backup.  The compact tool
      will try to combine adjacent chunks that are smaller than this.

      Setting this value to zero or negative disables combining of
      chunks.

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

   "backup_compact_maxsize:" 0

      The maximum size of chunks in each backup.  The compact tool
      will try to split chunks larger than this into smaller chunks.

      Setting this value to zero or negative disables splitting of
      chunks.

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

   "backup_compact_work_threshold:" 1

      The number of chunks that must obviously need compaction before
      the compact tool will go ahead with the compaction.  If set to
      less than one, the value is treated as being one.

   "backup_staging_path:" <none>

      The absolute path of the backup staging area.  If not specified,
      will be temp_path/backup

   "backup_retention_days:" <none>

      Deprecated in favor of *backup_retention*.

   "backup_retention:" 7d

      How long to keep content in backup after it has been deleted
      from the source.  If set to a negative value or zero, deleted
      content will be kept indefinitely.

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

   "backup_db:" twoskip

      The cyrusdb backend to use for the backup locations database.

      Allowed values: *skiplist*, *sql*, *twoskip*, *zeroskip*

   "backup_db_path:" <none>

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

   "backup_keep_previous:" 0

      Whether the **ctl_backups compact** and **ctl_backups reindex**
      commands should preserve the original file.  The original file
      will be named with a timestamped suffix.  This is mostly useful
      for debugging.

      Note that with this enabled, compacting a backup will actually
      increase the disk used by it (because there will now be an extra
      copy: the original version, and the compacted version).

   "boundary_limit:" 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:" 0

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

   "caldav_allowattach:" 1

      Enable managed attachments support on the CalDAV server.

   "caldav_allowcalendaradmin:" 0

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

   "caldav_allowscheduling:" 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:" 1

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

   "caldav_create_default:" 1

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

   "caldav_create_sched:" 1

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

   "caldav_historical_age:" 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:" 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**
      utility in order to see its effect on serer-side time-based
      queries.

   "caldav_mindatetime:" 19011213T204552Z

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

   "caldav_realm:" <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.

   "calendarprefix:" #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.

   "calendar_default_displayname:" personal

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

   "calendar_user_address_set:" <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 "servername" option will be used.

   "calendar_component_set:" 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_minimum_alarm_interval:" 5m

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

   "carddav_allowaddmember:" 0

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

   "carddav_allowaddressbookadmin:" 0

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

   "carddav_realm:" <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:" 0

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

   "chatty:" 0

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

   "client_bind:" 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:" <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:" 10s

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

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

   "commandmintimer:" <none>

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

   "configdirectory:" <none>

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

   "createonpost:" 0

      Deprecated in favor of *autocreate_post*.

   "conversations:" 0

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

   "conversations_counted_flags:" <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:" skiplist

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

      Allowed values: *skiplist*, *sql*, *twoskip*, *zeroskip*

   "conversations_expire_days:" <none>

      Deprecated in favor of *conversations_expire_after*.

   "conversations_expire_after:" 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_keep_existing:" 1

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

   "conversations_max_thread:" 100

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

   "conversations_max_guidrecords:" 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, so
      the default is 5000

   "conversations_max_guidexists:" 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:" 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!

   "crossdomains:" 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:" 0

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

   "cyrus_group:" <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:" <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.

   "davdriveprefix:" #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:" #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.

   "dav_realm:" <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.

   "dav_lock_timeout:" 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.

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

   "debug:" 0

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

   "debug_command:" <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:" 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_writefail_guid:" <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:" anyone lrs

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

   "defaultdomain:" internal

      The default domain for virtual domain support

   "defaultpartition:" <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:" <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 the man page of
      squatter for details. The default search tier also requires the
      definition of an according *searchtierpartition-name* entry.

      This option MUST be specified for xapian search.

   "defaultserver:" <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.

   "deletedprefix:" 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.

   "delete_mode:" 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)**.

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

      Allowed values: *immediate*, *delayed*

   "delete_unsubscribe:" 0

      Whether to also unsubscribe from mailboxes when they are
      deleted. Note that this behaviour contravenes **RFC 3501**
      section 6.3.9, but may be useful for avoiding user/client
      software confusion. The default is 'no'.

   "deleteright:" c

      Deprecated - only used for backwards compatibility with existing
      installations.  Lists the old **RFC 2086** 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_user_namespace:" 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.  The default is 'no'

   "disable_shared_namespace:" 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.  The default is 'no'

   "disconnect_on_vanished_mailbox:" 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.

   "ischedule_dkim_domain:" <none>

      The domain to be reported as doing iSchedule DKIM signing.

   "ischedule_dkim_key_file:" <none>

      File containing the private key for iSchedule DKIM signing.

   "ischedule_dkim_required:" 1

      A DKIM signature is required on received iSchedule requests.

   "ischedule_dkim_selector:" <none>

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

   "duplicate_db:" twoskip

      The cyrusdb backend to use for the duplicate delivery
      suppression and sieve. Allowed values: *skiplist*, *sql*,
      *twoskip*, *zeroskip*

   "duplicate_db_path:" <none>

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

   "duplicatesuppression:" 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:" 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:" 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:" <none>

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

   "event_exclude_specialuse:" \Junk

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

   "event_extra_params:" 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*

   "event_groups:" 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:" <none>

      Notifyd(8) method to use for "EVENT" notifications which are
      based on the **RFC 5423**.  If not set, "EVENT" notifications
      are disabled.

   "expunge_mode:" 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:" 3s

      Time to pause after a failed login.

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

   "flushseenstate:" 1

      Deprecated. No longer used

   "foolstupidclients:" 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:" <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:" 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** utility.

   "hashimapspool:" 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:" <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:" <none>

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

   "httpallowcompress:" 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:" <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").

   "httpallowtrace:" 0

      Allow use of the TRACE method.

      Note that sensitive data might be disclosed by the response.

   "httpallowedurls:" <none>

      Space-separated list of relative URLs (paths) rooted at
      "httpdocroot" (see below) 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.

   "httpcontentmd5:" 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:" <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:" 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.

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

   "httplogheaders:" <none>

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

   "httpmodules:" <empty string>

      Space-separated list of HTTP modules that will be enabled in
      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. Allowed values: *admin*, *caldav*, *carddav*, *cgi*,
      *domainkey*, *freebusy*, *ischedule*, *jmap*, *prometheus*,
      *rss*, *tzdist*, *webdav*

   "httpprettytelemetry:" 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:" <none>

      The URL endpoint to use when for querying group membership, in
      URI Template (level 1) format [**RFC 6570**].  The URL MUST
      contain a variable called "groupId"

   "httptimeout:" 5m

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

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

   "http_h2_altsvc:" <none>

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

   "http_jwt_key_dir:" <none>

      The absolute path to a directory containing one or more key
      files to authenticate JSON Web Tokens (**RFC 7519**) 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:" 0s

      Defines the timespan in which a JSON Web Token is valid (see
      *http_jwt_key*). 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.

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

   "icalendar_max_size:" 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:" {configdirectory}/socket/idle

      Unix domain socket that idled listens on.

   "ignorereference:" 0

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

   "imapidlepoll:" 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.

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

   "imapidresponse:" 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:" 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:" <none>

      Notifyd(8) method to use for "IMIP" notifications which are
      based on the **RFC 6047**.  If not set, "IMIP" notifications are
      disabled.

   "implicit_owner_rights:" lkxan

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

   "@include:" <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.

   "improved_mboxlist_sort:" 0

      If enabled, a special comparator will be used which will
      correctly sort mailbox names that contain characters such as ' '
      and '-'.

      Note that this option SHOULD NOT be changed on a live system.
      The mailboxes database should be dumped (ctl_mboxlist) before
      the option is changed, removed, and then undumped after changing
      the option.  When not using flat files for the subscriptions
      databases the same has to be done (cyr_dbtool) for each
      subscription database See improved_mboxlist_sort.html.

   "jmap_emailsearch_db_path:" <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.

   "jmap_querycache_max_age:" 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.

      If no unit is specified, minutes is assumed.

      This feature currently only is enabled for Email/query.

   "jmap_preview_annot:" <none>

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

   "jmap_imagesize_annot:" <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:" <none>

      The name of the per-message annotation, if any, that stores a
      JSON object, mapping **RFC 2392** 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**.

   "jmap_preview_length:" 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_max_catenate_items:" 100

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

   "jmap_max_size_upload:" 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_max_size_blob_set:" 4M

      The maximum size that the JMAP API accepts for Blob/set.
      Returned as the maxSizeBlobSet property value of the JMAP
      "https://cyrusimap.org/ns/jmap/blob" capabilities object.

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

   "jmap_max_concurrent_upload:" 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_size_request:" 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_concurrent_requests:" 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_calls_in_request:" 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_delayed_send:" 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.

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

   "jmap_max_objects_in_get:" 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:" 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_mail_max_size_attachments_per_email:" 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_nonstandard_extensions:" 0

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

   "jmap_pushpoll:" 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_set_has_attachment:" 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:" 1

      If enabled, support the JMAP vacation extension

   "jmapuploadfolder:" #jmap

      the name of the folder for JMAP uploads (#jmap)

   "jmapsubmission_deleteonsend:" 1

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

   "jmapsubmissionfolder:" #jmapsubmission

      the name of the folder for JMAP Submissions (#jmapsubmission)

   "jmappushsubscriptionfolder:" #jmappushsubscription

      the name of the folder for JMAP Push Subscriptions
      (#jmappushsubscription)

   "jmapnotificationfolder:" #jmapnotification

      the name of the folder for JMAP notifications
      (#jmapnotification)

   "iolog:" 0

      Should cyrus output I/O log entries

   "ldap_authz:" <none>

      SASL authorization ID for the LDAP server

   "ldap_base:" <empty string>

      Contains the LDAP base dn for the LDAP ptloader module

   "ldap_bind_dn:" <none>

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

   "ldap_deref:" never

      Specify how aliases dereferencing is handled during search.

      Allowed values: *search*, *find*, *always*, *never*

   "ldap_domain_base_dn:" <empty string>

      Base DN to search for domain name spaces.

   "ldap_domain_filter:"
   (&(objectclass=domainrelatedobject)(associateddomain=%s))

      Filter to use searching for domains

   "ldap_domain_name_attribute:" associateddomain

      The attribute name for domains.

   "ldap_domain_scope:" sub

      Search scope

      Allowed values: *sub*, *one*, *base*

   "ldap_domain_result_attribute:" inetdomainbasedn

      Result attribute

   "ldap_filter:" (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: 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:" <empty string>

      LDAP base dn for ldap_group_filter.

   "ldap_group_filter:" (cn=%u)

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

   "ldap_group_scope:" sub

      Specify search scope for ldap_group_filter.

      Allowed values: *sub*, *one*, *base*

   "ldap_id:" <none>

      SASL authentication ID for the LDAP server

   "ldap_mech:" <none>

      SASL mechanism for LDAP authentication

   "ldap_user_attribute:" <none>

      Specify LDAP attribute to use as canonical user id

   "ldap_member_attribute:" <none>

      See ldap_member_method.

   "ldap_member_base:" <empty string>

      LDAP base dn for ldap_member_filter.

   "ldap_member_filter:" (member=%D)

      Specify a filter for "ldap_member_method: filter". See
      ldap_filter for more options.

   "ldap_member_method:" 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, to find groups; ldap_member_attribute is a
      single-value attribute group name. Allowed values: *attribute*,
      *filter*

   "ldap_member_scope:" sub

      Specify search scope for ldap_member_filter.

      Allowed values: *sub*, *one*, *base*

   "ldap_password:" <none>

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

   "ldap_realm:" <none>

      SASL realm for LDAP authentication

   "ldap_referrals:" 0

      Specify whether or not the client should follow referrals.

   "ldap_restart:" 1

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

   "ldap_sasl:" 1

      Use SASL for LDAP binds in the LDAP PTS module.

   "ldap_sasl_authc:" <none>

      Deprecated.  Use ldap_id

   "ldap_sasl_authz:" <none>

      Deprecated.  Use ldap_authz

   "ldap_sasl_mech:" <none>

      Deprecated.  Use ldap_mech

   "ldap_sasl_password:" <none>

      Deprecated.  User ldap_password

   "ldap_sasl_realm:" <none>

      Deprecated.  Use ldap_realm

   "ldap_scope:" sub

      Specify search scope.

      Allowed values: *sub*, *one*, *base*

   "ldap_servers:" ldap://localhost/

      Deprecated.  Use ldap_uri

   "ldap_size_limit:" 1

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

   "ldap_start_tls:" 0

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

   "ldap_time_limit:" 5s

      How long to wait for a search request to complete.

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

   "ldap_timeout:" 5s

      How long a search can take before timing out.

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

   "ldap_ca_dir:" <none>

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

   "ldap_ca_file:" <none>

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

   "ldap_ciphers:" <none>

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

   "ldap_client_cert:" <none>

      File containing the client certificate.

   "ldap_client_key:" <none>

      File containing the private client key.

   "ldap_verify_peer:" 0

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

   "ldap_tls_cacert_dir:" <none>

      Deprecated in favor of *ldap_ca_dir*.

   "ldap_tls_cacert_file:" <none>

      Deprecated in favor of *ldap_ca_file*.

   "ldap_tls_cert:" <none>

      Deprecated in favor of *ldap_client_cert*.

   "ldap_tls_key:" <none>

      Deprecated in favor of *ldap_client_key*.

   "ldap_tls_check_peer:" 0

      Deprecated in favor of *ldap_verify_peer*.

   "ldap_tls_ciphers:" <none>

      Deprecated in favor of *ldap_ciphers*.

   "ldap_uri:" <none>

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

   "ldap_version:" 3

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

   "literalminus:" 0

      if enabled, CAPABILITIES will reply with LITERAL- rather than
      LITERAL+ (**RFC 7888**).  Doesn't actually size-restrict uploads
      though

   "lmtp_downcase_rcpt:" 1

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

   "lmtp_exclude_specialuse:" \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:" 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:" 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:" 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:" 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:" 1

      By default, lmtpd will be strict (per **RFC 2821**) 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:" {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:" 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. The default is 5 minutes - change to zero for
      infinite.

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

   "lock_debugtime:" <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.

   "loginrealms:" <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:" 0

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

   "logtimestamps:" 0

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

   "mailbox_default_options:" 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:" <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:" 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:" 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:" 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:" 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:" <none>

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

   "master_bind_errors_fatal:" 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.

   "maxheaderlines:" 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

   "maxlogins_per_host:" 0

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

   "maxlogins_per_user:" 0

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

   "maxmessagesize:" 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:" 128K

      Maximum size of a single quoted string for the parser.

      If no unit is specified, bytes is assumed.

   "maxword:" 128K

      Maximum size of a single word for the parser.

      If no unit is specified, bytes is assumed.

   "mboxkey_db:" twoskip

      The cyrusdb backend to use for mailbox keys.

      Allowed values: *skiplist*, *twoskip*, *zeroskip*

   "mboxlist_db:" twoskip

      The cyrusdb backend to use for the mailbox list.

      Allowed values: *flat*, *skiplist*, *sql*, *twoskip*, *zeroskip*

   "mboxlist_db_path:" <none>

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

   "mboxname_lockpath:" <none>

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

   "metapartition_files:" <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*

   "metapartition-name:" <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.

   "mupdate_authname:" <none>

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

   "mupdate_config:" 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*

   "munge8bit:" 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** and its predecessors.)

   "mupdate_connections_max:" 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:" <none>

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

   "mupdate_port:" 3905

      The port of the mupdate server for the Cyrus Murder

   "mupdate_realm:" <none>

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

   "mupdate_retry_delay:" 20

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

   "mupdate_server:" <none>

      The mupdate server for the Cyrus Murder

   "mupdate_username:" <empty string>

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

   "mupdate_workers_max:" 50

      The maximum number of mupdate worker threads (overall)

   "mupdate_workers_maxspare:" 10

      The maximum number of idle mupdate worker threads

   "mupdate_workers_minspare:" 2

      The minimum number of idle mupdate worker threads

   "mupdate_workers_start:" 5

      The number of mupdate worker threads to start

   "netscapeurl:" <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:" 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:" *

      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:" 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:" <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:" <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:" <none>

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

   "newsrc_db_path:" <none>

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

   "nntptimeout:" 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:" <none>

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

   "notifysocket:" {configdirectory}/socket/notify

      Unix domain socket that the mail notification daemon listens on.

   "notify_external:" <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*.

   "partition-name:" <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_mode:" 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_exclude:" <none>

      List of partitions to exclude from selection mode.

   "partition_select_usage_reinit:" 0

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

   "partition_select_soft_usage_limit:" 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.

   "plaintextloginpause:" <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.)

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

   "plaintextloginalert:" <none>

      Message to send to client after a successful plaintext login.

   "popexpiretime:" -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:" <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.

   "popsubfolders:" 0

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

   "poppollpadding:" 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.

   "poptimeout:" 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:" 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:" 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:" postmaster

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

   "postuser:" <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:" <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:" 0

      Whether tracking of service metrics for Prometheus is enabled.

   "prometheus_need_auth:" admin

      Authentication level required to fetch Prometheus metrics.

      Allowed values: *none*, *user*, *admin*

   "prometheus_update_freq:" 10s

      Frequency in at which promstatsd should re-collate its
      statistics report.  The minimum value is 1 second, the default
      is 10 seconds.

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

   "prometheus_stats_dir:" <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.

   "proxy_authname:" proxy

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

   "proxy_compress:" 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:" <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:" <none>

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

   "proxyd_allow_status_referral:" 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:" 0

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

   "proxyservers:" <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.

   "pts_module:" afskrb

      The PTS module to use.

      Allowed values: *afskrb*, *ldap*, *http*

   "ptloader_sock:" <none>

      Unix domain socket that ptloader listens on. (defaults to
      configdirectory/ptclient/ptsock)

   "ptscache_db:" twoskip

      The cyrusdb backend to use for the pts cache.

      Allowed values: *skiplist*, *twoskip*, *zeroskip*

   "ptscache_db_path:" <none>

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

   "ptscache_timeout:" 3h

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

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

   "ptskrb5_convert524:" 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:" 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:" 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:" quotalegacy

      The cyrusdb backend to use for quotas.

      Allowed values: *flat*, *skiplist*, *sql*, *quotalegacy*,
      *twoskip*, *zeroskip*

   "quota_db_path:" <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:" 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:" 90

      Deprecated in favour of *quotawarnpercent*.

   "quotawarnpercent:" 90

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

   "quotawarnkb:" <none>

      Deprecated in favour of *quotawarnsize*.

   "quotawarnsize:" 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.

   "quotawarnmsg:" 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).

   "readonly:" 0

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

   "reject8bit:" 0

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

   "restore_authname:" <none>

      The authentication used by the restore tool when authenticating
      to an IMAP/sync server.

   "restore_password:" <none>

      The password used by the restore tool when authenticating to an
      IMAP/sync server.

   "restore_realm:" <none>

      The authentication realm used by the restore tool when
      authenticating to an IMAP/sync server.

   "reverseacls:" 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:" 1

      Deprecated. No longer used

   "rfc2046_strict:" 0

      If enabled, imapd will be strict (per **RFC 2046**) 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:" 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**) 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:" 1

      If enabled, Sieve will be strict (per **RFC 3028**) 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:" <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:" *

      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:" <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:" 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:" 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:" <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:" 0

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

   "sasl_maximum_layer:" 256

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

   "sasl_minimum_layer:" 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:" 0

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

   "sasl_pwcheck_method:" <none>

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

   "search_batchsize:" 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_attachment_extractor_url:" <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_index_language:" 0

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

   "search_index_parts:" 0

      Deprecated. No longer used.

   "search_index_skip_domains:" <none>

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

   "search_index_skip_users:" <none>

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

   "search_query_language:" 0

      Deprecated. No longer used.

   "search_normalisation_max:" 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_engine:" none

      The indexing engine used to speed up searching.

      Allowed values: *none*, *squat*, *xapian*

   "search_fuzzy_always:" 0

      Whether to enable **RFC 6203** 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:" 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_indexed_db:" twoskip

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

      Allowed values: *flat*, *skiplist*, *twoskip*, *zeroskip*

   "search_maxtime:" <none>

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

   "search_maxsize:" 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_queryscan:" 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:" 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** compliant, but it backwards
      compatible, and may be preferred by some sites.

   "search_skiphtml:" 0

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

   "search_whitespace:" 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*

   "search_snippet_length:" 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:" <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.

   "searchpartition-name:" <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 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:" twoskip

      The cyrusdb backend to use for the seen state.

      Allowed values: *flat*, *skiplist*, *twoskip*, *zeroskip*

   "sendmail:" /usr/lib/sendmail

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

   "sendmail_auth_id:" 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.

   "serverlist:" <none>

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

   "serverlist_select_mode:" 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_usage_reinit:" 0

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

   "serverlist_select_soft_usage_limit:" 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.

   "servername:" <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.

   "serverinfo:" 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*

   "sharedprefix:" Shared Folders

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

   "sieve_allowreferrals:" 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:" 90d

      Maximum expiration time for duplicate message tracking records.

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

   "sieve_extensions:" 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 vnd.cyrus.imip snooze

      Space-separated list of Sieve extensions allowed to be used in
      sieve scripts, enforced at submission by timsieved(8).  Any
      previously installed script will be unaffected by this option
      and will continue to execute regardless of the extensions used.
      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*, *vnd.cyrus.imip*, *snooze=vnd.cyrus.snooze=x-cyrus-
      snooze*

   "sieve_folder:" #sieve

      The name of the folder for storing Sieve scripts (#sieve)

   "sieve_maxscriptsize:" 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_maxscripts:" 5

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

   "sieve_utf8fileinto:" 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_sasl_send_unsolicited_capability:" 0

      If enabled, timsieved will emit a capability response after a
      successful SASL authentication, per draft-martin-
      managesieve-12.txt .

   "sieve_use_lmtp_reject:" 1

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

   "sieve_vacation_min_response:" 3d

      Minimum time interval between consecutive vacation responses,
      per draft-ietf-vacation-seconds.txt.  The default is 3 days.

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

   "sieve_vacation_max_response:" 90d

      Maximum time interval between consecutive vacation responses,
      per draft-ietf-vacation-seconds.txt.  The default is 90 days.
      The minimum is 7 days.

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

   "sievedir:" /usr/sieve

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

   "sievenotifier:" <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:" 0

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

   "anysievefolder:" 0

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

   "singleinstancestore:" 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:" 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:" 0

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

   "smtp_backend:" 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**.

      If the SMTP EHLO command reports AUTH (**RFC 4954**) 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:" 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.

   "smtp_auth_authname:" <none>

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

   "smtp_auth_password:" <none>

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

   "smtp_auth_realm:" <none>

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

   "soft_noauth:" 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:" twoskip

      The cyrusdb backend to use for caching sort results (currently
      only used for xconvmultisort) Allowed values: *skiplist*,
      *twoskip*, *zeroskip*

   "specialuse_extra:" <none>

      Whitespace separated list of extra special-use attributes that
      can be set on a mailbox. **RFC 6154** 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:" \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:" \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:" 1

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

   "sql_database:" <none>

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

   "sql_engine:" <none>

      Name of the SQL engine to use.

      Allowed values: *mysql*, *pgsql*, *sqlite*

   "sql_hostnames:" <empty string>

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

   "sql_passwd:" <none>

      Password to use for authentication to the SQL server.

   "sql_user:" <none>

      Username to use for authentication to the SQL server.

   "sql_usessl:" 0

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

   "srs_alwaysrewrite:" 0

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

   "srs_domain:" <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:" 0

      The hash length to generate in a rewritten address.

   "srs_secrets:" <none>

      A list of secrets with which to generate addresses.

   "srs_separator:" <none>

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

   "srvtab:" <empty string>

      The pathname of *srvtab* file containing the server's private
      key.  This option is passed to the SASL library and overrides
      its default setting.

   "submitservers:" <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:" flat

      The cyrusdb backend to use for the subscriptions list.

      Allowed values: *flat*, *skiplist*, *twoskip*, *zeroskip*

   "suppress_capabilities:" <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.

   "statuscache:" 0

      Enable/disable the imap status cache.

   "statuscache_db:" twoskip

      The cyrusdb backend to use for the imap status cache.

      Allowed values: *skiplist*, *sql*, *twoskip*, *zeroskip*

   "statuscache_db_path:" <none>

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

   "sync_authname:" <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:" 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:" twoskip

      The cyrusdb backend to use for the replication cache.

      Allowed values: *skiplist*, *sql*, *twoskip*, *zeroskip*

   "sync_cache_db_path:" <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:" <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:" 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:" 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:" <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:" 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:" <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:" <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:" <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:" 20m

      When a rolling 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:" 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.

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

   "sync_rightnow_channel:" <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:" <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:" 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.

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

   "sync_try_imap:" 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_prefix:" <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.

   "syslog_facility:" <none>

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

   "tcp_keepalive:" 0

      Enable keepalive on TCP connections

   "tcp_keepalive_cnt:" 0

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

   "tcp_keepalive_idle:" 0

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

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

   "tcp_keepalive_intvl:" 0

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

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

   "temp_path:" /tmp

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

   "telemetry_bysessionid:" 0

      If true, log by sessionid instead of PID for telemetry

   "timeout:" 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.

   "imapidletimeout:" <none>

      Timeout for idling clients (**RFC 2177**).  If not set (the
      default), the value of "timeout" will be used instead.

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

   "tls_ca_file:" <none>

      Deprecated in favor of *tls_client_ca_file*.

   "tls_ca_path:" <none>

      Deprecated in favor of *tls_client_ca_dir*.

   "tlscache_db:" twoskip

      Deprecated in favor of *tls_sessions_db*.

   "tlscache_db_path:" <none>

      Deprecated in favor of *tls_sessions_db_path*.

   "tls_cert_file:" <none>

      Deprecated in favor of *tls_server_cert*.

   "tls_cipher_list:" DEFAULT

      Deprecated in favor of *tls_ciphers*.

   "tls_ciphers:" 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_crl_file:" <none>

      Path to a file containing the Certificate Revocation List

   "tls_client_ca_dir:" <none>

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

   "tls_client_ca_file:" <none>

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

   "tls_client_cert:" <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:" 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:" <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_eccurve:" prime256v1

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

   "tls_key_file:" <none>

      Deprecated in favor of *tls_server_key*.

   "tls_required:" 0

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

   "tls_prefer_server_ciphers:" 0

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

   "tls_server_ca_dir:" <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:" <none>

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

   "tls_server_cert:" <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:" <none>

      File containing the DH parameters belonging to the certificate
      in tls_server_cert.

   "tls_server_key:" <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_sessions_db:" twoskip

      The cyrusdb backend to use for the TLS cache.

      Allowed values: *skiplist*, *sql*, *twoskip*, *zeroskip*

   "tls_sessions_db_path:" <none>

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

   "tls_session_timeout:" 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_versions:" 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.

   "uidl_format:" 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:" 077

      The umask value used by various Cyrus IMAP programs.

   "userdeny_db:" flat

      The cyrusdb backend to use for the user access list.

      Allowed values: *flat*, *skiplist*, *sql*, *twoskip*, *zeroskip*

   "userdeny_db_path:" <none>

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

   "username_tolower:" 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:" Other Users

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

   "unix_group_enable:" 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:" 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.

   "vcard_max_size:" 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:" 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:" Automatically deleted mail

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

   "virusscan_notification_template:" <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.

   "websocket_timeout:" 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.

      If no unit is specified, minutes is assumed.

   "webdav_attachments_baseurl:" <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:" 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.

   "xbackup_enabled:" 0

      Enable support for the XBACKUP command in imapd.  If enabled,
      admin users can use this command to provoke a replication of
      specified users to the named backup channel.

   "xlist-flag:" <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.)

   "lmtp_catchall_mailbox:" <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!

   "zoneinfo_db:" twoskip

      The cyrusdb backend to use for zoneinfo.  This database is used
      by the "tzdist" *httpmodules*, and is managed by
      **ctl_zoneinfo(8)**. Allowed values: *flat*, *skiplist*,
      *twoskip*, *zeroskip*

   "zoneinfo_db_path:" <none>

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

   "zoneinfo_dir:" <none>

      The absolute path to the zoneinfo directory, containing timezone
      definitions as generated by the vzic tool.  If not specified,
      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 MUST be specified.

   "object_storage_enabled:" 0

      Is Object storage enabled for this server.  You also need to
      have archiving enabled and archivepartition for the mailbox.
      Only email files will be stored on object Storage archive
      partition will be used to store any other files

   "object_storage_dummy_spool:" <none>

      Dummy object storage spool; this is for test only. Spool where
      user directory (container) will be created to store all emails
      in a flat structure

   "openio_namespace:" <none>

      The OpenIO namespace used to store archived email messages. A
      namespace identifies the physical platform cyrus must contact.
      This directive is used by the OpenIO's SDK to locate its
      platform entry point.

   "openio_account:" <none>

      The OpenIO account used to account for stored emails. Accounts
      are unique in their namespace. They provides virtual partitions,
      with quotas and QoS features.

   "openio_rawx_timeout:" 30s

      The OpenIO timeout to query to the RAWX services (default 30
      sec).

   "openio_proxy_timeout:" 5s

      The OpenIO timeout to query to the PROXY services (default 5
      sec).

   "openio_autocreate:" 0

      Allow the OpenIO SDK to autocreate containers. Mainly destined
      to be turned on development environments. In production, the
      container should have been provisioned with the mailboxes.

   "openio_verbosity:" <none>

      Sets the logging verbosity of the OpenIO's internal behavior.
      Admissible values are: "warning", "notice", "info", "debug",
      "trace", "quiet". The default verbosity is "warning". Set to
      "notice" for a few lines on a per-client basis. Set to "info"
      for a few lines on a per-request basis. Set to "debug" Set to
      "trace" to activate the underlying libcurl debug output.
      Enabling a verbosity higher to equal than "debug" requires the
      cyrus to be set in debug mode. The special "quiet" value
      disables all kinds of logging at the GLib level.

   "caringo_hostname:" <none>

      The Caringo hostname used to store archived email messages. A
      hostname identifies the physical platform cyrus must contact.
      This directive is used by the Caringo's SDK (CastorSDK: Caringo
      Simple Content Storage Protocol (SCSP) on HTTP 1.1 using a
      RESTful architecture

   "caringo_port:" 80

      The port of the caringo server (caringo_hostname); default is
      80.

   "fastmailsharing:" 0

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


SEE ALSO
========

   **imapd(8)**, **pop3d(8)**, **nntpd(8)**, **lmtpd(8)**,
   **httpd(8)**, **timsieved(8)**, **idled(8)**, **notifyd(8)**,
   **deliver(8)**, **master(8)**, **ciphers(1)**
