remove 'default_password_scheme' for dovecot configs as hashes can be different now and are read by given hash-algo prefix;

Signed-off-by: Michael Kaufmann <d00p@froxlor.org>
This commit is contained in:
Michael Kaufmann
2022-11-12 09:38:43 +01:00
parent f49fd5f0f7
commit 1d938f2a43
14 changed files with 248 additions and 194 deletions

View File

@@ -93,7 +93,7 @@ if ($action == 'delete' && $id > 0) {
'page' => $page 'page' => $page
]); ]);
} }
} elseif ($action == 'add') { } elseif (isset($_POST['send']) && $_POST['send'] == 'send' && $action == 'add') {
$ins_stmt = Database::prepare(" $ins_stmt = Database::prepare("
INSERT INTO `" . TABLE_API_KEYS . "` SET INSERT INTO `" . TABLE_API_KEYS . "` SET
`apikey` = :key, `secret` = :secret, `adminid` = :aid, `customerid` = :cid, `valid_until` = '-1', `allowed_from` = '' `apikey` = :key, `secret` = :secret, `adminid` = :aid, `customerid` = :cid, `valid_until` = '-1', `allowed_from` = ''

View File

@@ -916,7 +916,7 @@ INSERT INTO `cronjobs_run` (`id`, `module`, `cronfile`, `cronclass`, `interval`,
DROP TABLE IF EXISTS `ftp_quotalimits`; DROP TABLE IF EXISTS `ftp_quotalimits`;
CREATE TABLE IF NOT EXISTS `ftp_quotalimits` ( CREATE TABLE IF NOT EXISTS `ftp_quotalimits` (
`name` varchar(30) default NULL, `name` varchar(255) default NULL,
`quota_type` enum('user','group','class','all') NOT NULL default 'user', `quota_type` enum('user','group','class','all') NOT NULL default 'user',
`per_session` enum('false','true') NOT NULL default 'false', `per_session` enum('false','true') NOT NULL default 'false',
`limit_type` enum('soft','hard') NOT NULL default 'hard', `limit_type` enum('soft','hard') NOT NULL default 'hard',
@@ -935,7 +935,7 @@ INSERT INTO `ftp_quotalimits` (`name`, `quota_type`, `per_session`, `limit_type`
DROP TABLE IF EXISTS `ftp_quotatallies`; DROP TABLE IF EXISTS `ftp_quotatallies`;
CREATE TABLE IF NOT EXISTS `ftp_quotatallies` ( CREATE TABLE IF NOT EXISTS `ftp_quotatallies` (
`name` varchar(30) NOT NULL, `name` varchar(255) NOT NULL,
`quota_type` enum('user','group','class','all') NOT NULL, `quota_type` enum('user','group','class','all') NOT NULL,
`bytes_in_used` float NOT NULL, `bytes_in_used` float NOT NULL,
`bytes_out_used` float NOT NULL, `bytes_out_used` float NOT NULL,

View File

@@ -37,11 +37,11 @@ if (!defined('_CRON_UPDATE')) {
} }
// last 0.10.x release // last 0.10.x release
if (Froxlor::isFroxlorVersion('0.10.38')) { if (Froxlor::isFroxlorVersion('0.10.38.2')) {
$update_to = '2.0.0-beta1'; $update_to = '2.0.0-beta1';
Update::showUpdateStep("Updating from 0.10.38 to ".$update_to, false); Update::showUpdateStep("Updating from 0.10.38.2 to ".$update_to, false);
Update::showUpdateStep("Removing unused table"); Update::showUpdateStep("Removing unused table");
Database::query("DROP TABLE IF EXISTS `panel_sessions`;"); Database::query("DROP TABLE IF EXISTS `panel_sessions`;");
@@ -70,6 +70,8 @@ if (Froxlor::isFroxlorVersion('0.10.38')) {
Database::query("ALTER TABLE `" . TABLE_PANEL_CUSTOMERS . "` ADD `allowed_mysqlserver` varchar(500) NOT NULL default '[0]';"); Database::query("ALTER TABLE `" . TABLE_PANEL_CUSTOMERS . "` ADD `allowed_mysqlserver` varchar(500) NOT NULL default '[0]';");
// ftp_users adjustments // ftp_users adjustments
Database::query("ALTER TABLE `" . TABLE_FTP_USERS . "` CHANGE `password` varchar(255) NOT NULL default '';"); Database::query("ALTER TABLE `" . TABLE_FTP_USERS . "` CHANGE `password` varchar(255) NOT NULL default '';");
Database::query("ALTER TABLE `" . TABLE_FTP_QUOTALIMITS . "` CHANGE `name` varchar(255) default NULL;");
Database::query("ALTER TABLE `" . TABLE_FTP_QUOTATALLIES . "` CHANGE `name` varchar(255) default NULL;");
// mail_users adjustments // mail_users adjustments
Database::query("ALTER TABLE `" . TABLE_MAIL_USERS . "` CHANGE `password` varchar(255) NOT NULL default '';"); Database::query("ALTER TABLE `" . TABLE_MAIL_USERS . "` CHANGE `password` varchar(255) NOT NULL default '';");
Database::query("ALTER TABLE `" . TABLE_MAIL_USERS . "` CHANGE `password_enc` varchar(255) NOT NULL default '';"); Database::query("ALTER TABLE `" . TABLE_MAIL_USERS . "` CHANGE `password_enc` varchar(255) NOT NULL default '';");
@@ -174,6 +176,13 @@ if (Froxlor::isFroxlorVersion('0.10.38')) {
Database::query("DELETE FROM `" . TABLE_PANEL_SETTINGS . "` WHERE `settinggroup` = 'system' AND `varname` = 'letsencryptstate'"); Database::query("DELETE FROM `" . TABLE_PANEL_SETTINGS . "` WHERE `settinggroup` = 'system' AND `varname` = 'letsencryptstate'");
Update::lastStepStatus(0); Update::lastStepStatus(0);
Update::showUpdateStep("Updating email account password-hashes");
Database::query("UPDATE `" . TABLE_MAIL_USERS . "` SET `password` = REPLACE(`password`, '$1$', '{MD5-CRYPT}$1$') WHERE SUBSTRING(`password`, 1, 3) = '$1$'");
Database::query("UPDATE `" . TABLE_MAIL_USERS . "` SET `password` = REPLACE(`password`, '$5$', '{SHA256-CRYPT}$5$') WHERE SUBSTRING(`password`, 1, 3) = '$5$'");
Database::query("UPDATE `" . TABLE_MAIL_USERS . "` SET `password` = REPLACE(`password`, '$6$', '{SHA512-CRYPT}$6$') WHERE SUBSTRING(`password`, 1, 3) = '$6$'");
Database::query("UPDATE `" . TABLE_MAIL_USERS . "` SET `password` = REPLACE(`password`, '$2y$', '{BLF-CRYPT}$2y$') WHERE SUBSTRING(`password`, 1, 4) = '$2y$'");
Update::lastStepStatus(0);
Froxlor::updateToVersion($update_to); Froxlor::updateToVersion($update_to);
} }

View File

@@ -251,6 +251,10 @@ class Ajax
$allowed_from = isset($_POST['allowed_from']) ? $_POST['allowed_from'] : ""; $allowed_from = isset($_POST['allowed_from']) ? $_POST['allowed_from'] : "";
$valid_until = isset($_POST['valid_until']) ? $_POST['valid_until'] : ""; $valid_until = isset($_POST['valid_until']) ? $_POST['valid_until'] : "";
if (empty($keyid)) {
return $this->errorResponse('Invalid call', 406);
}
// validate allowed_from // validate allowed_from
if (!empty($allowed_from)) { if (!empty($allowed_from)) {
$ip_list = array_map('trim', explode(",", $allowed_from)); $ip_list = array_map('trim', explode(",", $allowed_from));

View File

@@ -555,7 +555,7 @@ abstract class ApiCommand extends ApiParameter
* @param boolean $internal * @param boolean $internal
* optional whether called internally, default false * optional whether called internally, default false
* *
* @return ApiCommand * @return static
* @throws Exception * @throws Exception
*/ */
public static function getLocal($userinfo = null, $params = null, $internal = false) public static function getLocal($userinfo = null, $params = null, $internal = false)

View File

@@ -146,8 +146,20 @@ class EmailAccounts extends ApiCommand implements ResourceEntity
Response::standardError('passwordshouldnotbeusername', '', true); Response::standardError('passwordshouldnotbeusername', '', true);
} }
// prefix hash-algo
switch (Settings::Get('system.passwordcryptfunc')) {
case PASSWORD_ARGON2I:
$cpPrefix = '{ARGON2I}';
break;
case PASSWORD_ARGON2ID:
$cpPrefix = '{ARGON2ID}';
break;
default:
$cpPrefix = '{BLF-CRYPT}';
break;
}
// encrypt the password // encrypt the password
$cryptPassword = Crypt::makeCryptPassword($password); $cryptPassword = $cpPrefix . Crypt::makeCryptPassword($password);
$email_user = substr($email_full, 0, strrpos($email_full, "@")); $email_user = substr($email_full, 0, strrpos($email_full, "@"));
$email_domain = substr($email_full, strrpos($email_full, "@") + 1); $email_domain = substr($email_full, strrpos($email_full, "@") + 1);
@@ -376,7 +388,20 @@ class EmailAccounts extends ApiCommand implements ResourceEntity
Response::standardError('passwordshouldnotbeusername', '', true); Response::standardError('passwordshouldnotbeusername', '', true);
} }
$password = Crypt::validatePassword($password, true); $password = Crypt::validatePassword($password, true);
$cryptPassword = Crypt::makeCryptPassword($password); // prefix hash-algo
switch (Settings::Get('system.passwordcryptfunc')) {
case PASSWORD_ARGON2I:
$cpPrefix = '{ARGON2I}';
break;
case PASSWORD_ARGON2ID:
$cpPrefix = '{ARGON2ID}';
break;
default:
$cpPrefix = '{BLF-CRYPT}';
break;
}
// encrypt the password
$cryptPassword = $cpPrefix . Crypt::makeCryptPassword($password);
$upd_query .= (Settings::Get('system.mailpwcleartext') == '1' ? "`password` = :password, " : '') . "`password_enc`= :password_enc"; $upd_query .= (Settings::Get('system.mailpwcleartext') == '1' ? "`password` = :password, " : '') . "`password_enc`= :password_enc";
$upd_params['password_enc'] = $cryptPassword; $upd_params['password_enc'] = $cryptPassword;
if (Settings::Get('system.mailpwcleartext') == '1') { if (Settings::Get('system.mailpwcleartext') == '1') {

View File

@@ -1516,7 +1516,7 @@ user = <SQL_UNPRIVILEGED_USER>
password = <SQL_UNPRIVILEGED_PASSWORD> password = <SQL_UNPRIVILEGED_PASSWORD>
dbname = <SQL_DB> dbname = <SQL_DB>
hosts = <SQL_HOST> hosts = <SQL_HOST>
query = SELECT destination FROM mail_virtual AS v, panel_customers AS c WHERE c.customerid = v.customerid AND c.deactivated = 0 AND v.email = '%s' AND trim(v.destination) <> '' query = SELECT destination FROM mail_virtual AS v, panel_customers AS c WHERE c.customerid = v.customerid AND c.deactivated = 0 AND v.email = '%s' AND trim(v.destination) <> ''
]]> ]]>
</content> </content>
</file> </file>
@@ -1685,7 +1685,7 @@ data_directory = /var/lib/postfix
#default_privs = nobody #default_privs = nobody
# INTERNET HOST AND DOMAIN NAMES # INTERNET HOST AND DOMAIN NAMES
# #
# The myhostname parameter specifies the internet hostname of this # The myhostname parameter specifies the internet hostname of this
# mail system. The default is to use the fully-qualified domain name # mail system. The default is to use the fully-qualified domain name
# from gethostname(). $myhostname is used as a default value for many # from gethostname(). $myhostname is used as a default value for many
@@ -1711,7 +1711,7 @@ myhostname = mail.$mydomain
mydomain = <SERVERNAME> mydomain = <SERVERNAME>
# SENDING MAIL # SENDING MAIL
# #
# The myorigin parameter specifies the domain that locally-posted # The myorigin parameter specifies the domain that locally-posted
# mail appears to come from. The default is to append $myhostname, # mail appears to come from. The default is to append $myhostname,
# which is fine for small sites. If you run a domain with multiple # which is fine for small sites. If you run a domain with multiple
@@ -1813,7 +1813,7 @@ mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# #
# - You define $mydestination domain recipients in files other than # - You define $mydestination domain recipients in files other than
# /etc/passwd, /etc/aliases, or the $virtual_alias_maps files. # /etc/passwd, /etc/aliases, or the $virtual_alias_maps files.
# For example, you define $mydestination domain recipients in # For example, you define $mydestination domain recipients in
# the $virtual_mailbox_maps files. # the $virtual_mailbox_maps files.
# #
# - You redefine the local delivery agent in master.cf. # - You redefine the local delivery agent in master.cf.
@@ -1833,7 +1833,7 @@ mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# The right-hand side of the lookup tables is conveniently ignored. # The right-hand side of the lookup tables is conveniently ignored.
# In the left-hand side, specify a bare username, an @domain.tld # In the left-hand side, specify a bare username, an @domain.tld
# wild-card, or specify a user@domain.tld address. # wild-card, or specify a user@domain.tld address.
# #
#local_recipient_maps = unix:passwd.byname $alias_maps #local_recipient_maps = unix:passwd.byname $alias_maps
#local_recipient_maps = proxy:unix:passwd.byname $alias_maps #local_recipient_maps = proxy:unix:passwd.byname $alias_maps
#local_recipient_maps = #local_recipient_maps =
@@ -1865,16 +1865,16 @@ unknown_local_recipient_reject_code = 550
# clients in the same IP subnetworks as the local machine. # clients in the same IP subnetworks as the local machine.
# On Linux, this does works correctly only with interfaces specified # On Linux, this does works correctly only with interfaces specified
# with the "ifconfig" command. # with the "ifconfig" command.
# #
# Specify "mynetworks_style = class" when Postfix should "trust" SMTP # Specify "mynetworks_style = class" when Postfix should "trust" SMTP
# clients in the same IP class A/B/C networks as the local machine. # clients in the same IP class A/B/C networks as the local machine.
# Don't do this with a dialup site - it would cause Postfix to "trust" # Don't do this with a dialup site - it would cause Postfix to "trust"
# your entire provider's network. Instead, specify an explicit # your entire provider's network. Instead, specify an explicit
# mynetworks list by hand, as described below. # mynetworks list by hand, as described below.
# #
# Specify "mynetworks_style = host" when Postfix should "trust" # Specify "mynetworks_style = host" when Postfix should "trust"
# only the local machine. # only the local machine.
# #
#mynetworks_style = class #mynetworks_style = class
#mynetworks_style = subnet #mynetworks_style = subnet
#mynetworks_style = host #mynetworks_style = host
@@ -1904,7 +1904,7 @@ mynetworks = 127.0.0.0/8
# - from "untrusted" clients to destinations that match $relay_domains or # - from "untrusted" clients to destinations that match $relay_domains or
# subdomains thereof, except addresses with sender-specified routing. # subdomains thereof, except addresses with sender-specified routing.
# The default relay_domains value is $mydestination. # The default relay_domains value is $mydestination.
# #
# In addition to the above, the Postfix SMTP server by default accepts mail # In addition to the above, the Postfix SMTP server by default accepts mail
# that Postfix is final destination for: # that Postfix is final destination for:
# - destinations that match $inet_interfaces or $proxy_interfaces, # - destinations that match $inet_interfaces or $proxy_interfaces,
@@ -1912,7 +1912,7 @@ mynetworks = 127.0.0.0/8
# - destinations that match $virtual_alias_domains, # - destinations that match $virtual_alias_domains,
# - destinations that match $virtual_mailbox_domains. # - destinations that match $virtual_mailbox_domains.
# These destinations do not need to be listed in $relay_domains. # These destinations do not need to be listed in $relay_domains.
# #
# Specify a list of hosts or domains, /file/name patterns or type:name # Specify a list of hosts or domains, /file/name patterns or type:name
# lookup tables, separated by commas and/or whitespace. Continue # lookup tables, separated by commas and/or whitespace. Continue
# long lines by starting the next line with whitespace. A file name # long lines by starting the next line with whitespace. A file name
@@ -1957,7 +1957,7 @@ mynetworks = 127.0.0.0/8
# The right-hand side of the lookup tables is conveniently ignored. # The right-hand side of the lookup tables is conveniently ignored.
# In the left-hand side, specify an @domain.tld wild-card, or specify # In the left-hand side, specify an @domain.tld wild-card, or specify
# a user@domain.tld address. # a user@domain.tld address.
# #
#relay_recipient_maps = hash:/etc/postfix/relay_recipients #relay_recipient_maps = hash:/etc/postfix/relay_recipients
# INPUT RATE CONTROL # INPUT RATE CONTROL
@@ -1966,15 +1966,15 @@ mynetworks = 127.0.0.0/8
# flow control. This feature is turned on by default, although it # flow control. This feature is turned on by default, although it
# still needs further development (it's disabled on SCO UNIX due # still needs further development (it's disabled on SCO UNIX due
# to an SCO bug). # to an SCO bug).
# #
# A Postfix process will pause for $in_flow_delay seconds before # A Postfix process will pause for $in_flow_delay seconds before
# accepting a new message, when the message arrival rate exceeds the # accepting a new message, when the message arrival rate exceeds the
# message delivery rate. With the default 100 SMTP server process # message delivery rate. With the default 100 SMTP server process
# limit, this limits the mail inflow to 100 messages a second more # limit, this limits the mail inflow to 100 messages a second more
# than the number of messages delivered per second. # than the number of messages delivered per second.
# #
# Specify 0 to disable the feature. Valid delays are 0..10. # Specify 0 to disable the feature. Valid delays are 0..10.
# #
#in_flow_delay = 1s #in_flow_delay = 1s
# ADDRESS REWRITING # ADDRESS REWRITING
@@ -2004,7 +2004,7 @@ mynetworks = 127.0.0.0/8
# On systems with NIS, the default is to search the local alias # On systems with NIS, the default is to search the local alias
# database, then the NIS alias database. See aliases(5) for syntax # database, then the NIS alias database. See aliases(5) for syntax
# details. # details.
# #
# If you change the alias database, run "postalias /etc/aliases" (or # If you change the alias database, run "postalias /etc/aliases" (or
# wherever your system stores the mail alias file), or simply run # wherever your system stores the mail alias file), or simply run
# "newaliases" to build the necessary DBM or DB file. # "newaliases" to build the necessary DBM or DB file.
@@ -2047,7 +2047,7 @@ mynetworks = 127.0.0.0/8
# #
#home_mailbox = Mailbox #home_mailbox = Mailbox
#home_mailbox = Maildir/ #home_mailbox = Maildir/
# The mail_spool_directory parameter specifies the directory where # The mail_spool_directory parameter specifies the directory where
# UNIX-style mailboxes are kept. The default setting depends on the # UNIX-style mailboxes are kept. The default setting depends on the
# system type. # system type.
@@ -2089,7 +2089,7 @@ mailbox_command = /usr/lib/dovecot/deliver
# #
# NOTE: if you use this feature for accounts not in the UNIX password # NOTE: if you use this feature for accounts not in the UNIX password
# file, then you must update the "local_recipient_maps" setting in # file, then you must update the "local_recipient_maps" setting in
# the main.cf file, otherwise the SMTP server will reject mail for # the main.cf file, otherwise the SMTP server will reject mail for
# non-UNIX accounts with "User unknown in local recipient table". # non-UNIX accounts with "User unknown in local recipient table".
# #
# Cyrus IMAP over LMTP. Specify ``lmtpunix cmd="lmtpd" # Cyrus IMAP over LMTP. Specify ``lmtpunix cmd="lmtpd"
@@ -2111,7 +2111,7 @@ mailbox_command = /usr/lib/dovecot/deliver
# #
# NOTE: if you use this feature for accounts not in the UNIX password # NOTE: if you use this feature for accounts not in the UNIX password
# file, then you must update the "local_recipient_maps" setting in # file, then you must update the "local_recipient_maps" setting in
# the main.cf file, otherwise the SMTP server will reject mail for # the main.cf file, otherwise the SMTP server will reject mail for
# non-UNIX accounts with "User unknown in local recipient table". # non-UNIX accounts with "User unknown in local recipient table".
# #
#fallback_transport = lmtp:unix:/file/name #fallback_transport = lmtp:unix:/file/name
@@ -2134,15 +2134,15 @@ mailbox_command = /usr/lib/dovecot/deliver
# #
# NOTE: if you use this feature for accounts not in the UNIX password # NOTE: if you use this feature for accounts not in the UNIX password
# file, then you must specify "local_recipient_maps =" (i.e. empty) in # file, then you must specify "local_recipient_maps =" (i.e. empty) in
# the main.cf file, otherwise the SMTP server will reject mail for # the main.cf file, otherwise the SMTP server will reject mail for
# non-UNIX accounts with "User unknown in local recipient table". # non-UNIX accounts with "User unknown in local recipient table".
# #
#luser_relay = $user@other.host #luser_relay = $user@other.host
#luser_relay = $local@other.host #luser_relay = $local@other.host
#luser_relay = admin+$local #luser_relay = admin+$local
# JUNK MAIL CONTROLS # JUNK MAIL CONTROLS
# #
# The controls listed here are only a very small subset. The file # The controls listed here are only a very small subset. The file
# SMTPD_ACCESS_README provides an overview. # SMTPD_ACCESS_README provides an overview.
@@ -2164,11 +2164,11 @@ mailbox_command = /usr/lib/dovecot/deliver
# deferred mail, so that mail can be flushed quickly with the SMTP # deferred mail, so that mail can be flushed quickly with the SMTP
# "ETRN domain.tld" command, or by executing "sendmail -qRdomain.tld". # "ETRN domain.tld" command, or by executing "sendmail -qRdomain.tld".
# See the ETRN_README document for a detailed description. # See the ETRN_README document for a detailed description.
# #
# The fast_flush_domains parameter controls what destinations are # The fast_flush_domains parameter controls what destinations are
# eligible for this service. By default, they are all domains that # eligible for this service. By default, they are all domains that
# this server is willing to relay mail to. # this server is willing to relay mail to.
# #
#fast_flush_domains = $relay_domains #fast_flush_domains = $relay_domains
# SHOW SOFTWARE VERSION OR NOT # SHOW SOFTWARE VERSION OR NOT
@@ -2194,7 +2194,7 @@ smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
# too many are run at the same time. With SMTP deliveries, 10 # too many are run at the same time. With SMTP deliveries, 10
# simultaneous connections to the same domain could be sufficient to # simultaneous connections to the same domain could be sufficient to
# raise eyebrows. # raise eyebrows.
# #
# Each message delivery transport has its XXX_destination_concurrency_limit # Each message delivery transport has its XXX_destination_concurrency_limit
# parameter. The default is $default_destination_concurrency_limit for # parameter. The default is $default_destination_concurrency_limit for
# most delivery transports. For the local delivery agent the default is 2. # most delivery transports. For the local delivery agent the default is 2.
@@ -2252,11 +2252,11 @@ debugger_command =
# INSTALL-TIME CONFIGURATION INFORMATION # INSTALL-TIME CONFIGURATION INFORMATION
# #
# The following parameters are used when installing a new Postfix version. # The following parameters are used when installing a new Postfix version.
# #
# sendmail_path: The full pathname of the Postfix sendmail command. # sendmail_path: The full pathname of the Postfix sendmail command.
# This is the Sendmail-compatible mail posting interface. # This is the Sendmail-compatible mail posting interface.
# #
sendmail_path = /usr/sbin/sendmail sendmail_path = /usr/sbin/sendmail
# newaliases_path: The full pathname of the Postfix newaliases command. # newaliases_path: The full pathname of the Postfix newaliases command.
# This is the Sendmail-compatible command to build alias databases. # This is the Sendmail-compatible command to build alias databases.
@@ -2265,7 +2265,7 @@ newaliases_path = /usr/bin/newaliases
# mailq_path: The full pathname of the Postfix mailq command. This # mailq_path: The full pathname of the Postfix mailq command. This
# is the Sendmail-compatible mail queue listing command. # is the Sendmail-compatible mail queue listing command.
# #
mailq_path = /usr/bin/mailq mailq_path = /usr/bin/mailq
# setgid_group: The group for mail submission and queue management # setgid_group: The group for mail submission and queue management
@@ -2692,7 +2692,7 @@ connect = host=<SQL_HOST> dbname=<SQL_DB> user=<SQL_UNPRIVILEGED_USER> password=
# List of supported schemes is in # List of supported schemes is in
# http://wiki2.dovecot.org/Authentication/PasswordSchemes # http://wiki2.dovecot.org/Authentication/PasswordSchemes
# #
default_pass_scheme = CRYPT #default_pass_scheme = CRYPT
# passdb query to retrieve the password. It can return fields: # passdb query to retrieve the password. It can return fields:
# password - The user's password. This field must be returned. # password - The user's password. This field must be returned.
@@ -4672,7 +4672,7 @@ aliases: files
<command><![CDATA[chmod 1777 {{settings.system.mod_fcgid_tmpdir}}]]></command> <command><![CDATA[chmod 1777 {{settings.system.mod_fcgid_tmpdir}}]]></command>
<command><![CDATA[a2dismod php7.2]]></command> <command><![CDATA[a2dismod php7.2]]></command>
</commands> </commands>
<!-- instead of just restarting apache, we let the cronjob do all the <!-- instead of just restarting apache, we let the cronjob do all the
dirty work --> dirty work -->
<command><![CDATA[php {{const.install_dir}}bin/froxlor-cli froxlor:cron --force]]></command> <command><![CDATA[php {{const.install_dir}}bin/froxlor-cli froxlor:cron --force]]></command>
</daemon> </daemon>
@@ -4705,7 +4705,7 @@ aliases: files
</visibility> </visibility>
<command><![CDATA[a2dismod php7.2]]></command> <command><![CDATA[a2dismod php7.2]]></command>
</commands> </commands>
<!-- instead of just restarting apache, we let the cronjob do all the <!-- instead of just restarting apache, we let the cronjob do all the
dirty work --> dirty work -->
<command><![CDATA[php {{const.install_dir}}bin/froxlor-cli froxlor:cron --force]]></command> <command><![CDATA[php {{const.install_dir}}bin/froxlor-cli froxlor:cron --force]]></command>
</daemon> </daemon>

View File

@@ -2468,7 +2468,7 @@ dovecot unix - n n - - pipe
<content><![CDATA[ <content><![CDATA[
driver = mysql driver = mysql
connect = host=<SQL_HOST> dbname=<SQL_DB> user=<SQL_UNPRIVILEGED_USER> password=<SQL_UNPRIVILEGED_PASSWORD> connect = host=<SQL_HOST> dbname=<SQL_DB> user=<SQL_UNPRIVILEGED_USER> password=<SQL_UNPRIVILEGED_PASSWORD>
default_pass_scheme = CRYPT #default_pass_scheme = CRYPT
user_query = SELECT CONCAT(homedir, maildir) AS home, CONCAT('maildir:', homedir, maildir) AS mail, uid, gid, CONCAT('*:storage=', quota, 'M') as quota_rule FROM mail_users WHERE (username = '%u' OR email = '%u') user_query = SELECT CONCAT(homedir, maildir) AS home, CONCAT('maildir:', homedir, maildir) AS mail, uid, gid, CONCAT('*:storage=', quota, 'M') as quota_rule FROM mail_users WHERE (username = '%u' OR email = '%u')
password_query = SELECT username AS user, password_enc AS password, CONCAT(homedir, maildir) AS userdb_home, uid AS userdb_uid, gid AS userdb_gid, CONCAT('maildir:', homedir, maildir) AS userdb_mail, CONCAT('*:storage=', quota, 'M') as userdb_quota_rule FROM mail_users WHERE (username = '%u' OR email = '%u') AND ((imap = 1 AND '%Ls' = 'imap') OR (pop3 = 1 AND '%Ls' = 'pop3') OR ((postfix = 'Y' AND '%Ls' = 'smtp') OR (postfix = 'Y' AND '%Ls' = 'sieve'))) password_query = SELECT username AS user, password_enc AS password, CONCAT(homedir, maildir) AS userdb_home, uid AS userdb_uid, gid AS userdb_gid, CONCAT('maildir:', homedir, maildir) AS userdb_mail, CONCAT('*:storage=', quota, 'M') as userdb_quota_rule FROM mail_users WHERE (username = '%u' OR email = '%u') AND ((imap = 1 AND '%Ls' = 'imap') OR (pop3 = 1 AND '%Ls' = 'pop3') OR ((postfix = 'Y' AND '%Ls' = 'smtp') OR (postfix = 'Y' AND '%Ls' = 'sieve')))
iterate_query = "SELECT username AS user FROM mail_users WHERE (imap = 1 OR pop3 = 1)" iterate_query = "SELECT username AS user FROM mail_users WHERE (imap = 1 OR pop3 = 1)"

View File

@@ -1475,7 +1475,7 @@ user = <SQL_UNPRIVILEGED_USER>
password = <SQL_UNPRIVILEGED_PASSWORD> password = <SQL_UNPRIVILEGED_PASSWORD>
dbname = <SQL_DB> dbname = <SQL_DB>
hosts = <SQL_HOST> hosts = <SQL_HOST>
query = SELECT destination FROM mail_virtual AS v, panel_customers AS c WHERE c.customerid = v.customerid AND c.deactivated = 0 AND v.email = '%s' AND trim(v.destination) <> '' query = SELECT destination FROM mail_virtual AS v, panel_customers AS c WHERE c.customerid = v.customerid AND c.deactivated = 0 AND v.email = '%s' AND trim(v.destination) <> ''
]]> ]]>
</content> </content>
</file> </file>
@@ -1644,7 +1644,7 @@ data_directory = /var/lib/postfix
#default_privs = nobody #default_privs = nobody
# INTERNET HOST AND DOMAIN NAMES # INTERNET HOST AND DOMAIN NAMES
# #
# The myhostname parameter specifies the internet hostname of this # The myhostname parameter specifies the internet hostname of this
# mail system. The default is to use the fully-qualified domain name # mail system. The default is to use the fully-qualified domain name
# from gethostname(). $myhostname is used as a default value for many # from gethostname(). $myhostname is used as a default value for many
@@ -1670,7 +1670,7 @@ myhostname = mail.$mydomain
mydomain = <SERVERNAME> mydomain = <SERVERNAME>
# SENDING MAIL # SENDING MAIL
# #
# The myorigin parameter specifies the domain that locally-posted # The myorigin parameter specifies the domain that locally-posted
# mail appears to come from. The default is to append $myhostname, # mail appears to come from. The default is to append $myhostname,
# which is fine for small sites. If you run a domain with multiple # which is fine for small sites. If you run a domain with multiple
@@ -1772,7 +1772,7 @@ mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# #
# - You define $mydestination domain recipients in files other than # - You define $mydestination domain recipients in files other than
# /etc/passwd, /etc/aliases, or the $virtual_alias_maps files. # /etc/passwd, /etc/aliases, or the $virtual_alias_maps files.
# For example, you define $mydestination domain recipients in # For example, you define $mydestination domain recipients in
# the $virtual_mailbox_maps files. # the $virtual_mailbox_maps files.
# #
# - You redefine the local delivery agent in master.cf. # - You redefine the local delivery agent in master.cf.
@@ -1792,7 +1792,7 @@ mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# The right-hand side of the lookup tables is conveniently ignored. # The right-hand side of the lookup tables is conveniently ignored.
# In the left-hand side, specify a bare username, an @domain.tld # In the left-hand side, specify a bare username, an @domain.tld
# wild-card, or specify a user@domain.tld address. # wild-card, or specify a user@domain.tld address.
# #
#local_recipient_maps = unix:passwd.byname $alias_maps #local_recipient_maps = unix:passwd.byname $alias_maps
#local_recipient_maps = proxy:unix:passwd.byname $alias_maps #local_recipient_maps = proxy:unix:passwd.byname $alias_maps
#local_recipient_maps = #local_recipient_maps =
@@ -1824,16 +1824,16 @@ unknown_local_recipient_reject_code = 550
# clients in the same IP subnetworks as the local machine. # clients in the same IP subnetworks as the local machine.
# On Linux, this does works correctly only with interfaces specified # On Linux, this does works correctly only with interfaces specified
# with the "ifconfig" command. # with the "ifconfig" command.
# #
# Specify "mynetworks_style = class" when Postfix should "trust" SMTP # Specify "mynetworks_style = class" when Postfix should "trust" SMTP
# clients in the same IP class A/B/C networks as the local machine. # clients in the same IP class A/B/C networks as the local machine.
# Don't do this with a dialup site - it would cause Postfix to "trust" # Don't do this with a dialup site - it would cause Postfix to "trust"
# your entire provider's network. Instead, specify an explicit # your entire provider's network. Instead, specify an explicit
# mynetworks list by hand, as described below. # mynetworks list by hand, as described below.
# #
# Specify "mynetworks_style = host" when Postfix should "trust" # Specify "mynetworks_style = host" when Postfix should "trust"
# only the local machine. # only the local machine.
# #
#mynetworks_style = class #mynetworks_style = class
#mynetworks_style = subnet #mynetworks_style = subnet
#mynetworks_style = host #mynetworks_style = host
@@ -1863,7 +1863,7 @@ mynetworks = 127.0.0.0/8
# - from "untrusted" clients to destinations that match $relay_domains or # - from "untrusted" clients to destinations that match $relay_domains or
# subdomains thereof, except addresses with sender-specified routing. # subdomains thereof, except addresses with sender-specified routing.
# The default relay_domains value is $mydestination. # The default relay_domains value is $mydestination.
# #
# In addition to the above, the Postfix SMTP server by default accepts mail # In addition to the above, the Postfix SMTP server by default accepts mail
# that Postfix is final destination for: # that Postfix is final destination for:
# - destinations that match $inet_interfaces or $proxy_interfaces, # - destinations that match $inet_interfaces or $proxy_interfaces,
@@ -1871,7 +1871,7 @@ mynetworks = 127.0.0.0/8
# - destinations that match $virtual_alias_domains, # - destinations that match $virtual_alias_domains,
# - destinations that match $virtual_mailbox_domains. # - destinations that match $virtual_mailbox_domains.
# These destinations do not need to be listed in $relay_domains. # These destinations do not need to be listed in $relay_domains.
# #
# Specify a list of hosts or domains, /file/name patterns or type:name # Specify a list of hosts or domains, /file/name patterns or type:name
# lookup tables, separated by commas and/or whitespace. Continue # lookup tables, separated by commas and/or whitespace. Continue
# long lines by starting the next line with whitespace. A file name # long lines by starting the next line with whitespace. A file name
@@ -1916,7 +1916,7 @@ mynetworks = 127.0.0.0/8
# The right-hand side of the lookup tables is conveniently ignored. # The right-hand side of the lookup tables is conveniently ignored.
# In the left-hand side, specify an @domain.tld wild-card, or specify # In the left-hand side, specify an @domain.tld wild-card, or specify
# a user@domain.tld address. # a user@domain.tld address.
# #
#relay_recipient_maps = hash:/etc/postfix/relay_recipients #relay_recipient_maps = hash:/etc/postfix/relay_recipients
# INPUT RATE CONTROL # INPUT RATE CONTROL
@@ -1925,15 +1925,15 @@ mynetworks = 127.0.0.0/8
# flow control. This feature is turned on by default, although it # flow control. This feature is turned on by default, although it
# still needs further development (it's disabled on SCO UNIX due # still needs further development (it's disabled on SCO UNIX due
# to an SCO bug). # to an SCO bug).
# #
# A Postfix process will pause for $in_flow_delay seconds before # A Postfix process will pause for $in_flow_delay seconds before
# accepting a new message, when the message arrival rate exceeds the # accepting a new message, when the message arrival rate exceeds the
# message delivery rate. With the default 100 SMTP server process # message delivery rate. With the default 100 SMTP server process
# limit, this limits the mail inflow to 100 messages a second more # limit, this limits the mail inflow to 100 messages a second more
# than the number of messages delivered per second. # than the number of messages delivered per second.
# #
# Specify 0 to disable the feature. Valid delays are 0..10. # Specify 0 to disable the feature. Valid delays are 0..10.
# #
#in_flow_delay = 1s #in_flow_delay = 1s
# ADDRESS REWRITING # ADDRESS REWRITING
@@ -1963,7 +1963,7 @@ mynetworks = 127.0.0.0/8
# On systems with NIS, the default is to search the local alias # On systems with NIS, the default is to search the local alias
# database, then the NIS alias database. See aliases(5) for syntax # database, then the NIS alias database. See aliases(5) for syntax
# details. # details.
# #
# If you change the alias database, run "postalias /etc/aliases" (or # If you change the alias database, run "postalias /etc/aliases" (or
# wherever your system stores the mail alias file), or simply run # wherever your system stores the mail alias file), or simply run
# "newaliases" to build the necessary DBM or DB file. # "newaliases" to build the necessary DBM or DB file.
@@ -2006,7 +2006,7 @@ mynetworks = 127.0.0.0/8
# #
#home_mailbox = Mailbox #home_mailbox = Mailbox
#home_mailbox = Maildir/ #home_mailbox = Maildir/
# The mail_spool_directory parameter specifies the directory where # The mail_spool_directory parameter specifies the directory where
# UNIX-style mailboxes are kept. The default setting depends on the # UNIX-style mailboxes are kept. The default setting depends on the
# system type. # system type.
@@ -2048,7 +2048,7 @@ mailbox_command = /usr/lib/dovecot/deliver
# #
# NOTE: if you use this feature for accounts not in the UNIX password # NOTE: if you use this feature for accounts not in the UNIX password
# file, then you must update the "local_recipient_maps" setting in # file, then you must update the "local_recipient_maps" setting in
# the main.cf file, otherwise the SMTP server will reject mail for # the main.cf file, otherwise the SMTP server will reject mail for
# non-UNIX accounts with "User unknown in local recipient table". # non-UNIX accounts with "User unknown in local recipient table".
# #
# Cyrus IMAP over LMTP. Specify ``lmtpunix cmd="lmtpd" # Cyrus IMAP over LMTP. Specify ``lmtpunix cmd="lmtpd"
@@ -2070,7 +2070,7 @@ mailbox_command = /usr/lib/dovecot/deliver
# #
# NOTE: if you use this feature for accounts not in the UNIX password # NOTE: if you use this feature for accounts not in the UNIX password
# file, then you must update the "local_recipient_maps" setting in # file, then you must update the "local_recipient_maps" setting in
# the main.cf file, otherwise the SMTP server will reject mail for # the main.cf file, otherwise the SMTP server will reject mail for
# non-UNIX accounts with "User unknown in local recipient table". # non-UNIX accounts with "User unknown in local recipient table".
# #
#fallback_transport = lmtp:unix:/file/name #fallback_transport = lmtp:unix:/file/name
@@ -2093,15 +2093,15 @@ mailbox_command = /usr/lib/dovecot/deliver
# #
# NOTE: if you use this feature for accounts not in the UNIX password # NOTE: if you use this feature for accounts not in the UNIX password
# file, then you must specify "local_recipient_maps =" (i.e. empty) in # file, then you must specify "local_recipient_maps =" (i.e. empty) in
# the main.cf file, otherwise the SMTP server will reject mail for # the main.cf file, otherwise the SMTP server will reject mail for
# non-UNIX accounts with "User unknown in local recipient table". # non-UNIX accounts with "User unknown in local recipient table".
# #
#luser_relay = $user@other.host #luser_relay = $user@other.host
#luser_relay = $local@other.host #luser_relay = $local@other.host
#luser_relay = admin+$local #luser_relay = admin+$local
# JUNK MAIL CONTROLS # JUNK MAIL CONTROLS
# #
# The controls listed here are only a very small subset. The file # The controls listed here are only a very small subset. The file
# SMTPD_ACCESS_README provides an overview. # SMTPD_ACCESS_README provides an overview.
@@ -2123,11 +2123,11 @@ mailbox_command = /usr/lib/dovecot/deliver
# deferred mail, so that mail can be flushed quickly with the SMTP # deferred mail, so that mail can be flushed quickly with the SMTP
# "ETRN domain.tld" command, or by executing "sendmail -qRdomain.tld". # "ETRN domain.tld" command, or by executing "sendmail -qRdomain.tld".
# See the ETRN_README document for a detailed description. # See the ETRN_README document for a detailed description.
# #
# The fast_flush_domains parameter controls what destinations are # The fast_flush_domains parameter controls what destinations are
# eligible for this service. By default, they are all domains that # eligible for this service. By default, they are all domains that
# this server is willing to relay mail to. # this server is willing to relay mail to.
# #
#fast_flush_domains = $relay_domains #fast_flush_domains = $relay_domains
# SHOW SOFTWARE VERSION OR NOT # SHOW SOFTWARE VERSION OR NOT
@@ -2153,7 +2153,7 @@ smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
# too many are run at the same time. With SMTP deliveries, 10 # too many are run at the same time. With SMTP deliveries, 10
# simultaneous connections to the same domain could be sufficient to # simultaneous connections to the same domain could be sufficient to
# raise eyebrows. # raise eyebrows.
# #
# Each message delivery transport has its XXX_destination_concurrency_limit # Each message delivery transport has its XXX_destination_concurrency_limit
# parameter. The default is $default_destination_concurrency_limit for # parameter. The default is $default_destination_concurrency_limit for
# most delivery transports. For the local delivery agent the default is 2. # most delivery transports. For the local delivery agent the default is 2.
@@ -2211,11 +2211,11 @@ debugger_command =
# INSTALL-TIME CONFIGURATION INFORMATION # INSTALL-TIME CONFIGURATION INFORMATION
# #
# The following parameters are used when installing a new Postfix version. # The following parameters are used when installing a new Postfix version.
# #
# sendmail_path: The full pathname of the Postfix sendmail command. # sendmail_path: The full pathname of the Postfix sendmail command.
# This is the Sendmail-compatible mail posting interface. # This is the Sendmail-compatible mail posting interface.
# #
sendmail_path = /usr/sbin/sendmail sendmail_path = /usr/sbin/sendmail
# newaliases_path: The full pathname of the Postfix newaliases command. # newaliases_path: The full pathname of the Postfix newaliases command.
# This is the Sendmail-compatible command to build alias databases. # This is the Sendmail-compatible command to build alias databases.
@@ -2224,7 +2224,7 @@ newaliases_path = /usr/bin/newaliases
# mailq_path: The full pathname of the Postfix mailq command. This # mailq_path: The full pathname of the Postfix mailq command. This
# is the Sendmail-compatible mail queue listing command. # is the Sendmail-compatible mail queue listing command.
# #
mailq_path = /usr/bin/mailq mailq_path = /usr/bin/mailq
# setgid_group: The group for mail submission and queue management # setgid_group: The group for mail submission and queue management
@@ -2491,7 +2491,7 @@ dovecot unix - n n - - pipe
# Enable installed protocols # Enable installed protocols
!include_try /usr/share/dovecot/protocols.d/*.protocol !include_try /usr/share/dovecot/protocols.d/*.protocol
# A comma separated list of IPs or hosts where to listen in for connections. # A comma separated list of IPs or hosts where to listen in for connections.
# "*" listens in all IPv4 interfaces, "::" listens in all IPv6 interfaces. # "*" listens in all IPv4 interfaces, "::" listens in all IPv6 interfaces.
# If you want to specify non-default ports or anything more complex, # If you want to specify non-default ports or anything more complex,
# edit conf.d/master.conf. # edit conf.d/master.conf.
@@ -2516,7 +2516,7 @@ dovecot unix - n n - - pipe
#login_trusted_networks = #login_trusted_networks =
# Space separated list of login access check sockets (e.g. tcpwrap) # Space separated list of login access check sockets (e.g. tcpwrap)
#login_access_sockets = #login_access_sockets =
# With proxy_maybe=yes if proxy destination matches any of these IPs, don't do # With proxy_maybe=yes if proxy destination matches any of these IPs, don't do
# proxying. This isn't necessary normally, but may be useful if the destination # proxying. This isn't necessary normally, but may be useful if the destination
@@ -2635,7 +2635,7 @@ driver = mysql
# option_file - Read options from the given file instead of # option_file - Read options from the given file instead of
# the default my.cnf location # the default my.cnf location
# option_group - Read options from the given group (default: client) # option_group - Read options from the given group (default: client)
# #
# You can connect to UNIX sockets by using host: host=/var/run/mysql.sock # You can connect to UNIX sockets by using host: host=/var/run/mysql.sock
# Note that currently you can't use spaces in parameters. # Note that currently you can't use spaces in parameters.
# #
@@ -2654,7 +2654,7 @@ connect = host=<SQL_HOST> dbname=<SQL_DB> user=<SQL_UNPRIVILEGED_USER> password=
# List of supported schemes is in # List of supported schemes is in
# http://wiki2.dovecot.org/Authentication/PasswordSchemes # http://wiki2.dovecot.org/Authentication/PasswordSchemes
# #
default_pass_scheme = CRYPT #default_pass_scheme = CRYPT
# passdb query to retrieve the password. It can return fields: # passdb query to retrieve the password. It can return fields:
# password - The user's password. This field must be returned. # password - The user's password. This field must be returned.
@@ -2674,7 +2674,7 @@ default_pass_scheme = CRYPT
# %u = entire user@domain # %u = entire user@domain
# %n = user part of user@domain # %n = user part of user@domain
# %d = domain part of user@domain # %d = domain part of user@domain
# #
# Note that these can be used only as input to SQL query. If the query outputs # Note that these can be used only as input to SQL query. If the query outputs
# any of these substitutions, they're not touched. Otherwise it would be # any of these substitutions, they're not touched. Otherwise it would be
# difficult to have eg. usernames containing '%' characters. # difficult to have eg. usernames containing '%' characters.
@@ -2758,7 +2758,7 @@ disable_plaintext_auth = no
# Default realm/domain to use if none was specified. This is used for both # Default realm/domain to use if none was specified. This is used for both
# SASL realms and appending @domain to username in plaintext logins. # SASL realms and appending @domain to username in plaintext logins.
#auth_default_realm = #auth_default_realm =
# List of allowed characters in username. If the user-given username contains # List of allowed characters in username. If the user-given username contains
# a character not listed in here, the login automatically fails. This is just # a character not listed in here, the login automatically fails. This is just
@@ -2801,7 +2801,7 @@ disable_plaintext_auth = no
# Kerberos keytab to use for the GSSAPI mechanism. Will use the system # Kerberos keytab to use for the GSSAPI mechanism. Will use the system
# default (usually /etc/krb5.keytab) if not specified. You may need to change # default (usually /etc/krb5.keytab) if not specified. You may need to change
# the auth service to run as root to be able to read this file. # the auth service to run as root to be able to read this file.
#auth_krb5_keytab = #auth_krb5_keytab =
# Do NTLM and GSS-SPNEGO authentication using Samba's winbind daemon and # Do NTLM and GSS-SPNEGO authentication using Samba's winbind daemon and
# ntlm_auth helper. <doc/wiki/Authentication/Mechanisms/Winbind.txt> # ntlm_auth helper. <doc/wiki/Authentication/Mechanisms/Winbind.txt>
@@ -2816,9 +2816,9 @@ disable_plaintext_auth = no
# Require a valid SSL client certificate or the authentication fails. # Require a valid SSL client certificate or the authentication fails.
#auth_ssl_require_client_cert = no #auth_ssl_require_client_cert = no
# Take the username from client's SSL certificate, using # Take the username from client's SSL certificate, using
# X509_NAME_get_text_by_NID() which returns the subject's DN's # X509_NAME_get_text_by_NID() which returns the subject's DN's
# CommonName. # CommonName.
#auth_ssl_username_from_cert = no #auth_ssl_username_from_cert = no
# Space separated list of wanted authentication mechanisms: # Space separated list of wanted authentication mechanisms:
@@ -2907,11 +2907,11 @@ namespace inbox {
# Hierarchy separator to use. You should use the same separator for all # Hierarchy separator to use. You should use the same separator for all
# namespaces or some clients get confused. '/' is usually a good one. # namespaces or some clients get confused. '/' is usually a good one.
# The default however depends on the underlying mail storage format. # The default however depends on the underlying mail storage format.
#separator = #separator =
# Prefix required to access this namespace. This needs to be different for # Prefix required to access this namespace. This needs to be different for
# all namespaces. For example "Public/". # all namespaces. For example "Public/".
#prefix = #prefix =
# Physical location of the mailbox. This is in same format as # Physical location of the mailbox. This is in same format as
# mail_location, which is also the default for it. # mail_location, which is also the default for it.
@@ -2993,7 +2993,7 @@ mail_privileged_group = mail
# A comment or note that is associated with the server. This value is # A comment or note that is associated with the server. This value is
# accessible for authenticated users through the IMAP METADATA server # accessible for authenticated users through the IMAP METADATA server
# entry "/shared/comment". # entry "/shared/comment".
#mail_server_comment = "" #mail_server_comment = ""
# Indicates a method for contacting the server administrator. According to # Indicates a method for contacting the server administrator. According to
@@ -3001,7 +3001,7 @@ mail_privileged_group = mail
# is currently not enforced. Use for example mailto:admin@example.com. This # is currently not enforced. Use for example mailto:admin@example.com. This
# value is accessible for authenticated users through the IMAP METADATA server # value is accessible for authenticated users through the IMAP METADATA server
# entry "/shared/admin". # entry "/shared/admin".
#mail_server_admin = #mail_server_admin =
## ##
## Mail processes ## Mail processes
@@ -3057,7 +3057,7 @@ mail_privileged_group = mail
# WARNING: Never add directories here which local users can modify, that # WARNING: Never add directories here which local users can modify, that
# may lead to root exploit. Usually this should be done only if you don't # may lead to root exploit. Usually this should be done only if you don't
# allow shell access for users. <doc/wiki/Chrooting.txt> # allow shell access for users. <doc/wiki/Chrooting.txt>
#valid_chroot_dirs = #valid_chroot_dirs =
# Default chroot directory for mail processes. This can be overridden for # Default chroot directory for mail processes. This can be overridden for
# specific users in user database by giving /./ in user's home directory # specific users in user database by giving /./ in user's home directory
@@ -3065,7 +3065,7 @@ mail_privileged_group = mail
# need to do chrooting, Dovecot doesn't allow users to access files outside # need to do chrooting, Dovecot doesn't allow users to access files outside
# their mail directory anyway. If your home directories are prefixed with # their mail directory anyway. If your home directories are prefixed with
# the chroot directory, append "/." to mail_chroot. <doc/wiki/Chrooting.txt> # the chroot directory, append "/." to mail_chroot. <doc/wiki/Chrooting.txt>
#mail_chroot = #mail_chroot =
# UNIX socket path to master authentication server to find users. # UNIX socket path to master authentication server to find users.
# This is used by imap (for shared users) and lda. # This is used by imap (for shared users) and lda.
@@ -3076,7 +3076,7 @@ mail_privileged_group = mail
# Space separated list of plugins to load for all services. Plugins specific to # Space separated list of plugins to load for all services. Plugins specific to
# IMAP, LDA, etc. are added to this list in their own .conf files. # IMAP, LDA, etc. are added to this list in their own .conf files.
#mail_plugins = #mail_plugins =
## ##
## Mailbox handling optimizations ## Mailbox handling optimizations
@@ -3204,7 +3204,7 @@ protocol !indexer-worker {
# fallbacks to re-reading the whole mbox file whenever something in mbox isn't # fallbacks to re-reading the whole mbox file whenever something in mbox isn't
# how it's expected to be. The only real downside to this setting is that if # how it's expected to be. The only real downside to this setting is that if
# some other MUA changes message flags, Dovecot doesn't notice it immediately. # some other MUA changes message flags, Dovecot doesn't notice it immediately.
# Note that a full sync is done with SELECT, EXAMINE, EXPUNGE and CHECK # Note that a full sync is done with SELECT, EXAMINE, EXPUNGE and CHECK
# commands. # commands.
#mbox_dirty_syncs = yes #mbox_dirty_syncs = yes
@@ -3348,7 +3348,7 @@ service lmtp {
#inet_listener lmtp { #inet_listener lmtp {
# Avoid making LMTP visible for the entire internet # Avoid making LMTP visible for the entire internet
#address = #address =
#port = #port =
#} #}
} }
@@ -3387,8 +3387,8 @@ service auth {
# permissions (e.g. 0777 allows everyone full permissions). # permissions (e.g. 0777 allows everyone full permissions).
unix_listener auth-userdb { unix_listener auth-userdb {
#mode = 0666 #mode = 0666
#user = #user =
#group = #group =
} }
# Postfix smtp-auth # Postfix smtp-auth
@@ -3421,8 +3421,8 @@ service dict {
# For example: mode=0660, group=vmail and global mail_access_groups=vmail # For example: mode=0660, group=vmail and global mail_access_groups=vmail
unix_listener dict { unix_listener dict {
#mode = 0600 #mode = 0600
#user = #user =
#group = #group =
} }
} }
@@ -3465,7 +3465,7 @@ ssl_key = </etc/dovecot/private/dovecot.key
# PEM encoded trusted certificate authority. Set this only if you intend to use # PEM encoded trusted certificate authority. Set this only if you intend to use
# ssl_verify_client_cert=yes. The file should contain the CA certificate(s) # ssl_verify_client_cert=yes. The file should contain the CA certificate(s)
# followed by the matching CRL(s). (e.g. ssl_ca = </etc/ssl/certs/ca.pem) # followed by the matching CRL(s). (e.g. ssl_ca = </etc/ssl/certs/ca.pem)
#ssl_ca = #ssl_ca =
# Require that CRL check succeeds for client certificates. # Require that CRL check succeeds for client certificates.
#ssl_require_crl = yes #ssl_require_crl = yes
@@ -3537,7 +3537,7 @@ postmaster_address = postmaster@<SERVERNAME>
# Hostname to use in various parts of sent mails (e.g. in Message-Id) and # Hostname to use in various parts of sent mails (e.g. in Message-Id) and
# in LMTP replies. Default is the system's real hostname@domain. # in LMTP replies. Default is the system's real hostname@domain.
#hostname = #hostname =
# If user is over quota, return with temporary failure instead of # If user is over quota, return with temporary failure instead of
# bouncing the mail. # bouncing the mail.
@@ -3561,7 +3561,7 @@ postmaster_address = postmaster@<SERVERNAME>
#recipient_delimiter = + #recipient_delimiter = +
# Header where the original recipient address (SMTP's RCPT TO: address) is taken # Header where the original recipient address (SMTP's RCPT TO: address) is taken
# from if not available elsewhere. With dovecot-lda -a parameter overrides this. # from if not available elsewhere. With dovecot-lda -a parameter overrides this.
# A commonly used header for this is X-Original-To. # A commonly used header for this is X-Original-To.
#lda_original_recipient_header = #lda_original_recipient_header =
@@ -3618,7 +3618,7 @@ protocol lda {
# Override the IMAP CAPABILITY response. If the value begins with '+', # Override the IMAP CAPABILITY response. If the value begins with '+',
# add the given capabilities on top of the defaults (e.g. +XFOO XBAR). # add the given capabilities on top of the defaults (e.g. +XFOO XBAR).
#imap_capability = #imap_capability =
# How long to wait between "OK Still here" notifications when client is # How long to wait between "OK Still here" notifications when client is
# IDLEing. # IDLEing.
@@ -3628,7 +3628,7 @@ protocol lda {
# Dovecot use the default value. The following fields have default values # Dovecot use the default value. The following fields have default values
# currently: name, version, os, os-version, support-url, support-email, # currently: name, version, os, os-version, support-url, support-email,
# revision # revision
#imap_id_send = #imap_id_send =
# ID fields sent by client to log. * means everything. # ID fields sent by client to log. * means everything.
#imap_id_log = #imap_id_log =
@@ -3651,7 +3651,7 @@ protocol lda {
# greyed out, instead of only later giving "not selectable" popup error. # greyed out, instead of only later giving "not selectable" popup error.
# #
# The list is space-separated. # The list is space-separated.
#imap_client_workarounds = #imap_client_workarounds =
# Host allowed in URLAUTH URLs sent by client. "*" allows all. # Host allowed in URLAUTH URLs sent by client. "*" allows all.
#imap_urlauth_host = #imap_urlauth_host =
@@ -3865,7 +3865,7 @@ pop3_logout_format = in=%i out=%o top=%t/%p, retr=%r/%b, del=%d/%m, size=%s
# Outlook Express and Netscape Mail breaks if end of headers-line is # Outlook Express and Netscape Mail breaks if end of headers-line is
# missing. This option simply sends it if it's missing. # missing. This option simply sends it if it's missing.
# The list is space-separated. # The list is space-separated.
#pop3_client_workarounds = #pop3_client_workarounds =
protocol pop3 { protocol pop3 {
# Space separated list of plugins to load (default is global mail_plugins). # Space separated list of plugins to load (default is global mail_plugins).
@@ -3899,7 +3899,7 @@ protocol pop3 {
# #
# location = [<type>:]path[;<option>[=<value>][;...]] # location = [<type>:]path[;<option>[=<value>][;...]]
# #
# If the type prefix is omitted, the script location type is 'file' and the # If the type prefix is omitted, the script location type is 'file' and the
# location is interpreted as a local filesystem path pointing to a Sieve script # location is interpreted as a local filesystem path pointing to a Sieve script
# file or directory. Refer to Pigeonhole wiki or INSTALL file for more # file or directory. Refer to Pigeonhole wiki or INSTALL file for more
# information. # information.
@@ -3910,7 +3910,7 @@ plugin {
# delivery. The "include" extension uses this location for retrieving # delivery. The "include" extension uses this location for retrieving
# :personal" scripts. This is also where the ManageSieve service will store # :personal" scripts. This is also where the ManageSieve service will store
# the user's scripts, if supported. # the user's scripts, if supported.
# #
# Currently only the 'file:' location type supports ManageSieve operation. # Currently only the 'file:' location type supports ManageSieve operation.
# Other location types like 'dict:' and 'ldap:' can currently only # Other location types like 'dict:' and 'ldap:' can currently only
# be used as a read-only script source (). # be used as a read-only script source ().
@@ -3930,9 +3930,9 @@ plugin {
#sieve_default = /var/lib/dovecot/sieve/default.sieve #sieve_default = /var/lib/dovecot/sieve/default.sieve
sieve_dir = ~/sieve sieve_dir = ~/sieve
# The name by which the default Sieve script (as configured by the # The name by which the default Sieve script (as configured by the
# sieve_default setting) is visible to the user through ManageSieve. # sieve_default setting) is visible to the user through ManageSieve.
#sieve_default_name = #sieve_default_name =
# Location for ":global" include scripts as used by the "include" extension. # Location for ":global" include scripts as used by the "include" extension.
#sieve_global = #sieve_global =
@@ -3947,7 +3947,7 @@ plugin {
#sieve_discard = #sieve_discard =
# Location Sieve of scripts that need to be executed before the user's # Location Sieve of scripts that need to be executed before the user's
# personal script. If a 'file' location path points to a directory, all the # personal script. If a 'file' location path points to a directory, all the
# Sieve scripts contained therein (with the proper `.sieve' extension) are # Sieve scripts contained therein (with the proper `.sieve' extension) are
# executed. The order of execution within that directory is determined by the # executed. The order of execution within that directory is determined by the
# file names, using a normal 8bit per-character comparison. # file names, using a normal 8bit per-character comparison.
@@ -4065,18 +4065,18 @@ plugin {
## TRACE DEBUGGING ## TRACE DEBUGGING
# Trace debugging provides detailed insight in the operations performed by # Trace debugging provides detailed insight in the operations performed by
# the Sieve script. These settings apply to both the LDA Sieve plugin and the # the Sieve script. These settings apply to both the LDA Sieve plugin and the
# IMAPSIEVE plugin. # IMAPSIEVE plugin.
# #
# WARNING: On a busy server, this functionality can quickly fill up the trace # WARNING: On a busy server, this functionality can quickly fill up the trace
# directory with a lot of trace files. Enable this only temporarily and as # directory with a lot of trace files. Enable this only temporarily and as
# selective as possible. # selective as possible.
# The directory where trace files are written. Trace debugging is disabled if # The directory where trace files are written. Trace debugging is disabled if
# this setting is not configured or if the directory does not exist. If the # this setting is not configured or if the directory does not exist. If the
# path is relative or it starts with "~/" it is interpreted relative to the # path is relative or it starts with "~/" it is interpreted relative to the
# current user's home directory. # current user's home directory.
#sieve_trace_dir = #sieve_trace_dir =
# The verbosity level of the trace messages. Trace debugging is disabled if # The verbosity level of the trace messages. Trace debugging is disabled if
# this setting is not configured. Possible values are: # this setting is not configured. Possible values are:
# #
@@ -4087,14 +4087,14 @@ plugin {
# "matching" - Print all executed commands, performed tests and the # "matching" - Print all executed commands, performed tests and the
# values matched in those tests. # values matched in those tests.
#sieve_trace_level = #sieve_trace_level =
# Enables highly verbose debugging messages that are usually only useful for # Enables highly verbose debugging messages that are usually only useful for
# developers. # developers.
#sieve_trace_debug = no #sieve_trace_debug = no
# Enables showing byte code addresses in the trace output, rather than only # Enables showing byte code addresses in the trace output, rather than only
# the source line numbers. # the source line numbers.
#sieve_trace_addresses = no #sieve_trace_addresses = no
} }
]]> ]]>
</content> </content>
@@ -4883,7 +4883,7 @@ aliases: files
<command><![CDATA[chmod 1777 {{settings.system.mod_fcgid_tmpdir}}]]></command> <command><![CDATA[chmod 1777 {{settings.system.mod_fcgid_tmpdir}}]]></command>
<command><![CDATA[a2dismod php7.4]]></command> <command><![CDATA[a2dismod php7.4]]></command>
</commands> </commands>
<!-- instead of just restarting apache, we let the cronjob do all the <!-- instead of just restarting apache, we let the cronjob do all the
dirty work --> dirty work -->
<command><![CDATA[php {{const.install_dir}}bin/froxlor-cli froxlor:cron --force]]></command> <command><![CDATA[php {{const.install_dir}}bin/froxlor-cli froxlor:cron --force]]></command>
</daemon> </daemon>
@@ -4916,7 +4916,7 @@ aliases: files
</visibility> </visibility>
<command><![CDATA[a2dismod php7.4]]></command> <command><![CDATA[a2dismod php7.4]]></command>
</commands> </commands>
<!-- instead of just restarting apache, we let the cronjob do all the <!-- instead of just restarting apache, we let the cronjob do all the
dirty work --> dirty work -->
<command><![CDATA[php {{const.install_dir}}bin/froxlor-cli froxlor:cron --force]]></command> <command><![CDATA[php {{const.install_dir}}bin/froxlor-cli froxlor:cron --force]]></command>
</daemon> </daemon>

View File

@@ -1475,7 +1475,7 @@ user = <SQL_UNPRIVILEGED_USER>
password = <SQL_UNPRIVILEGED_PASSWORD> password = <SQL_UNPRIVILEGED_PASSWORD>
dbname = <SQL_DB> dbname = <SQL_DB>
hosts = <SQL_HOST> hosts = <SQL_HOST>
query = SELECT destination FROM mail_virtual AS v, panel_customers AS c WHERE c.customerid = v.customerid AND c.deactivated = 0 AND v.email = '%s' AND trim(v.destination) <> '' query = SELECT destination FROM mail_virtual AS v, panel_customers AS c WHERE c.customerid = v.customerid AND c.deactivated = 0 AND v.email = '%s' AND trim(v.destination) <> ''
]]> ]]>
</content> </content>
</file> </file>
@@ -1644,7 +1644,7 @@ data_directory = /var/lib/postfix
#default_privs = nobody #default_privs = nobody
# INTERNET HOST AND DOMAIN NAMES # INTERNET HOST AND DOMAIN NAMES
# #
# The myhostname parameter specifies the internet hostname of this # The myhostname parameter specifies the internet hostname of this
# mail system. The default is to use the fully-qualified domain name # mail system. The default is to use the fully-qualified domain name
# from gethostname(). $myhostname is used as a default value for many # from gethostname(). $myhostname is used as a default value for many
@@ -1670,7 +1670,7 @@ myhostname = mail.$mydomain
mydomain = <SERVERNAME> mydomain = <SERVERNAME>
# SENDING MAIL # SENDING MAIL
# #
# The myorigin parameter specifies the domain that locally-posted # The myorigin parameter specifies the domain that locally-posted
# mail appears to come from. The default is to append $myhostname, # mail appears to come from. The default is to append $myhostname,
# which is fine for small sites. If you run a domain with multiple # which is fine for small sites. If you run a domain with multiple
@@ -1772,7 +1772,7 @@ mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# #
# - You define $mydestination domain recipients in files other than # - You define $mydestination domain recipients in files other than
# /etc/passwd, /etc/aliases, or the $virtual_alias_maps files. # /etc/passwd, /etc/aliases, or the $virtual_alias_maps files.
# For example, you define $mydestination domain recipients in # For example, you define $mydestination domain recipients in
# the $virtual_mailbox_maps files. # the $virtual_mailbox_maps files.
# #
# - You redefine the local delivery agent in master.cf. # - You redefine the local delivery agent in master.cf.
@@ -1792,7 +1792,7 @@ mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# The right-hand side of the lookup tables is conveniently ignored. # The right-hand side of the lookup tables is conveniently ignored.
# In the left-hand side, specify a bare username, an @domain.tld # In the left-hand side, specify a bare username, an @domain.tld
# wild-card, or specify a user@domain.tld address. # wild-card, or specify a user@domain.tld address.
# #
#local_recipient_maps = unix:passwd.byname $alias_maps #local_recipient_maps = unix:passwd.byname $alias_maps
#local_recipient_maps = proxy:unix:passwd.byname $alias_maps #local_recipient_maps = proxy:unix:passwd.byname $alias_maps
#local_recipient_maps = #local_recipient_maps =
@@ -1824,16 +1824,16 @@ unknown_local_recipient_reject_code = 550
# clients in the same IP subnetworks as the local machine. # clients in the same IP subnetworks as the local machine.
# On Linux, this does works correctly only with interfaces specified # On Linux, this does works correctly only with interfaces specified
# with the "ifconfig" command. # with the "ifconfig" command.
# #
# Specify "mynetworks_style = class" when Postfix should "trust" SMTP # Specify "mynetworks_style = class" when Postfix should "trust" SMTP
# clients in the same IP class A/B/C networks as the local machine. # clients in the same IP class A/B/C networks as the local machine.
# Don't do this with a dialup site - it would cause Postfix to "trust" # Don't do this with a dialup site - it would cause Postfix to "trust"
# your entire provider's network. Instead, specify an explicit # your entire provider's network. Instead, specify an explicit
# mynetworks list by hand, as described below. # mynetworks list by hand, as described below.
# #
# Specify "mynetworks_style = host" when Postfix should "trust" # Specify "mynetworks_style = host" when Postfix should "trust"
# only the local machine. # only the local machine.
# #
#mynetworks_style = class #mynetworks_style = class
#mynetworks_style = subnet #mynetworks_style = subnet
#mynetworks_style = host #mynetworks_style = host
@@ -1863,7 +1863,7 @@ mynetworks = 127.0.0.0/8
# - from "untrusted" clients to destinations that match $relay_domains or # - from "untrusted" clients to destinations that match $relay_domains or
# subdomains thereof, except addresses with sender-specified routing. # subdomains thereof, except addresses with sender-specified routing.
# The default relay_domains value is $mydestination. # The default relay_domains value is $mydestination.
# #
# In addition to the above, the Postfix SMTP server by default accepts mail # In addition to the above, the Postfix SMTP server by default accepts mail
# that Postfix is final destination for: # that Postfix is final destination for:
# - destinations that match $inet_interfaces or $proxy_interfaces, # - destinations that match $inet_interfaces or $proxy_interfaces,
@@ -1871,7 +1871,7 @@ mynetworks = 127.0.0.0/8
# - destinations that match $virtual_alias_domains, # - destinations that match $virtual_alias_domains,
# - destinations that match $virtual_mailbox_domains. # - destinations that match $virtual_mailbox_domains.
# These destinations do not need to be listed in $relay_domains. # These destinations do not need to be listed in $relay_domains.
# #
# Specify a list of hosts or domains, /file/name patterns or type:name # Specify a list of hosts or domains, /file/name patterns or type:name
# lookup tables, separated by commas and/or whitespace. Continue # lookup tables, separated by commas and/or whitespace. Continue
# long lines by starting the next line with whitespace. A file name # long lines by starting the next line with whitespace. A file name
@@ -1916,7 +1916,7 @@ mynetworks = 127.0.0.0/8
# The right-hand side of the lookup tables is conveniently ignored. # The right-hand side of the lookup tables is conveniently ignored.
# In the left-hand side, specify an @domain.tld wild-card, or specify # In the left-hand side, specify an @domain.tld wild-card, or specify
# a user@domain.tld address. # a user@domain.tld address.
# #
#relay_recipient_maps = hash:/etc/postfix/relay_recipients #relay_recipient_maps = hash:/etc/postfix/relay_recipients
# INPUT RATE CONTROL # INPUT RATE CONTROL
@@ -1925,15 +1925,15 @@ mynetworks = 127.0.0.0/8
# flow control. This feature is turned on by default, although it # flow control. This feature is turned on by default, although it
# still needs further development (it's disabled on SCO UNIX due # still needs further development (it's disabled on SCO UNIX due
# to an SCO bug). # to an SCO bug).
# #
# A Postfix process will pause for $in_flow_delay seconds before # A Postfix process will pause for $in_flow_delay seconds before
# accepting a new message, when the message arrival rate exceeds the # accepting a new message, when the message arrival rate exceeds the
# message delivery rate. With the default 100 SMTP server process # message delivery rate. With the default 100 SMTP server process
# limit, this limits the mail inflow to 100 messages a second more # limit, this limits the mail inflow to 100 messages a second more
# than the number of messages delivered per second. # than the number of messages delivered per second.
# #
# Specify 0 to disable the feature. Valid delays are 0..10. # Specify 0 to disable the feature. Valid delays are 0..10.
# #
#in_flow_delay = 1s #in_flow_delay = 1s
# ADDRESS REWRITING # ADDRESS REWRITING
@@ -1963,7 +1963,7 @@ mynetworks = 127.0.0.0/8
# On systems with NIS, the default is to search the local alias # On systems with NIS, the default is to search the local alias
# database, then the NIS alias database. See aliases(5) for syntax # database, then the NIS alias database. See aliases(5) for syntax
# details. # details.
# #
# If you change the alias database, run "postalias /etc/aliases" (or # If you change the alias database, run "postalias /etc/aliases" (or
# wherever your system stores the mail alias file), or simply run # wherever your system stores the mail alias file), or simply run
# "newaliases" to build the necessary DBM or DB file. # "newaliases" to build the necessary DBM or DB file.
@@ -2006,7 +2006,7 @@ mynetworks = 127.0.0.0/8
# #
#home_mailbox = Mailbox #home_mailbox = Mailbox
#home_mailbox = Maildir/ #home_mailbox = Maildir/
# The mail_spool_directory parameter specifies the directory where # The mail_spool_directory parameter specifies the directory where
# UNIX-style mailboxes are kept. The default setting depends on the # UNIX-style mailboxes are kept. The default setting depends on the
# system type. # system type.
@@ -2048,7 +2048,7 @@ mailbox_command = /usr/lib/dovecot/deliver
# #
# NOTE: if you use this feature for accounts not in the UNIX password # NOTE: if you use this feature for accounts not in the UNIX password
# file, then you must update the "local_recipient_maps" setting in # file, then you must update the "local_recipient_maps" setting in
# the main.cf file, otherwise the SMTP server will reject mail for # the main.cf file, otherwise the SMTP server will reject mail for
# non-UNIX accounts with "User unknown in local recipient table". # non-UNIX accounts with "User unknown in local recipient table".
# #
# Cyrus IMAP over LMTP. Specify ``lmtpunix cmd="lmtpd" # Cyrus IMAP over LMTP. Specify ``lmtpunix cmd="lmtpd"
@@ -2070,7 +2070,7 @@ mailbox_command = /usr/lib/dovecot/deliver
# #
# NOTE: if you use this feature for accounts not in the UNIX password # NOTE: if you use this feature for accounts not in the UNIX password
# file, then you must update the "local_recipient_maps" setting in # file, then you must update the "local_recipient_maps" setting in
# the main.cf file, otherwise the SMTP server will reject mail for # the main.cf file, otherwise the SMTP server will reject mail for
# non-UNIX accounts with "User unknown in local recipient table". # non-UNIX accounts with "User unknown in local recipient table".
# #
#fallback_transport = lmtp:unix:/file/name #fallback_transport = lmtp:unix:/file/name
@@ -2093,15 +2093,15 @@ mailbox_command = /usr/lib/dovecot/deliver
# #
# NOTE: if you use this feature for accounts not in the UNIX password # NOTE: if you use this feature for accounts not in the UNIX password
# file, then you must specify "local_recipient_maps =" (i.e. empty) in # file, then you must specify "local_recipient_maps =" (i.e. empty) in
# the main.cf file, otherwise the SMTP server will reject mail for # the main.cf file, otherwise the SMTP server will reject mail for
# non-UNIX accounts with "User unknown in local recipient table". # non-UNIX accounts with "User unknown in local recipient table".
# #
#luser_relay = $user@other.host #luser_relay = $user@other.host
#luser_relay = $local@other.host #luser_relay = $local@other.host
#luser_relay = admin+$local #luser_relay = admin+$local
# JUNK MAIL CONTROLS # JUNK MAIL CONTROLS
# #
# The controls listed here are only a very small subset. The file # The controls listed here are only a very small subset. The file
# SMTPD_ACCESS_README provides an overview. # SMTPD_ACCESS_README provides an overview.
@@ -2123,11 +2123,11 @@ mailbox_command = /usr/lib/dovecot/deliver
# deferred mail, so that mail can be flushed quickly with the SMTP # deferred mail, so that mail can be flushed quickly with the SMTP
# "ETRN domain.tld" command, or by executing "sendmail -qRdomain.tld". # "ETRN domain.tld" command, or by executing "sendmail -qRdomain.tld".
# See the ETRN_README document for a detailed description. # See the ETRN_README document for a detailed description.
# #
# The fast_flush_domains parameter controls what destinations are # The fast_flush_domains parameter controls what destinations are
# eligible for this service. By default, they are all domains that # eligible for this service. By default, they are all domains that
# this server is willing to relay mail to. # this server is willing to relay mail to.
# #
#fast_flush_domains = $relay_domains #fast_flush_domains = $relay_domains
# SHOW SOFTWARE VERSION OR NOT # SHOW SOFTWARE VERSION OR NOT
@@ -2153,7 +2153,7 @@ smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
# too many are run at the same time. With SMTP deliveries, 10 # too many are run at the same time. With SMTP deliveries, 10
# simultaneous connections to the same domain could be sufficient to # simultaneous connections to the same domain could be sufficient to
# raise eyebrows. # raise eyebrows.
# #
# Each message delivery transport has its XXX_destination_concurrency_limit # Each message delivery transport has its XXX_destination_concurrency_limit
# parameter. The default is $default_destination_concurrency_limit for # parameter. The default is $default_destination_concurrency_limit for
# most delivery transports. For the local delivery agent the default is 2. # most delivery transports. For the local delivery agent the default is 2.
@@ -2211,11 +2211,11 @@ debugger_command =
# INSTALL-TIME CONFIGURATION INFORMATION # INSTALL-TIME CONFIGURATION INFORMATION
# #
# The following parameters are used when installing a new Postfix version. # The following parameters are used when installing a new Postfix version.
# #
# sendmail_path: The full pathname of the Postfix sendmail command. # sendmail_path: The full pathname of the Postfix sendmail command.
# This is the Sendmail-compatible mail posting interface. # This is the Sendmail-compatible mail posting interface.
# #
sendmail_path = /usr/sbin/sendmail sendmail_path = /usr/sbin/sendmail
# newaliases_path: The full pathname of the Postfix newaliases command. # newaliases_path: The full pathname of the Postfix newaliases command.
# This is the Sendmail-compatible command to build alias databases. # This is the Sendmail-compatible command to build alias databases.
@@ -2224,7 +2224,7 @@ newaliases_path = /usr/bin/newaliases
# mailq_path: The full pathname of the Postfix mailq command. This # mailq_path: The full pathname of the Postfix mailq command. This
# is the Sendmail-compatible mail queue listing command. # is the Sendmail-compatible mail queue listing command.
# #
mailq_path = /usr/bin/mailq mailq_path = /usr/bin/mailq
# setgid_group: The group for mail submission and queue management # setgid_group: The group for mail submission and queue management
@@ -2491,7 +2491,7 @@ dovecot unix - n n - - pipe
# Enable installed protocols # Enable installed protocols
!include_try /usr/share/dovecot/protocols.d/*.protocol !include_try /usr/share/dovecot/protocols.d/*.protocol
# A comma separated list of IPs or hosts where to listen in for connections. # A comma separated list of IPs or hosts where to listen in for connections.
# "*" listens in all IPv4 interfaces, "::" listens in all IPv6 interfaces. # "*" listens in all IPv4 interfaces, "::" listens in all IPv6 interfaces.
# If you want to specify non-default ports or anything more complex, # If you want to specify non-default ports or anything more complex,
# edit conf.d/master.conf. # edit conf.d/master.conf.
@@ -2516,7 +2516,7 @@ dovecot unix - n n - - pipe
#login_trusted_networks = #login_trusted_networks =
# Space separated list of login access check sockets (e.g. tcpwrap) # Space separated list of login access check sockets (e.g. tcpwrap)
#login_access_sockets = #login_access_sockets =
# With proxy_maybe=yes if proxy destination matches any of these IPs, don't do # With proxy_maybe=yes if proxy destination matches any of these IPs, don't do
# proxying. This isn't necessary normally, but may be useful if the destination # proxying. This isn't necessary normally, but may be useful if the destination
@@ -2635,7 +2635,7 @@ driver = mysql
# option_file - Read options from the given file instead of # option_file - Read options from the given file instead of
# the default my.cnf location # the default my.cnf location
# option_group - Read options from the given group (default: client) # option_group - Read options from the given group (default: client)
# #
# You can connect to UNIX sockets by using host: host=/var/run/mysql.sock # You can connect to UNIX sockets by using host: host=/var/run/mysql.sock
# Note that currently you can't use spaces in parameters. # Note that currently you can't use spaces in parameters.
# #
@@ -2654,7 +2654,7 @@ connect = host=<SQL_HOST> dbname=<SQL_DB> user=<SQL_UNPRIVILEGED_USER> password=
# List of supported schemes is in # List of supported schemes is in
# http://wiki2.dovecot.org/Authentication/PasswordSchemes # http://wiki2.dovecot.org/Authentication/PasswordSchemes
# #
default_pass_scheme = CRYPT #default_pass_scheme = CRYPT
# passdb query to retrieve the password. It can return fields: # passdb query to retrieve the password. It can return fields:
# password - The user's password. This field must be returned. # password - The user's password. This field must be returned.
@@ -2674,7 +2674,7 @@ default_pass_scheme = CRYPT
# %u = entire user@domain # %u = entire user@domain
# %n = user part of user@domain # %n = user part of user@domain
# %d = domain part of user@domain # %d = domain part of user@domain
# #
# Note that these can be used only as input to SQL query. If the query outputs # Note that these can be used only as input to SQL query. If the query outputs
# any of these substitutions, they're not touched. Otherwise it would be # any of these substitutions, they're not touched. Otherwise it would be
# difficult to have eg. usernames containing '%' characters. # difficult to have eg. usernames containing '%' characters.
@@ -2758,7 +2758,7 @@ disable_plaintext_auth = no
# Default realm/domain to use if none was specified. This is used for both # Default realm/domain to use if none was specified. This is used for both
# SASL realms and appending @domain to username in plaintext logins. # SASL realms and appending @domain to username in plaintext logins.
#auth_default_realm = #auth_default_realm =
# List of allowed characters in username. If the user-given username contains # List of allowed characters in username. If the user-given username contains
# a character not listed in here, the login automatically fails. This is just # a character not listed in here, the login automatically fails. This is just
@@ -2801,7 +2801,7 @@ disable_plaintext_auth = no
# Kerberos keytab to use for the GSSAPI mechanism. Will use the system # Kerberos keytab to use for the GSSAPI mechanism. Will use the system
# default (usually /etc/krb5.keytab) if not specified. You may need to change # default (usually /etc/krb5.keytab) if not specified. You may need to change
# the auth service to run as root to be able to read this file. # the auth service to run as root to be able to read this file.
#auth_krb5_keytab = #auth_krb5_keytab =
# Do NTLM and GSS-SPNEGO authentication using Samba's winbind daemon and # Do NTLM and GSS-SPNEGO authentication using Samba's winbind daemon and
# ntlm_auth helper. <doc/wiki/Authentication/Mechanisms/Winbind.txt> # ntlm_auth helper. <doc/wiki/Authentication/Mechanisms/Winbind.txt>
@@ -2816,9 +2816,9 @@ disable_plaintext_auth = no
# Require a valid SSL client certificate or the authentication fails. # Require a valid SSL client certificate or the authentication fails.
#auth_ssl_require_client_cert = no #auth_ssl_require_client_cert = no
# Take the username from client's SSL certificate, using # Take the username from client's SSL certificate, using
# X509_NAME_get_text_by_NID() which returns the subject's DN's # X509_NAME_get_text_by_NID() which returns the subject's DN's
# CommonName. # CommonName.
#auth_ssl_username_from_cert = no #auth_ssl_username_from_cert = no
# Space separated list of wanted authentication mechanisms: # Space separated list of wanted authentication mechanisms:
@@ -2908,11 +2908,11 @@ namespace inbox {
# Hierarchy separator to use. You should use the same separator for all # Hierarchy separator to use. You should use the same separator for all
# namespaces or some clients get confused. '/' is usually a good one. # namespaces or some clients get confused. '/' is usually a good one.
# The default however depends on the underlying mail storage format. # The default however depends on the underlying mail storage format.
#separator = #separator =
# Prefix required to access this namespace. This needs to be different for # Prefix required to access this namespace. This needs to be different for
# all namespaces. For example "Public/". # all namespaces. For example "Public/".
#prefix = #prefix =
# Physical location of the mailbox. This is in same format as # Physical location of the mailbox. This is in same format as
# mail_location, which is also the default for it. # mail_location, which is also the default for it.
@@ -2994,7 +2994,7 @@ mail_privileged_group = mail
# A comment or note that is associated with the server. This value is # A comment or note that is associated with the server. This value is
# accessible for authenticated users through the IMAP METADATA server # accessible for authenticated users through the IMAP METADATA server
# entry "/shared/comment". # entry "/shared/comment".
#mail_server_comment = "" #mail_server_comment = ""
# Indicates a method for contacting the server administrator. According to # Indicates a method for contacting the server administrator. According to
@@ -3002,7 +3002,7 @@ mail_privileged_group = mail
# is currently not enforced. Use for example mailto:admin@example.com. This # is currently not enforced. Use for example mailto:admin@example.com. This
# value is accessible for authenticated users through the IMAP METADATA server # value is accessible for authenticated users through the IMAP METADATA server
# entry "/shared/admin". # entry "/shared/admin".
#mail_server_admin = #mail_server_admin =
## ##
## Mail processes ## Mail processes
@@ -3058,7 +3058,7 @@ mail_privileged_group = mail
# WARNING: Never add directories here which local users can modify, that # WARNING: Never add directories here which local users can modify, that
# may lead to root exploit. Usually this should be done only if you don't # may lead to root exploit. Usually this should be done only if you don't
# allow shell access for users. <doc/wiki/Chrooting.txt> # allow shell access for users. <doc/wiki/Chrooting.txt>
#valid_chroot_dirs = #valid_chroot_dirs =
# Default chroot directory for mail processes. This can be overridden for # Default chroot directory for mail processes. This can be overridden for
# specific users in user database by giving /./ in user's home directory # specific users in user database by giving /./ in user's home directory
@@ -3066,7 +3066,7 @@ mail_privileged_group = mail
# need to do chrooting, Dovecot doesn't allow users to access files outside # need to do chrooting, Dovecot doesn't allow users to access files outside
# their mail directory anyway. If your home directories are prefixed with # their mail directory anyway. If your home directories are prefixed with
# the chroot directory, append "/." to mail_chroot. <doc/wiki/Chrooting.txt> # the chroot directory, append "/." to mail_chroot. <doc/wiki/Chrooting.txt>
#mail_chroot = #mail_chroot =
# UNIX socket path to master authentication server to find users. # UNIX socket path to master authentication server to find users.
# This is used by imap (for shared users) and lda. # This is used by imap (for shared users) and lda.
@@ -3077,7 +3077,7 @@ mail_privileged_group = mail
# Space separated list of plugins to load for all services. Plugins specific to # Space separated list of plugins to load for all services. Plugins specific to
# IMAP, LDA, etc. are added to this list in their own .conf files. # IMAP, LDA, etc. are added to this list in their own .conf files.
#mail_plugins = #mail_plugins =
## ##
## Mailbox handling optimizations ## Mailbox handling optimizations
@@ -3205,7 +3205,7 @@ protocol !indexer-worker {
# fallbacks to re-reading the whole mbox file whenever something in mbox isn't # fallbacks to re-reading the whole mbox file whenever something in mbox isn't
# how it's expected to be. The only real downside to this setting is that if # how it's expected to be. The only real downside to this setting is that if
# some other MUA changes message flags, Dovecot doesn't notice it immediately. # some other MUA changes message flags, Dovecot doesn't notice it immediately.
# Note that a full sync is done with SELECT, EXAMINE, EXPUNGE and CHECK # Note that a full sync is done with SELECT, EXAMINE, EXPUNGE and CHECK
# commands. # commands.
#mbox_dirty_syncs = yes #mbox_dirty_syncs = yes
@@ -3348,7 +3348,7 @@ service lmtp {
#inet_listener lmtp { #inet_listener lmtp {
# Avoid making LMTP visible for the entire internet # Avoid making LMTP visible for the entire internet
#address = #address =
#port = #port =
#} #}
} }
@@ -3387,8 +3387,8 @@ service auth {
# permissions (e.g. 0777 allows everyone full permissions). # permissions (e.g. 0777 allows everyone full permissions).
unix_listener auth-userdb { unix_listener auth-userdb {
#mode = 0666 #mode = 0666
#user = #user =
#group = #group =
} }
# Postfix smtp-auth # Postfix smtp-auth
@@ -3421,8 +3421,8 @@ service dict {
# For example: mode=0660, group=vmail and global mail_access_groups=vmail # For example: mode=0660, group=vmail and global mail_access_groups=vmail
unix_listener dict { unix_listener dict {
#mode = 0600 #mode = 0600
#user = #user =
#group = #group =
} }
} }
@@ -3465,7 +3465,7 @@ ssl_key = </etc/dovecot/private/dovecot.key
# PEM encoded trusted certificate authority. Set this only if you intend to use # PEM encoded trusted certificate authority. Set this only if you intend to use
# ssl_verify_client_cert=yes. The file should contain the CA certificate(s) # ssl_verify_client_cert=yes. The file should contain the CA certificate(s)
# followed by the matching CRL(s). (e.g. ssl_ca = </etc/ssl/certs/ca.pem) # followed by the matching CRL(s). (e.g. ssl_ca = </etc/ssl/certs/ca.pem)
#ssl_ca = #ssl_ca =
# Require that CRL check succeeds for client certificates. # Require that CRL check succeeds for client certificates.
#ssl_require_crl = yes #ssl_require_crl = yes
@@ -3533,7 +3533,7 @@ postmaster_address = postmaster@<SERVERNAME>
# Hostname to use in various parts of sent mails (e.g. in Message-Id) and # Hostname to use in various parts of sent mails (e.g. in Message-Id) and
# in LMTP replies. Default is the system's real hostname@domain. # in LMTP replies. Default is the system's real hostname@domain.
#hostname = #hostname =
# If user is over quota, return with temporary failure instead of # If user is over quota, return with temporary failure instead of
# bouncing the mail. # bouncing the mail.
@@ -3557,7 +3557,7 @@ postmaster_address = postmaster@<SERVERNAME>
#recipient_delimiter = + #recipient_delimiter = +
# Header where the original recipient address (SMTP's RCPT TO: address) is taken # Header where the original recipient address (SMTP's RCPT TO: address) is taken
# from if not available elsewhere. With dovecot-lda -a parameter overrides this. # from if not available elsewhere. With dovecot-lda -a parameter overrides this.
# A commonly used header for this is X-Original-To. # A commonly used header for this is X-Original-To.
#lda_original_recipient_header = #lda_original_recipient_header =
@@ -3614,7 +3614,7 @@ protocol lda {
# Override the IMAP CAPABILITY response. If the value begins with '+', # Override the IMAP CAPABILITY response. If the value begins with '+',
# add the given capabilities on top of the defaults (e.g. +XFOO XBAR). # add the given capabilities on top of the defaults (e.g. +XFOO XBAR).
#imap_capability = #imap_capability =
# How long to wait between "OK Still here" notifications when client is # How long to wait between "OK Still here" notifications when client is
# IDLEing. # IDLEing.
@@ -3623,7 +3623,7 @@ protocol lda {
# ID field names and values to send to clients. Using * as the value makes # ID field names and values to send to clients. Using * as the value makes
# Dovecot use the default value. The following fields have default values # Dovecot use the default value. The following fields have default values
# currently: name, version, os, os-version, support-url, support-email. # currently: name, version, os, os-version, support-url, support-email.
#imap_id_send = #imap_id_send =
# ID fields sent by client to log. * means everything. # ID fields sent by client to log. * means everything.
#imap_id_log = #imap_id_log =
@@ -3646,7 +3646,7 @@ protocol lda {
# greyed out, instead of only later giving "not selectable" popup error. # greyed out, instead of only later giving "not selectable" popup error.
# #
# The list is space-separated. # The list is space-separated.
#imap_client_workarounds = #imap_client_workarounds =
# Host allowed in URLAUTH URLs sent by client. "*" allows all. # Host allowed in URLAUTH URLs sent by client. "*" allows all.
#imap_urlauth_host = #imap_urlauth_host =
@@ -3860,7 +3860,7 @@ pop3_logout_format = in=%i out=%o top=%t/%p, retr=%r/%b, del=%d/%m, size=%s
# Outlook Express and Netscape Mail breaks if end of headers-line is # Outlook Express and Netscape Mail breaks if end of headers-line is
# missing. This option simply sends it if it's missing. # missing. This option simply sends it if it's missing.
# The list is space-separated. # The list is space-separated.
#pop3_client_workarounds = #pop3_client_workarounds =
protocol pop3 { protocol pop3 {
# Space separated list of plugins to load (default is global mail_plugins). # Space separated list of plugins to load (default is global mail_plugins).
@@ -3894,7 +3894,7 @@ protocol pop3 {
# #
# location = [<type>:]path[;<option>[=<value>][;...]] # location = [<type>:]path[;<option>[=<value>][;...]]
# #
# If the type prefix is omitted, the script location type is 'file' and the # If the type prefix is omitted, the script location type is 'file' and the
# location is interpreted as a local filesystem path pointing to a Sieve script # location is interpreted as a local filesystem path pointing to a Sieve script
# file or directory. Refer to Pigeonhole wiki or INSTALL file for more # file or directory. Refer to Pigeonhole wiki or INSTALL file for more
# information. # information.
@@ -3905,7 +3905,7 @@ plugin {
# delivery. The "include" extension uses this location for retrieving # delivery. The "include" extension uses this location for retrieving
# :personal" scripts. This is also where the ManageSieve service will store # :personal" scripts. This is also where the ManageSieve service will store
# the user's scripts, if supported. # the user's scripts, if supported.
# #
# Currently only the 'file:' location type supports ManageSieve operation. # Currently only the 'file:' location type supports ManageSieve operation.
# Other location types like 'dict:' and 'ldap:' can currently only # Other location types like 'dict:' and 'ldap:' can currently only
# be used as a read-only script source (). # be used as a read-only script source ().
@@ -3925,9 +3925,9 @@ plugin {
#sieve_default = /var/lib/dovecot/sieve/default.sieve #sieve_default = /var/lib/dovecot/sieve/default.sieve
sieve_dir = ~/sieve sieve_dir = ~/sieve
# The name by which the default Sieve script (as configured by the # The name by which the default Sieve script (as configured by the
# sieve_default setting) is visible to the user through ManageSieve. # sieve_default setting) is visible to the user through ManageSieve.
#sieve_default_name = #sieve_default_name =
# Location for ":global" include scripts as used by the "include" extension. # Location for ":global" include scripts as used by the "include" extension.
#sieve_global = #sieve_global =
@@ -3942,7 +3942,7 @@ plugin {
#sieve_discard = #sieve_discard =
# Location Sieve of scripts that need to be executed before the user's # Location Sieve of scripts that need to be executed before the user's
# personal script. If a 'file' location path points to a directory, all the # personal script. If a 'file' location path points to a directory, all the
# Sieve scripts contained therein (with the proper `.sieve' extension) are # Sieve scripts contained therein (with the proper `.sieve' extension) are
# executed. The order of execution within that directory is determined by the # executed. The order of execution within that directory is determined by the
# file names, using a normal 8bit per-character comparison. # file names, using a normal 8bit per-character comparison.
@@ -4060,18 +4060,18 @@ plugin {
## TRACE DEBUGGING ## TRACE DEBUGGING
# Trace debugging provides detailed insight in the operations performed by # Trace debugging provides detailed insight in the operations performed by
# the Sieve script. These settings apply to both the LDA Sieve plugin and the # the Sieve script. These settings apply to both the LDA Sieve plugin and the
# IMAPSIEVE plugin. # IMAPSIEVE plugin.
# #
# WARNING: On a busy server, this functionality can quickly fill up the trace # WARNING: On a busy server, this functionality can quickly fill up the trace
# directory with a lot of trace files. Enable this only temporarily and as # directory with a lot of trace files. Enable this only temporarily and as
# selective as possible. # selective as possible.
# The directory where trace files are written. Trace debugging is disabled if # The directory where trace files are written. Trace debugging is disabled if
# this setting is not configured or if the directory does not exist. If the # this setting is not configured or if the directory does not exist. If the
# path is relative or it starts with "~/" it is interpreted relative to the # path is relative or it starts with "~/" it is interpreted relative to the
# current user's home directory. # current user's home directory.
#sieve_trace_dir = #sieve_trace_dir =
# The verbosity level of the trace messages. Trace debugging is disabled if # The verbosity level of the trace messages. Trace debugging is disabled if
# this setting is not configured. Possible values are: # this setting is not configured. Possible values are:
# #
@@ -4082,14 +4082,14 @@ plugin {
# "matching" - Print all executed commands, performed tests and the # "matching" - Print all executed commands, performed tests and the
# values matched in those tests. # values matched in those tests.
#sieve_trace_level = #sieve_trace_level =
# Enables highly verbose debugging messages that are usually only useful for # Enables highly verbose debugging messages that are usually only useful for
# developers. # developers.
#sieve_trace_debug = no #sieve_trace_debug = no
# Enables showing byte code addresses in the trace output, rather than only # Enables showing byte code addresses in the trace output, rather than only
# the source line numbers. # the source line numbers.
#sieve_trace_addresses = no #sieve_trace_addresses = no
} }
]]> ]]>
</content> </content>
@@ -4874,7 +4874,7 @@ aliases: files
<command><![CDATA[chmod 1777 {{settings.system.mod_fcgid_tmpdir}}]]></command> <command><![CDATA[chmod 1777 {{settings.system.mod_fcgid_tmpdir}}]]></command>
<command><![CDATA[a2dismod php7.3]]></command> <command><![CDATA[a2dismod php7.3]]></command>
</commands> </commands>
<!-- instead of just restarting apache, we let the cronjob do all the <!-- instead of just restarting apache, we let the cronjob do all the
dirty work --> dirty work -->
<command><![CDATA[php {{const.install_dir}}bin/froxlor-cli froxlor:cron --force]]></command> <command><![CDATA[php {{const.install_dir}}bin/froxlor-cli froxlor:cron --force]]></command>
</daemon> </daemon>
@@ -4907,7 +4907,7 @@ aliases: files
</visibility> </visibility>
<command><![CDATA[a2dismod php7.3]]></command> <command><![CDATA[a2dismod php7.3]]></command>
</commands> </commands>
<!-- instead of just restarting apache, we let the cronjob do all the <!-- instead of just restarting apache, we let the cronjob do all the
dirty work --> dirty work -->
<command><![CDATA[php {{const.install_dir}}bin/froxlor-cli froxlor:cron --force]]></command> <command><![CDATA[php {{const.install_dir}}bin/froxlor-cli froxlor:cron --force]]></command>
</daemon> </daemon>

View File

@@ -1504,7 +1504,7 @@ user = <SQL_UNPRIVILEGED_USER>
password = <SQL_UNPRIVILEGED_PASSWORD> password = <SQL_UNPRIVILEGED_PASSWORD>
dbname = <SQL_DB> dbname = <SQL_DB>
hosts = <SQL_HOST> hosts = <SQL_HOST>
query = SELECT destination FROM mail_virtual AS v, panel_customers AS c WHERE c.customerid = v.customerid AND c.deactivated = 0 AND v.email = '%s' AND trim(v.destination) <> '' query = SELECT destination FROM mail_virtual AS v, panel_customers AS c WHERE c.customerid = v.customerid AND c.deactivated = 0 AND v.email = '%s' AND trim(v.destination) <> ''
]]> ]]>
</content> </content>
</file> </file>
@@ -1629,7 +1629,7 @@ readme_directory = no
compatibility_level = 2 compatibility_level = 2
# INTERNET HOST AND DOMAIN NAMES # INTERNET HOST AND DOMAIN NAMES
# #
# The myhostname parameter specifies the internet hostname of this # The myhostname parameter specifies the internet hostname of this
# mail system. The default is to use the fully-qualified domain name # mail system. The default is to use the fully-qualified domain name
# from gethostname(). $myhostname is used as a default value for many # from gethostname(). $myhostname is used as a default value for many
@@ -2109,7 +2109,7 @@ connect = host=<SQL_HOST> dbname=<SQL_DB> user=<SQL_UNPRIVILEGED_USER> password=
# List of supported schemes is in # List of supported schemes is in
# http://wiki2.dovecot.org/Authentication/PasswordSchemes # http://wiki2.dovecot.org/Authentication/PasswordSchemes
# #
default_pass_scheme = CRYPT #default_pass_scheme = CRYPT
# passdb query to retrieve the password. It can return fields: # passdb query to retrieve the password. It can return fields:
# password - The user's password. This field must be returned. # password - The user's password. This field must be returned.
@@ -4097,7 +4097,7 @@ aliases: files
<command><![CDATA[chmod 1777 {{settings.system.mod_fcgid_tmpdir}}]]></command> <command><![CDATA[chmod 1777 {{settings.system.mod_fcgid_tmpdir}}]]></command>
<command><![CDATA[a2dismod php7.4]]></command> <command><![CDATA[a2dismod php7.4]]></command>
</commands> </commands>
<!-- instead of just restarting apache, we let the cronjob do all the <!-- instead of just restarting apache, we let the cronjob do all the
dirty work --> dirty work -->
<command><![CDATA[php {{const.install_dir}}bin/froxlor-cli froxlor:cron --force]]></command> <command><![CDATA[php {{const.install_dir}}bin/froxlor-cli froxlor:cron --force]]></command>
</daemon> </daemon>
@@ -4130,7 +4130,7 @@ aliases: files
</visibility> </visibility>
<command><![CDATA[a2dismod php7.4]]></command> <command><![CDATA[a2dismod php7.4]]></command>
</commands> </commands>
<!-- instead of just restarting apache, we let the cronjob do all the <!-- instead of just restarting apache, we let the cronjob do all the
dirty work --> dirty work -->
<command><![CDATA[php {{const.install_dir}}bin/froxlor-cli froxlor:cron --force]]></command> <command><![CDATA[php {{const.install_dir}}bin/froxlor-cli froxlor:cron --force]]></command>
</daemon> </daemon>

View File

@@ -1460,7 +1460,7 @@ user = <SQL_UNPRIVILEGED_USER>
password = <SQL_UNPRIVILEGED_PASSWORD> password = <SQL_UNPRIVILEGED_PASSWORD>
dbname = <SQL_DB> dbname = <SQL_DB>
hosts = <SQL_HOST> hosts = <SQL_HOST>
query = SELECT destination FROM mail_virtual AS v, panel_customers AS c WHERE c.customerid = v.customerid AND c.deactivated = 0 AND v.email = '%s' AND trim(v.destination) <> '' query = SELECT destination FROM mail_virtual AS v, panel_customers AS c WHERE c.customerid = v.customerid AND c.deactivated = 0 AND v.email = '%s' AND trim(v.destination) <> ''
]]> ]]>
</content> </content>
</file> </file>
@@ -2097,7 +2097,7 @@ protocol lda {
<content><![CDATA[ <content><![CDATA[
driver = mysql driver = mysql
connect = host=<SQL_HOST> dbname=<SQL_DB> user=<SQL_UNPRIVILEGED_USER> password=<SQL_UNPRIVILEGED_PASSWORD> connect = host=<SQL_HOST> dbname=<SQL_DB> user=<SQL_UNPRIVILEGED_USER> password=<SQL_UNPRIVILEGED_PASSWORD>
default_pass_scheme = CRYPT #default_pass_scheme = CRYPT
password_query = "SELECT username AS user, password_enc AS password, CONCAT(homedir, maildir) AS userdb_home, uid AS userdb_uid, gid AS userdb_gid, CONCAT('maildir:', homedir, maildir) AS userdb_mail, CONCAT('*:storage=', quota,'M') AS userdb_quota_rule FROM mail_users WHERE (username = '%u' OR email = '%u') AND ((imap = 1 AND '%Ls' = 'imap') OR (pop3 = 1 AND '%Ls' = 'pop3') OR ((postfix = 'Y' AND '%Ls' = 'smtp') OR (postfix = 'Y' AND '%Ls' = 'sieve')))" password_query = "SELECT username AS user, password_enc AS password, CONCAT(homedir, maildir) AS userdb_home, uid AS userdb_uid, gid AS userdb_gid, CONCAT('maildir:', homedir, maildir) AS userdb_mail, CONCAT('*:storage=', quota,'M') AS userdb_quota_rule FROM mail_users WHERE (username = '%u' OR email = '%u') AND ((imap = 1 AND '%Ls' = 'imap') OR (pop3 = 1 AND '%Ls' = 'pop3') OR ((postfix = 'Y' AND '%Ls' = 'smtp') OR (postfix = 'Y' AND '%Ls' = 'sieve')))"
user_query = "SELECT CONCAT(homedir, maildir) AS home, CONCAT('maildir:', homedir, maildir) AS mail, uid, gid, CONCAT('*:storage=', quota,'M') AS quota_rule FROM mail_users WHERE (username = '%u' OR email = '%u')" user_query = "SELECT CONCAT(homedir, maildir) AS home, CONCAT('maildir:', homedir, maildir) AS mail, uid, gid, CONCAT('*:storage=', quota,'M') AS quota_rule FROM mail_users WHERE (username = '%u' OR email = '%u')"
iterate_query = "SELECT username AS user FROM mail_users WHERE (imap = 1 OR pop3 = 1)" iterate_query = "SELECT username AS user FROM mail_users WHERE (imap = 1 OR pop3 = 1)"
@@ -3881,7 +3881,7 @@ aliases: files
<content><![CDATA[# remove "-D PHP5" from /etc/conf.d/apache2]]></content> <content><![CDATA[# remove "-D PHP5" from /etc/conf.d/apache2]]></content>
</command> </command>
</commands> </commands>
<!-- instead of just restarting apache, we let the cronjob do all the <!-- instead of just restarting apache, we let the cronjob do all the
dirty work --> dirty work -->
<command><![CDATA[php {{const.install_dir}}bin/froxlor-cli froxlor:cron --force]]></command> <command><![CDATA[php {{const.install_dir}}bin/froxlor-cli froxlor:cron --force]]></command>
</daemon> </daemon>
@@ -3925,7 +3925,7 @@ aliases: files
</visibility> </visibility>
<command><![CDATA[# remove "-D PHP5" from /etc/conf.d/apache2]]></command> <command><![CDATA[# remove "-D PHP5" from /etc/conf.d/apache2]]></command>
</commands> </commands>
<!-- instead of just restarting apache, we let the cronjob do all the <!-- instead of just restarting apache, we let the cronjob do all the
dirty work --> dirty work -->
<command><![CDATA[php {{const.install_dir}}bin/froxlor-cli froxlor:cron --force]]></command> <command><![CDATA[php {{const.install_dir}}bin/froxlor-cli froxlor:cron --force]]></command>
</daemon> </daemon>

View File

@@ -2109,7 +2109,7 @@ connect = host=<SQL_HOST> dbname=<SQL_DB> user=<SQL_UNPRIVILEGED_USER> password=
# List of supported schemes is in # List of supported schemes is in
# http://wiki2.dovecot.org/Authentication/PasswordSchemes # http://wiki2.dovecot.org/Authentication/PasswordSchemes
# #
default_pass_scheme = CRYPT #default_pass_scheme = CRYPT
# passdb query to retrieve the password. It can return fields: # passdb query to retrieve the password. It can return fields:
# password - The user's password. This field must be returned. # password - The user's password. This field must be returned.

View File

@@ -424,6 +424,22 @@ class MailsTest extends TestCase
$json_result = EmailAccounts::getLocal($customer_userdata, $data)->add(); $json_result = EmailAccounts::getLocal($customer_userdata, $data)->add();
$result = json_decode($json_result, true)['data']; $result = json_decode($json_result, true)['data'];
$this->assertEquals(1, $result['popaccountid']); $this->assertEquals(1, $result['popaccountid']);
switch (Settings::Get('system.passwordcryptfunc')) {
case PASSWORD_ARGON2I:
$cpPrefix = '{ARGON2I}';
break;
case PASSWORD_ARGON2ID:
$cpPrefix = '{ARGON2ID}';
break;
default:
$cpPrefix = '{BLF-CRYPT}';
break;
}
// password is not being returned by API, so query directly
$sel_stmt = Database::prepare("SELECT `password_enc` FROM `" . TABLE_MAIL_USERS . "` WHERE `email` = :email");
$result2 = Database::pexecute_first($sel_stmt, ['email' => $result['email']]);
$this->assertEquals($cpPrefix, substr($result2['password_enc'], 0, strlen($cpPrefix)));
} }
public function testAdminEmailAccountsUpdate() public function testAdminEmailAccountsUpdate()