Files
server/usr/share/psa-horde/imp/config/backends.php
2026-01-07 20:52:11 +01:00

477 lines
21 KiB
PHP

<?php
/**
* This file specifies which mail servers IMP can login to.
*
* IMPORTANT: DO NOT EDIT THIS FILE!
* Local overrides MUST be placed in backends.local.php or backends.d/.
* If the 'vhosts' setting has been enabled in Horde's configuration, you can
* use backends-servername.php.
*
* Example configuration file that sets a different server name than localhost
* for the IMAP server:
*
* <?php
* $servers['imap']['hostspec'] = 'imap.example.com';
*
* Example configuration file that enables the advanced IMAP server in favor of
* the simple server and enables 'hordeauth':
*
* <?php
* $servers['imap']['disabled'] = true;
* $servers['advanced']['disabled'] = false;
* $servers['advanced']['hordeauth'] = true;
*
*
* Properties that can be set for each server:
* ===========================================
*
* disabled: (boolean) If true, the config entry is disabled.
*
* name: (string) This is the name displayed in the server list on the login
* screen.
*
* hostspec: (string) The hostname/IP address of the mail server to connect to.
*
* hordeauth: (mixed) Use Horde authentication? One of:
* - true: [DEFAULT] IMP will attempt to use the user's existing
* credentials (the username/password they used to log in to
* Horde with) to login to this server.
* Everything after and including the first @ in the username
* will be stripped off before attempting authentication.
* - 'full': The username will be used unmodified.
* - false: Don't use Horde authentication; always require separate login.
*
* protocol: (string) The server protocol. One of:
* - imap: [DEFAULT] IMAP. Requires a IMAP4rev1 (RFC 3501) compliant
* server.
* - pop: POP3. Requires a POP3 (RFC 1939) compliant server. All
* mailbox options will be disabled (POP3 does not support
* mailboxes). Other advanced functions will also be disabled
* (e.g. caching, searching, sorting).
*
* secure: (mixed) Security method used to connect to the server. One of:
* - 'ssl': [DEPRECATED; see below] Use SSL to connect to the server.
* - 'tls': [DEFAULT on IMAP; RECOMMENDED] Use TLS to connect to the
* server.
* - false: [DEFAULT on POP3; NOT RECOMMENED] Do not use any encryption.
*
* The 'ssl' and 'tls' options will only work if you've compiled PHP
* with SSL support and the mail server supports secure connections.
*
* The use of 'ssl' is STRONGLY DISCOURAGED. If a secure connection
* is needed, 'tls' should be used and the connection should be made
* to the base protocol port (110 for POP3, 143 for IMAP).
* See: http://wiki2.dovecot.org/SSL
*
* port: (integer) The port that the mail service/protocol you selected runs
* on. Default values:
* - imap (unsecure or w/TLS): 143
* - imap (w/SSL): 993 (DEPRECATED - use TLS on port 143)
* - pop (unsecure or w/TLS): 110
* - pop (w/SSL): 995 (DEPRECATED - use TLS on port 110)
*
* maildomain: (string) What to put after the @ when sending mail. This
* setting is generally useful when the sending host is different from the
* mail receiving host. This setting will also be used to complete
* unqualified addresses when composing mail. E.g. If you want all sent
* messages to look like:
*
* From: user@example.com
*
* set 'maildomain' to 'example.com'.
*
* cache: (mixed) Enables IMAP caching for the server.
*
* Caching is HIGHLY RECOMMENDED. (Do note that if your IMAP server does not
* support the CONDSTORE and/or QRESYNC IMAP extensions, flags changed by
* another mail agent while the IMP session is active will not be updated.)
*
* The following values are recognized:
* - false: [DEFAULT] Caching is disabled
* - true: Caching is enabled using the Horde cache (configured in
* horde/config/conf.php). (This option is DEPRECATED; use one of
* the below options instead.)
* - 'cache': Caching is enabled using the Horde cache (configured in
* horde/config/conf.php). It is recommended to use either
* 'hashtable', 'nosql', or 'sql' instead, as these backends
* have better performance.
* The 'cache_lifetime' parameter (integer) can be specified
* to define the lifetime of the cached message data.
* - 'hashtable': Caching is enabled using the Horde HashTable driver
* (configured in horde/config/conf.php).
* The 'cache_lifetime' parameter (integer) can be
* specified to define the lifetime of the cached message
* data.
* - 'nosql': Caching is enabled using the Horde NoSQL database
* (configured in horde/config/conf.php).
* - 'sql': Caching is enabled using the Horde SQL database (configured in
* horde/config/conf.php).
* - A Horde_Imap_Client_Cache_Backend object: Directly configure the
* caching backend to use. For
* advanced users only.
*
* quota: (array) Use this if you want to display a user's quota status. Set
* to an empty value to disable quota status (DEFAULT).
*
* To enable, set the 'driver' key to the name of the driver. The 'params'
* key can contain optional configuration parameters.
*
* These 'params' keys are available for ALL drivers:
* - hide_when_unlimited: (boolean) True if you want to hide quota
* output when the server reports an unlimited
* quota.
* - interval: (integer) Update quota information in the UI at this
* interval (in seconds). Defaults to 15 minutes.
* - unit: (string) What storage unit the quota messages should be
* displayed in. One of:
* - GB
* - MB [DEFAULT]
* - KB
*
* These are the available drivers, along with their optional parameters:
* - hook: Use the quota hook to handle quotas (see imp/config/hooks.php).
* All parameters defined for this driver will be passed to the
* quota hook function.
* - imap: Use the IMAP QUOTA extension to handle quotas. The IMAP server
* server must support the QUOTAROOT command to use this driver.
* This is the RECOMMENDED way of handling quotas.
*
* smtp: (array) SMTP configuration parameters.
*
* For configuration parameters marked with a [*] below, the Horde-wide SMTP
* configuration is used by default.
*
* If allowing access to external mail servers (e.g. Gmail), you almost
* certainly will want to override the defaults to specify the foreign SMTP
* server used to send messages from that given mail domain.
*
* NOTE: By default, IMP will use the authentication credentials used to
* login to the current backend. To use the credentials specified by the
* Horde-wide SMTP configuration, 'horde_auth' must be true (see below).
*
* These configuration parameters are available:
* - debug: (string) If set, enables SMTP debugging. See the 'debug'
* parameter below (under the 'Debugging Properties' header)
* for acceptable values.
* - horde_auth: (boolean) If true, populates the 'password' and
* 'username' parameters with the authentication credentials
* used by the Horde-wide SMTP configuration (only if those
* fields are not defined for this backend in IMP).
* - host: [*] (string) SMTP server host.
* - lmtp: [*] (boolean) If true, the server uses the LMTP protocol.
* - localhost: [*] (string) The local hostname.
* - password: (string) Password to use for SMTP server authentication.
* - port: [*] (integer) SMTP server port.
* - secure: [*] (string) Use SSL or TLS to connect.
* Possible options:
* - false (No encryption)
* - 'ssl' (Auto-detect SSL version)
* - 'sslv2' (Force SSL version 2)
* - 'sslv3' (Force SSL version 3)
* - 'tls' (TLS) [DEFAULT]
* - 'tlsv1' (TLS direct version 1.x connection to server)
* [@since Horde_Smtp 1.3.0]
* - true (Use TLS, if available) [@since Horde_Smtp 1.2.0]
* - timeout: (integer) Connection timeout, in seconds. Defaults to 30
* seconds
* - username: (string) Username to use for SMTP server authentication.
*
* spam: (array) Spam reporting configuration. This array can contain two
* keys - 'innocent' and 'spam' - that defines the behavior when a user
* flags a message with one of these actions.
*
* The 'display' option (boolean) behaves as follows:
* - innocent: If true, the innocent action only appears in the user's
* spam mailbox (default). If false, the action appears in
* all mailboxes.
* - spam: If false, the spam action appears in all mailboxes other than
* the user's spam mailbox (default). If true, the action appears
* in all mailboxes.
*
* These placeholders are available in the options marked *EXPANDABLE* below
* and will be expanded at run-time:
* - %u: The Horde username.
* - %l: The short username (no domain information).
* - %d: The domain name.
*
* The following drivers are available (at least one driver must be
* configured for the spam options to appear in the UI):
*
* + Email reporting
* - email: (string) The e-mail address to use for reporting.
* - email_format: (string) Either 'digest' or 'redirect'.
* - digest: [DEFAULT; RECOMMENDED] Packages the raw data of all
* messages reported by the user in their marking action and
* sends to the reporting e-mail address in a single
* multipart/digest message.
* - redirect: Redirects the message to the reporting e-mail address
* Note that this alters the original message's headers
* and may break embedded spam reporting signature
* information contained in the original message.
*
* + Null reporting
* - null: (boolean) Whether the action should be considered to be
* successful or not. This driver can be used to trigger
* post-reporting spam actions (i.e. deleting/moving messages)
* if this value is true and no other drivers are configured.
*
* + Program reporting
* - program: (string) An external program to report the spam message
* to. Messages will be reported to the program via standard
* input.
*
*
* Properties that only apply to IMAP servers:
* ===========================================
*
* acl: (boolean) Access Control Lists (ACLs). One of:
* - true: Enable ACLs. (Not all IMAP servers support this feature).
* - false: [DEFAULT] Disable ACLs.
*
* admin: (array) Use this if you want to enable mailbox management for
* administrators via Horde's user administration interface. The mailbox
* management gets enabled if you let IMP handle the Horde authentication
* the 'application' authentication driver. Your IMAP server needs to
* support mailbox management via IMAP commands.
*
* Do not define this value if you do not want mailbox management [DEFAULT].
*
* The following parameters are available:
* - password: (string) The admin user's password.
* - user: (string) The admin user.
* - userhierarchy: (string) The hierarchy where user mailboxes are
* stored.
*
* autocreate_special: (boolean) If true, automatically create special
* mailboxes on login (see 'special_mboxes')?
*
* special_mboxes: (array) The list of mailbox names to use for special
* mailboxes. These values override the default preference values for a
* backend.
*
* The array keys are the special mailbox type, the array values are the
* IMAP mailbox name (UTF-8) to use on the server. Available keys:
* - IMP_Mailbox::MBOX_DRAFTS
* - IMP_Mailbox::MBOX_SENT
* - IMP_Mailbox::MBOX_SPAM
* - IMP_Mailbox::MBOX_TEMPLATES
* - IMP_Mailbox::MBOX_TRASH
*
* It is also possible to define localized special mailboxes. To do so, use
* the array key IMP_Mailbox::MBOX_USERSPECIAL and list the local special
* mailboxes in an array, with keys as the IMAP mailbox name (in UTF-8) and
* values as the mailbox display label.
*
*
* Debugging properties:
* =====================
*
* debug: (string) If set, will output debug information about the
* client/server communication. The value can be any PHP supported wrapper
* that can be opened via PHP's fopen() command. This setting should not be
* enabled by default on production servers, since the log file will quickly
* grow very large.
*
* Example: To output to a file, provide the full path to the file (a bare
* string is interpreted by PHP to be a filename). This file must be
* writable by the PHP process.
*
* debug_raw: (boolean) By default, debugging will only output a short summary
* of message body content sent to and received from the server. If you want
* the debug stream to output the full, raw data of the client/server
* communication, set this option to true.
*
*
* Advanced properties:
* ====================
*
* *** The following options should NOT be set unless you REALLY know what ***
* *** you are doing! FOR MOST PEOPLE, AUTO-DETECTION OF THESE PARAMETERS ***
* *** (the default if the parameters are not set) SHOULD BE USED! ***
*
* capability_ignore: [IMAP only] (array) A list of IMAP capabilites to
* ignore, even if they are supported on the server. The capability names
* should be in all capitals. This option may be useful, for example, if it
* is known that a certain capability is buggy on the given server.
* Otherwise, all available and supported IMAP capabilities will be (and
* should be) used.
*
* comparator: [IMAP only] (string) The search comparator to use instead of
* the default IMAP server comparator (e.g. for sorting text fields). See
* RFC 4790 [3.1] - "collation-id" - for the format. Your IMAP server must
* support the I18NLEVEL extension. By default, the server default
* comparator is used.
*
* id: [IMAP only] (array) Send ID information to the IMAP server. This must
* be an array with the keys being the fields to send and the values being
* the associated values. Your IMAP server must support the ID extension.
* See RFC 2971 [3.3] for a list of defined field values.
*
* import_limit: [IMAP only] (integer) The maximum number of messages a user
* can import. Importing large mailboxes via the IMAP APPEND command is
* potentially a resource-intensive operation, and some IMAP servers (e.g.
* Dovecot 2.2) can be extremely slow in importing. By default, limit
* importing to 2500 messages. Set this to 0 to enforce no message limit.
*
* lang: [IMAP only] (array) A list of languages (in priority order) to be
* used to display human readable messages returned by the IMAP server. Your
* IMAP server must support the LANGUAGE extension. By default, IMAP
* messages are output in the IMAP server default language.
*
* namespace: [IMAP only] (array) The list of namespaces that exist on the
* server. Example:
*
* array('#shared/', '#news/', '#public/')
*
* This parameter should only be used if you want to allow access to names
* namespaces that may not be publicly advertised by the IMAP server (see
* RFC 2342 [3]). These additional namespaces will be ADDED to the list of
* available namespaces returned by the server.
*
* preferred: (string | array) Useful if you want to use the same backends.php
* file for different machines. If the hostname of the IMP machine is
* identical to one of those in the preferred list, then that entry will be
* selected by default on the login screen. Otherwise the first entry in the
* list is selected.
*
* sort_force: (boolean) By default, IMP only allows sorting by criteria
* other than arrival time if using IMAP and the remote IMAP server supports
* the SORT extension (RFC 5256). If this setting is true, IMP will
* implement sorting on the web server. However, this requires that the
* selected sort criteria be downloaded from the remote server for EVERY
* message in a mailbox before the mailbox can be displayed. For mailboxes
* that contain more than a few hundred messages, this can be a tremendously
* expensive operation. Enable sorting on these installations at your peril.
*
* thread: [IMAP only] (string) Set the preferred thread sort algorithm. This
* algorithm must be supported by the remote server. By default, IMP
* attempts to use REFERENCES sorting and, if this is not available, will
* fallback to ORDEREDSUBJECT sorting performed by Horde on the local server.
*
* timeout: (integer) Set the server timeout (in seconds).
*/
/* Example configurations: */
// IMAP server
$servers['imap'] = array(
// ENABLED by default; will connect to IMAP port on local server
'disabled' => false,
'name' => 'IMAP Server',
'hostspec' => 'localhost',
'hordeauth' => false,
'protocol' => 'imap',
'port' => 143,
// Plaintext logins are disabled by default on IMAP servers (see RFC 3501
// [6.2.3]), so TLS is the only guaranteed authentication available by
// default.
'secure' => 'tls',
);
// POP3 server
$servers['pop'] = array(
// Disabled by default
'disabled' => true,
'name' => 'POP3 Server',
'hostspec' => 'localhost',
'hordeauth' => false,
'protocol' => 'pop',
'port' => 110,
// Default to secure TLS authentication by default (see RFC 2595 [4]).
'secure' => 'tls',
);
// Advanced example - mainly here to demonstrate the syntax of all available
// options.
$servers['advanced'] = array(
// Disabled by default
'disabled' => true,
'name' => 'Advanced IMAP Server',
'hostspec' => 'localhost',
'hordeauth' => false,
'protocol' => 'imap',
'port' => 143,
'secure' => 'tls',
'maildomain' => '',
'smtp' => array(
// 'auth' => true,
// 'debug' => false,
// 'horde_auth' => false,
// 'host' => 'smtp.example.com',
// 'lmtp' => false,
// 'localhost' => 'localhost',
// 'password' => null,
// /* Mail from a MUA SHOULD be sent via the mail submission port (587)
// * rather than the MTA port (25). (See RFC 6409/STD 72).
// * Note that mail submission REQUIRES some method of authentication
// * (whether explicit user/password credentials or configuring the
// * mail submission agent to automatically authenticate this host
// * based on the network location). */
// 'port' => 587,
// 'username' => null
),
'spam' => array(
// 'innocent' => array(
// 'display' => true,
//
// // Email reporting driver
// 'email' => null,
// 'email_format' => 'digest',
//
// // Null reporting driver
// 'null' => true,
//
// // Program reporting driver
// 'program' => null
// ),
// 'spam' => array(
// 'display' => false,
//
// // Email reporting driver
// 'email' => null,
// 'email_format' => 'digest',
//
// // Null reporting driver
// 'null' => true,
//
// // Program reporting driver
// 'program' => null
// ),
// // It is possible to directly define additional spam drivers.
// // The 'drivers' array should contain a list of driver objects
// // (these classes must implement the IMP_Spam_Base class).
// 'drivers' => array(
// new IMP_Example_Spam_Driver()
// )
),
'admin' => array(
// 'user' => 'cyrus',
// 'password' => 'cyrus_pass',
// 'userhierarchy' => 'user.'
),
'acl' => true,
'cache' => false,
// 'debug' => '/tmp/imp_imap.log',
// 'debug_raw' => false,
'quota' => array(
'driver' => 'imap',
'params' => array(
'hide_when_unlimited' => true,
'unit' => 'MB'
)
),
'special_mboxes' => array(
// IMP_Mailbox::MBOX_DRAFTS => 'Drafts',
// IMP_Mailbox::MBOX_SENT => 'Sent',
// IMP_Mailbox::MBOX_SPAM => 'Spam',
// IMP_Mailbox::MBOX_TEMPLATES => 'Templates',
// IMP_Mailbox::MBOX_TRASH => 'Trash',
// IMP_Mailbox::MBOX_USERSPECIAL => array(
// 'Example' => _("Example Special Mailbox")
// )
),
'autocreate_special' => false,
);