diff --git a/install/tpl/debian_postfix.conf.master b/install/tpl/debian_postfix.conf.master index b75232e6e41455ddddf02364a247149ff4989d18..dcd5f592d880e0cfb8972863e89d5172eb14cf18 100644 --- a/install/tpl/debian_postfix.conf.master +++ b/install/tpl/debian_postfix.conf.master @@ -28,7 +28,7 @@ proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virt smtpd_helo_required = yes smtpd_helo_restrictions = reject_invalid_helo_hostname, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo, {reject_unknown_helo_hostname}, permit smtpd_sender_restrictions = {reject_aslm} check_sender_access regexp:{config_dir}/tag_as_originating.re, permit_mynetworks{reject_slm}, permit_sasl_authenticated, reject_non_fqdn_sender, check_sender_access regexp:{config_dir}/tag_as_foreign.re, check_sender_access proxy:mysql:{config_dir}/mysql-virtual_sender.cf -smtpd_client_restrictions = check_client_access proxy:mysql:{config_dir}/mysql-virtual_client.cf, permit_inet_interfaces, permit_mynetworks{rbl_list}, permit_sasl_authenticated, reject_unauth_pipelining {reject_unknown_client_hostname}, permit +smtpd_client_restrictions = check_client_access proxy:mysql:{config_dir}/mysql-virtual_client.cf, permit_inet_interfaces, permit_mynetworks, permit_sasl_authenticated{rbl_list}, reject_unauth_pipelining {reject_unknown_client_hostname}, permit smtpd_etrn_restrictions = permit_mynetworks, reject smtpd_data_restrictions = permit_mynetworks, reject_unauth_pipelining, reject_multi_recipient_bounce, permit smtpd_client_message_rate_limit = 100 diff --git a/install/tpl/fedora_postfix.conf.master b/install/tpl/fedora_postfix.conf.master index 70f07182acbd49c6a2b503d682f8e64df6ff688f..45bc0c117e0192ad93284f928b3303b56119316d 100644 --- a/install/tpl/fedora_postfix.conf.master +++ b/install/tpl/fedora_postfix.conf.master @@ -24,7 +24,7 @@ proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virt smtpd_helo_required = yes smtpd_helo_restrictions = reject_invalid_helo_hostname, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo, {reject_unknown_helo_hostname}, permit smtpd_sender_restrictions = {reject_aslm} check_sender_access regexp:{config_dir}/tag_as_originating.re, permit_mynetworks{reject_slm}, permit_sasl_authenticated, reject_non_fqdn_sender, check_sender_access regexp:{config_dir}/tag_as_foreign.re, check_sender_access proxy:mysql:{config_dir}/mysql-virtual_sender.cf -smtpd_client_restrictions = check_client_access proxy:mysql:{config_dir}/mysql-virtual_client.cf, permit_inet_interfaces, permit_mynetworks{rbl_list}, permit_sasl_authenticated, reject_unauth_pipelining {reject_unknown_client_hostname}, permit +smtpd_client_restrictions = check_client_access proxy:mysql:{config_dir}/mysql-virtual_client.cf, permit_inet_interfaces, permit_mynetworks, permit_sasl_authenticated{rbl_list}, reject_unauth_pipelining {reject_unknown_client_hostname}, permit smtpd_etrn_restrictions = permit_mynetworks, reject smtpd_data_restrictions = permit_mynetworks, reject_unauth_pipelining, reject_multi_recipient_bounce, permit smtpd_client_message_rate_limit = 100 diff --git a/install/tpl/gentoo_postfix.conf.master b/install/tpl/gentoo_postfix.conf.master index c7e1a06db2456449baa3b29f4efc36ad46683ad8..b3ff8f68041c19f7c1fd70b4464ec5414fc6a0fd 100644 --- a/install/tpl/gentoo_postfix.conf.master +++ b/install/tpl/gentoo_postfix.conf.master @@ -23,7 +23,7 @@ proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virt smtpd_helo_required = yes smtpd_helo_restrictions = reject_invalid_helo_hostname, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo, {reject_unknown_helo_hostname}, permit smtpd_sender_restrictions = {reject_aslm} check_sender_access regexp:{config_dir}/tag_as_originating.re, permit_mynetworks{reject_slm}, permit_sasl_authenticated, reject_non_fqdn_sender, check_sender_access regexp:{config_dir}/tag_as_foreign.re, check_sender_access proxy:mysql:{config_dir}/mysql-virtual_sender.cf -smtpd_client_restrictions = check_client_access proxy:mysql:{config_dir}/mysql-virtual_client.cf, permit_inet_interfaces, permit_mynetworks{rbl_list}, permit_sasl_authenticated, reject_unauth_pipelining {reject_unknown_client_hostname}, permit +smtpd_client_restrictions = check_client_access proxy:mysql:{config_dir}/mysql-virtual_client.cf, permit_inet_interfaces, permit_mynetworks, permit_sasl_authenticated{rbl_list}, reject_unauth_pipelining {reject_unknown_client_hostname}, permit smtpd_etrn_restrictions = permit_mynetworks, reject smtpd_data_restrictions = permit_mynetworks, reject_unauth_pipelining, reject_multi_recipient_bounce, permit smtpd_client_message_rate_limit = 100 diff --git a/install/tpl/opensuse_postfix.conf.master b/install/tpl/opensuse_postfix.conf.master index 44c643a2bf1840582b08204823e6735dde4e727d..7386fad16eb1fb40634797564be9e520b016e380 100644 --- a/install/tpl/opensuse_postfix.conf.master +++ b/install/tpl/opensuse_postfix.conf.master @@ -26,7 +26,7 @@ proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virt smtpd_helo_required = yes smtpd_helo_restrictions = reject_invalid_helo_hostname, permit_mynetworks, check_helo_access regexp:{config_dir}/helo_access, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, check_helo_access regexp:{config_dir}/blacklist_helo, {reject_unknown_helo_hostname}, permit smtpd_sender_restrictions = {reject_aslm} check_sender_access regexp:{config_dir}/tag_as_originating.re, permit_mynetworks{reject_slm}, permit_sasl_authenticated, reject_non_fqdn_sender, check_sender_access regexp:{config_dir}/tag_as_foreign.re, check_sender_access proxy:mysql:{config_dir}/mysql-virtual_sender.cf -smtpd_client_restrictions = check_client_access proxy:mysql:{config_dir}/mysql-virtual_client.cf, permit_inet_interfaces, permit_mynetworks{rbl_list}, permit_sasl_authenticated, reject_unauth_pipelining {reject_unknown_client_hostname}, permit +smtpd_client_restrictions = check_client_access proxy:mysql:{config_dir}/mysql-virtual_client.cf, permit_inet_interfaces, permit_mynetworks, permit_sasl_authenticated{rbl_list}, reject_unauth_pipelining {reject_unknown_client_hostname}, permit smtpd_etrn_restrictions = permit_mynetworks, reject smtpd_data_restrictions = permit_mynetworks, reject_unauth_pipelining, reject_multi_recipient_bounce, permit smtpd_client_message_rate_limit = 100 diff --git a/interface/lib/classes/tform_actions.inc.php b/interface/lib/classes/tform_actions.inc.php index d83ec0d3d78a89bebedb1e1011158ed22aae7b5c..0053be26634e0b8e172d143c48b7eb7653b541de 100644 --- a/interface/lib/classes/tform_actions.inc.php +++ b/interface/lib/classes/tform_actions.inc.php @@ -141,6 +141,8 @@ class tform_actions { $app->tform->datalogSave('UPDATE', $this->id, $this->oldDataRecord, $new_data_record); unset($new_data_record); unset($old_data_record); + + $this->onAfterDatalogSave(); } if($_REQUEST["next_tab"] == '') { @@ -222,6 +224,7 @@ class tform_actions { $new_data_record = $app->tform->getDataRecord($this->id); $app->tform->datalogSave('INSERT', $this->id, array(), $new_data_record); unset($new_data_record); + $this->onAfterDatalogSave(true); } @@ -264,21 +267,19 @@ class tform_actions { } function onBeforeUpdate() { - global $app, $conf; } function onBeforeInsert() { - global $app, $conf; } function onAfterUpdate() { - global $app, $conf; } function onAfterInsert() { - global $app, $conf; } + function onAfterDatalogSave($insert = false) { + } /** * Function called on data insert or update error @@ -297,7 +298,7 @@ class tform_actions { */ function onDelete() { global $app, $conf, $list_def_file, $tform_def_file; - + // Check CSRF Token $app->auth->csrf_token_check('GET'); diff --git a/interface/web/admin/lib/lang/de_system_config.lng b/interface/web/admin/lib/lang/de_system_config.lng index 40e29e7415e319e0f6619dc6d25ebdef6e474b90..4a862a2d4adb5960dca5a816db659b773e563c55 100644 --- a/interface/web/admin/lib/lang/de_system_config.lng +++ b/interface/web/admin/lib/lang/de_system_config.lng @@ -74,10 +74,6 @@ $wb['session_allow_endless_txt'] = '"Eingeloggt bleiben" aktivieren'; $wb['No'] = 'Nein'; $wb['min_password_length_txt'] = 'Minimale Passwortlänge'; $wb['min_password_strength_txt'] = 'Minimale Passwortstärke'; -$wb['ssh_authentication_txt'] = 'Allowed SSH authentication'; -$wb['ssh_authentication_password_key'] = 'Password & Key'; -$wb['ssh_authentication_password'] = 'Password'; -$wb['ssh_authentication_key'] = 'Key'; $wb['ssh_authentication_txt'] = 'Erlaubte SSH Authentifizierung'; $wb['ssh_authentication_password_key'] = 'Passwort & Schlüssel'; $wb['ssh_authentication_password'] = 'Passwort'; diff --git a/interface/web/dns/templates/dns_a_list.htm b/interface/web/dns/templates/dns_a_list.htm index e3e54867639145fea572859d68b8bba812f932e3..f17e1f804ddacd7579374d24e76ae312339893e2 100644 --- a/interface/web/dns/templates/dns_a_list.htm +++ b/interface/web/dns/templates/dns_a_list.htm @@ -1,3 +1,14 @@ +<tmpl_if name="config_error_msg"> + <div class="alert alert-danger"> + <p> + <tmpl_var name="configuration_error_txt"> + <div> + <div style="float:left;width:150px;">{tmpl_var name='config_error_tstamp'} : </div> + <div style="padding-left:150px;">{tmpl_var name='config_error_msg'}</div> + </div> + </p> + </div> +</tmpl_if> <div class="pnl_toolsarea"> <tmpl_if name='datalog_changes_count' op='>' value='0'> <div class="systemmonitor-state state-info"> diff --git a/interface/web/dns/templates/dns_soa_edit.htm b/interface/web/dns/templates/dns_soa_edit.htm index 2859913f8647c3767898f71f1377e492a24e9d22..97f338503099d330097583b225db61a0de55c195 100644 --- a/interface/web/dns/templates/dns_soa_edit.htm +++ b/interface/web/dns/templates/dns_soa_edit.htm @@ -1,11 +1,4 @@ <tmpl_if name="config_error_msg"> - <!--<div style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;"> - <p style="font-face:bold">{tmpl_var name='configuration_error_txt'}</p> - <div> - <div style="float:left;width:150px;">{tmpl_var name='config_error_tstamp'} : </div> - <div style="padding-left:150px;">{tmpl_var name='config_error_msg'}</div> - </div> - </div>--> <div class="alert alert-danger"> <p> <tmpl_var name="configuration_error_txt"> diff --git a/interface/web/mail/spamfilter_policy_edit.php b/interface/web/mail/spamfilter_policy_edit.php index 572a184020c28cef8f219fae5879a6231ff69fed..8b15f2fac6637e167a4e266232f1cfb21b4d8c55 100644 --- a/interface/web/mail/spamfilter_policy_edit.php +++ b/interface/web/mail/spamfilter_policy_edit.php @@ -49,7 +49,9 @@ $app->uses('tpl,tform,tform_actions'); $app->load('tform_actions'); class page_action extends tform_actions { - + + private $record_has_changed = false; + function onShowNew() { global $app; @@ -87,30 +89,32 @@ class page_action extends tform_actions { parent::onSubmit(); } - + function onAfterUpdate() { - global $app; - - $record_has_changed = false; + $this->record_has_changed = false; foreach($this->dataRecord as $key => $val) { if(isset($this->oldDataRecord[$key]) && @$this->oldDataRecord[$key] != $val) { // Record has changed - $record_has_changed = true; + $this->record_has_changed = true; } } + } - if($record_has_changed){ + function onAfterDatalogSave($insert = false) { + global $app; + + if(!$insert && $this->record_has_changed){ $spamfilter_users = $app->db->queryAllRecords("SELECT * FROM spamfilter_users WHERE policy_id = ?", intval($this->id)); if(is_array($spamfilter_users) && !empty($spamfilter_users)){ foreach($spamfilter_users as $spamfilter_user){ $app->db->datalogUpdate('spamfilter_users', $spamfilter_user, 'id', $spamfilter_user["id"], true); - + // check if this is an email domain if(substr($spamfilter_user['email'],0,1) == '@') { $domain = substr($spamfilter_user['email'],1); $forwardings = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE source LIKE ? OR destination LIKE ?", "%@" . $domain, "%@" . $domain); - + // Force-update aliases and forwards if(is_array($forwardings)) { foreach($forwardings as $rec) { @@ -118,7 +122,7 @@ class page_action extends tform_actions { } } } - + } } } diff --git a/server/lib/classes/cron.d/600-jailkit_maintenance.inc.php b/server/lib/classes/cron.d/600-jailkit_maintenance.inc.php index 9916b72e57246892ac373fb15e1093b5e4cc8e5b..771bf0e71baef557e2bcf7fc6f4720030dfa34c7 100644 --- a/server/lib/classes/cron.d/600-jailkit_maintenance.inc.php +++ b/server/lib/classes/cron.d/600-jailkit_maintenance.inc.php @@ -74,6 +74,7 @@ class cronjob_jailkit_maintenance extends cronjob { foreach($records as $rec) { if (!is_dir($rec['document_root']) || !is_dir($rec['document_root'].'/etc/jailkit')) { + $app->db->query("UPDATE `web_domain` SET `last_jailkit_update` = NOW() WHERE `document_root` = ?", $rec['document_root']); continue; } diff --git a/server/lib/classes/ispcmail.inc.php b/server/lib/classes/ispcmail.inc.php index fbf5f84dcae2f0d8104f1cb540c66d5a69dadf49..2b3dc78cfc66658136443a4367e22caad0c49b71 100644 --- a/server/lib/classes/ispcmail.inc.php +++ b/server/lib/classes/ispcmail.inc.php @@ -824,8 +824,7 @@ class ispcmail { else $rec_string .= $recip; } $to = $this->_encodeHeader($rec_string, $this->mail_charset); - //$result = mail($to, $subject, $this->body, implode($this->_crlf, $headers)); - $result = mail($to, $enc_subject, $this->body, implode($this->_crlf, $headers)); + $result = mail($to, $enc_subject, $this->body, implode($this->_crlf, $headers), "-f $this->_mail_sender"); } // Reset the subject in case mail is resent diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php index 31e36836d55580d2bae6dcda9f22a7fdeed3c886..dbe702d0dd2473a898c3b11602a23d21c788a071 100644 --- a/server/lib/classes/monitor_tools.inc.php +++ b/server/lib/classes/monitor_tools.inc.php @@ -812,7 +812,7 @@ class monitor_tools { } public function send_notification_email($template, $placeholders, $recipients) { - global $conf; + global $app, $conf; if(!is_array($recipients) || count($recipients) < 1) return false; if(!is_array($placeholders)) $placeholders = array(); @@ -829,6 +829,7 @@ class monitor_tools { //* get mail headers, subject and body $mailHeaders = ''; + $mailFrom = ''; $mailBody = ''; $mailSubject = ''; $inHeader = true; @@ -844,6 +845,16 @@ class monitor_tools { $mailSubject = trim($parts[1]); continue; } + if(strtolower($parts[0]) == 'From') { + $mailFrom = trim($parts[1]); + continue; + } + if(strtolower($parts[0]) == 'Cc') { + if (! in_array(trim($parts[1]), $recipients)) { + $recipients[] = trim($parts[1]); + } + continue; + } unset($parts); $mailHeaders .= trim($lines[$l]) . "\n"; } else { @@ -854,18 +865,14 @@ class monitor_tools { //* Replace placeholders $mailHeaders = strtr($mailHeaders, $placeholders); + $mailFrom = strtr($mailFrom, $placeholders); $mailSubject = strtr($mailSubject, $placeholders); $mailBody = strtr($mailBody, $placeholders); for($r = 0; $r < count($recipients); $r++) { - $app->functions->mail($recipients[$r], $mailSubject, $mailBody, $mailHeaders); + $app->functions->mail($recipients[$r], $mailSubject, $mailBody, $mailFrom); } - unset($mailSubject); - unset($mailHeaders); - unset($mailBody); - unset($lines); - return true; } diff --git a/server/plugins-available/postfix_server_plugin.inc.php b/server/plugins-available/postfix_server_plugin.inc.php index 23373a1de049287d95c9ce9eb4fbe8a2d6879c67..b3e453be555427a5b8845dad5bf3bda347bb112f 100644 --- a/server/plugins-available/postfix_server_plugin.inc.php +++ b/server/plugins-available/postfix_server_plugin.inc.php @@ -193,7 +193,7 @@ class postfix_server_plugin { } } if ($i == count($new_options)) { - $new_options[] = array('reject_unknown_client_hostname'); + $new_options[] = 'reject_unknown_client_hostname'; } $app->system->exec_safe("postconf -e ?", 'smtpd_client_restrictions = '.implode(", ", $new_options)); @@ -231,7 +231,7 @@ class postfix_server_plugin { } } if ($i == count($new_options)) { - $new_options[] = array('reject_unknown_helo_hostname'); + $new_options[] = 'reject_unknown_helo_hostname'; } $app->system->exec_safe("postconf -e ?", 'smtpd_helo_restrictions = '.implode(", ", $new_options));