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'} :&nbsp;</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'} :&nbsp;</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));