| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399 | <?phperror_reporting(E_ERROR);//error_reporting(E_ALL);/*PLEASE USE THE FILE "vars.local.inc.php" TO OVERWRITE SETTINGS AND MAKE THEM PERSISTENT!This file will be reset on upgrades.*/// SQL database connection variables$database_type = 'mysql';$database_sock = '/var/run/mysqld/mysqld.sock';$database_host = 'mysql';$database_user = getenv('DBUSER');$database_pass = getenv('DBPASS');$database_name = getenv('DBNAME');// Other variables$mailcow_hostname = getenv('MAILCOW_HOSTNAME');$default_pass_scheme = getenv('MAILCOW_PASS_SCHEME');// Autodiscover settings// ===// Auto-detect HTTPS port =>$https_port = strpos($_SERVER['HTTP_HOST'], ':');if ($https_port === FALSE) {  $https_port = 443;} else {  $https_port = substr($_SERVER['HTTP_HOST'], $https_port+1);}// Alternatively select port here =>//$https_port = 1234;// Other settings =>$autodiscover_config = array(  // General autodiscover service type: "activesync" or "imap"  // emClient uses autodiscover, but does not support ActiveSync. mailcow excludes emClient from ActiveSync.  // With SOGo disabled, the type will always fallback to imap. CalDAV and CardDAV will be excluded, too.  'autodiscoverType' => 'activesync',  // If autodiscoverType => activesync, also use ActiveSync (EAS) for Outlook desktop clients (>= Outlook 2013 on Windows)  // Outlook for Mac does not support ActiveSync  'useEASforOutlook' => 'no',  // Please don't use STARTTLS-enabled service ports in the "port" variable.  // The autodiscover service will always point to SMTPS and IMAPS (TLS-wrapped services).  // The autoconfig service will additionally announce the STARTTLS-enabled ports, specified in the "tlsport" variable.  'imap' => array(    'server' => $mailcow_hostname,    'port' => (int)filter_var(substr(getenv('IMAPS_PORT'), strrpos(getenv('IMAPS_PORT'), ':')), FILTER_SANITIZE_NUMBER_INT),    'tlsport' => (int)filter_var(substr(getenv('IMAP_PORT'), strrpos(getenv('IMAP_PORT'), ':')), FILTER_SANITIZE_NUMBER_INT)  ),  'pop3' => array(    'server' => $mailcow_hostname,    'port' => (int)filter_var(substr(getenv('POPS_PORT'), strrpos(getenv('POPS_PORT'), ':')), FILTER_SANITIZE_NUMBER_INT),    'tlsport' => (int)filter_var(substr(getenv('POP_PORT'), strrpos(getenv('POP_PORT'), ':')), FILTER_SANITIZE_NUMBER_INT)  ),  'smtp' => array(    'server' => $mailcow_hostname,    'port' => (int)filter_var(substr(getenv('SMTPS_PORT'), strrpos(getenv('SMTPS_PORT'), ':')), FILTER_SANITIZE_NUMBER_INT),    'tlsport' => (int)filter_var(substr(getenv('SUBMISSION_PORT'), strrpos(getenv('SUBMISSION_PORT'), ':')), FILTER_SANITIZE_NUMBER_INT)  ),  'activesync' => array(    'url' => 'https://' . $mailcow_hostname . ($https_port == 443 ? '' : ':' . $https_port) . '/Microsoft-Server-ActiveSync',  ),  'caldav' => array(    'server' => $mailcow_hostname,    'port' => $https_port,  ),  'carddav' => array(    'server' => $mailcow_hostname,    'port' => $https_port,  ),);// If false, we will use DEFAULT_LANG// Uses HTTP_ACCEPT_LANGUAGE header$DETECT_LANGUAGE = true;// Change default language$DEFAULT_LANG = 'en-gb';// Available languages// https://www.iso.org/obp/ui/#search// https://en.wikipedia.org/wiki/IETF_language_tag$AVAILABLE_LANGUAGES = array(  // 'ca-es' => 'Català (Catalan)',  'bg-bg' => 'Български (Bulgarian)',  'cs-cz' => 'Čeština (Czech)',  'da-dk' => 'Danish (Dansk)',  'de-de' => 'Deutsch (German)',  'en-gb' => 'English',  'es-es' => 'Español (Spanish)',  'fi-fi' => 'Suomi (Finish)',  'fr-fr' => 'Français (French)',  'gr-gr' => 'Ελληνικά (Greek)',  'hu-hu' => 'Magyar (Hungarian)',  'it-it' => 'Italiano (Italian)',  'ja-jp' => '日本語 (Japanese)',  'ko-kr' => '한국어 (Korean)',  'lv-lv' => 'latviešu (Latvian)',  'lt-lt' => 'Lietuvių (Lithuanian)',  'nb-no' => 'Norsk (Norwegian)',  'nl-nl' => 'Nederlands (Dutch)',  'pl-pl' => 'Język Polski (Polish)',  'pt-br' => 'Português brasileiro (Brazilian Portuguese)',  'pt-pt' => 'Português (Portuguese)',  'ro-ro' => 'Română (Romanian)',  'ru-ru' => 'Pусский (Russian)',  'si-si' => 'Slovenščina (Slovenian)',  'sk-sk' => 'Slovenčina (Slovak)',  'sv-se' => 'Svenska (Swedish)',  'tr-tr' => 'Türkçe (Turkish)',  'uk-ua' => 'Українська (Ukrainian)',  'vi-vn' => 'Tiếng Việt (Vietnamese)',  'zh-cn' => '简体中文 (Simplified Chinese)',  'zh-tw' => '繁體中文 (Traditional Chinese)',);// default theme is lumen// additional themes can be found here: https://bootswatch.com/// copy them to data/web/css/themes/{THEME-NAME}-bootstrap.css$UI_THEME = "lumen";// Show DKIM private keys - false by default$SHOW_DKIM_PRIV_KEYS = false;// mailcow Apps - buttons on login screen$MAILCOW_APPS = array(  array(    'name' => 'Webmail',    'link' => '/SOGo/so',    'user_link' => '/SOGo/so',    'hide' => true  ));// Logo max file size in bytes$LOGO_LIMITS['max_size'] = 15 * 1024 * 1024; // 15MB// Logo max width in pixels$LOGO_LIMITS['max_width'] = 1920;// Logo max height in pixels$LOGO_LIMITS['max_height'] = 1920;// Rows until pagination begins$PAGINATION_SIZE = 25;// Default number of rows/lines to display (log table)$LOG_LINES = 1000;// Rows until pagination begins (log table)$LOG_PAGINATION_SIZE = 50;// Session lifetime in seconds$SESSION_LIFETIME = 10800;// Session SameSite Policy// Use "None", "Lax" or "Strict"$SESSION_SAMESITE_POLICY = "Lax";// Name of the session cookie$SESSION_NAME = "MCSESSID";// Label for OTP devices$OTP_LABEL = "mailcow UI";// How long to wait (in s) for cURL Docker requests$DOCKER_TIMEOUT = 60;// Split DKIM key notation (bind format)$SPLIT_DKIM_255 = false;// OAuth2 settings$REFRESH_TOKEN_LIFETIME = 2678400;$ACCESS_TOKEN_LIFETIME = 86400;// Logout from mailcow after first OAuth2 session profile request$OAUTH2_FORGET_SESSION_AFTER_LOGIN = false;// Set a limit for mailbox and domain tagging$TAGGING_LIMIT = 25;// MAILBOX_DEFAULT_ATTRIBUTES define default attributes for new mailboxes// These settings will not change existing mailboxes// Force incoming TLS for new mailboxes by default$MAILBOX_DEFAULT_ATTRIBUTES['tls_enforce_in'] = false;// Force outgoing TLS for new mailboxes by default$MAILBOX_DEFAULT_ATTRIBUTES['tls_enforce_out'] = false;// Force password change on next login (only allows login to mailcow UI)$MAILBOX_DEFAULT_ATTRIBUTES['force_pw_update'] = false;// Enable SOGo access - Users will be redirected to SOGo after login (set to false to disable redirect by default)$MAILBOX_DEFAULT_ATTRIBUTES['sogo_access'] = true;// How to handle tagged emails// none      - No special handling// subfolder - Create subfolder under INBOX (e.g. "INBOX/Facebook")// subject   - Add tag to subject (e.g. "[Facebook] Subject")$MAILBOX_DEFAULT_ATTRIBUTES['tagged_mail_handler'] = "none";// Send notification when quarantine is not empty (never, hourly, daily, weekly)$MAILBOX_DEFAULT_ATTRIBUTES['quarantine_notification'] = 'hourly';// Mailbox has IMAP access by default$MAILBOX_DEFAULT_ATTRIBUTES['imap_access'] = true;// Mailbox has POP3 access by default$MAILBOX_DEFAULT_ATTRIBUTES['pop3_access'] = true;// Mailbox has SMTP access by default$MAILBOX_DEFAULT_ATTRIBUTES['smtp_access'] = true;// Mailbox has sieve access by default$MAILBOX_DEFAULT_ATTRIBUTES['sieve_access'] = true;// Mailbox receives notifications about...// "add_header" - mail that was put into the Junk folder// "reject" - mail that was rejected// "all" - mail that was rejected and put into the Junk folder$MAILBOX_DEFAULT_ATTRIBUTES['quarantine_category'] = 'reject';// Default mailbox format, should not be changed unless you know exactly, what you do, keep the trailing ":"// Check dovecot.conf for further changes (e.g. shared namespace)$MAILBOX_DEFAULT_ATTRIBUTES['mailbox_format'] = 'maildir:';// Show last IMAP and POP3 logins$SHOW_LAST_LOGIN = true;// Maximum number of password reset tokens that can be generated at once per user$PW_RESET_TOKEN_LIMIT = 3;// Maximum time in minutes a password reset token is valid$PW_RESET_TOKEN_LIFETIME = 15;// UV flag handling in FIDO2/WebAuthn - defaults to false to allow iOS logins// true = required// false = preferred// string 'required' 'preferred' 'discouraged'$WEBAUTHN_UV_FLAG_REGISTER = false;$WEBAUTHN_UV_FLAG_LOGIN = false;$WEBAUTHN_USER_PRESENT_FLAG = true;$FIDO2_UV_FLAG_REGISTER = 'preferred';$FIDO2_UV_FLAG_LOGIN = 'preferred'; // iOS ignores the key via NFC if required - known issue$FIDO2_USER_PRESENT_FLAG = true;$FIDO2_FORMATS = array('apple', 'android-key', 'android-safetynet', 'fido-u2f', 'none', 'packed', 'tpm');// Set visible Rspamd maps in mailcow UI, do not change unless you know what you are doing$RSPAMD_MAPS = array(  'regex' => array(    'Header-From: Denylist' => 'global_mime_from_blacklist.map',    'Header-From: Allowlist' => 'global_mime_from_whitelist.map',    'Envelope Sender Denylist' => 'global_smtp_from_blacklist.map',    'Envelope Sender Allowlist' => 'global_smtp_from_whitelist.map',    'Recipient Denylist' => 'global_rcpt_blacklist.map',    'Recipient Allowlist' => 'global_rcpt_whitelist.map',    'Fishy TLDS (only fired in combination with bad words)' => 'fishy_tlds.map',    'Bad Words (only fired in combination with fishy TLDs)' => 'bad_words.map',    'Bad Words DE (only fired in combination with fishy TLDs)' => 'bad_words_de.map',    'Bad Languages' => 'bad_languages.map',    'Bulk Mail Headers' => 'bulk_header.map',    'Bad (Junk) Mail Headers' => 'bad_header.map',    'Monitoring Hosts' => 'monitoring_nolog.map'  ));$IMAPSYNC_OPTIONS = array(  'whitelist' => array(    'abort',    'authmd51',    'authmd52',    'authmech1',    'authmech2',    'authuser1',    'authuser2',    'debug',    'debugcontent',    'debugcrossduplicates',    'debugflags',    'debugfolders',    'debugimap',    'debugimap1',    'debugimap2',    'debugmemory',    'debugssl',    'delete1emptyfolders',    'delete2folders',    'disarmreadreceipts',    'domain1',    'domain2',    'domino1',    'domino2',    'dry',    'errorsmax',    'exchange1',    'exchange2',    'exitwhenover',    'expunge1',    'f1f2',    'filterbuggyflags',    'folder',    'folderfirst',    'folderlast',    'folderrec',    'gmail1',    'gmail2',    'idatefromheader',    'include',    'inet4',    'inet6',    'justconnect',    'justfolders',    'justfoldersizes',    'justlogin',    'keepalive1',    'keepalive2',    'log',    'logdir',    'logfile',    'maxbytesafter',    'maxlinelength',    'maxmessagespersecond',    'maxsize',    'maxsleep',    'minage',    'minsize',    'noabletosearch',    'noabletosearch1',    'noabletosearch2',    'noexpunge1',    'noexpunge2',    'nofoldersizesatend',    'noid',    'nolog',    'nomixfolders',    'noresyncflags',    'nossl1',    'nossl2',    'nosyncacls',    'notls1',    'notls2',    'nouidexpunge2',    'nousecache',    'oauthaccesstoken1',    'oauthaccesstoken2',    'oauthdirect1',    'oauthdirect2',    'office1',    'office2',    'pidfile',    'pidfilelocking',    'prefix1',    'prefix2',    'proxyauth1',    'proxyauth2',    'resyncflags',    'resynclabels',    'search',    'search1',    'search2',    'sep1',    'sep2',    'showpasswords',    'skipemptyfolders',    'ssl2',    'sslargs1',    'sslargs2',    'subfolder1',    'subscribe',    'subscribed',    'syncacls',    'syncduplicates',    'syncinternaldates',    'synclabels',    'tests',    'testslive',    'testslive6',    'tls2',    'truncmess',    'usecache',    'useheader',    'useuid'  ),  'blacklist' => array(    'skipmess',    'delete2foldersonly',    'delete2foldersbutnot',    'regexflag',    'regexmess',    'pipemess',    'regextrans2',    'maxlinelengthcmd'  ));
 |