diff --git a/.gitignore b/.gitignore
index 334dbbc502d951c1be4f79f08d6ab2b75ef842b8..930bbe11be12a3a2e3a4755a421ff3f28de06d75 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,11 @@
 .idea
 /nbproject/private/
 .phplint-cache
+
+# Vim and patch specific excludes
 *.swp
+*.orig
+*.rej
 
 # macOS-specific things to exclude
 
@@ -50,4 +54,7 @@ Temporary Items
 
 # Visual Studio code coverage results
 *.coverage
-*.coveragexml
\ No newline at end of file
+*.coveragexml
+
+# Visual Studio IDE cache/options directory
+.vs/
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 3a4a7de71fac0c761db397a24d37111979ada037..ec6003ea89f3d697050658982d28843ae210103b 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -3,6 +3,8 @@ ISPConfig is a open source project and community contributions are very welcome.
 
 This document is under development and will be continuously improved.
 
+Please do not refactor existing code and do not change the signature or the behaviour of central functions or libraries. Such changes may only be made by the core development team. We have had many bad experiences with such changes affecting the stability of ISPConfig, so we no longer accept submissions containing such changes. Merge requests containing such changes will be closed and not merged.
+
 # Issues
 * Before opening a new issue, use the search function to check if there isn't a bug report / feature request already.
 * If you are reporting a bug, please share your OS and PHP (CLI) version.
diff --git a/install/sql/incremental/upd_0099.sql b/install/sql/incremental/upd_0099.sql
new file mode 100644
index 0000000000000000000000000000000000000000..b822310c94eeef03c86a65edf06d70f8aeae705c
--- /dev/null
+++ b/install/sql/incremental/upd_0099.sql
@@ -0,0 +1,6 @@
+ALTER TABLE `spamfilter_policy` 
+CHANGE `warnvirusrecip` `warnvirusrecip` VARCHAR(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT 'N', 
+CHANGE `warnbannedrecip` `warnbannedrecip` VARCHAR(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT 'N', 
+CHANGE `warnbadhrecip` `warnbadhrecip` VARCHAR(1) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT 'N';
+ALTER TABLE `sys_ini` CHANGE `default_logo` `default_logo` TEXT CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL;
+ALTER TABLE `sys_ini` CHANGE `custom_logo` `custom_logo` TEXT CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL;
\ No newline at end of file
diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql
index b391ff05be090001703ed1d601879d67677d525b..d59dffbb9a0b137eb208925a9ab6bf07d13a274b 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -1533,9 +1533,9 @@ CREATE TABLE `spamfilter_policy` (
   `addr_extension_spam` varchar(64) default NULL,
   `addr_extension_banned` varchar(64) default NULL,
   `addr_extension_bad_header` varchar(64) default NULL,
-  `warnvirusrecip` enum('N','Y') default 'N',
-  `warnbannedrecip` enum('N','Y') default 'N',
-  `warnbadhrecip` enum('N','Y') default 'N',
+  `warnvirusrecip` VARCHAR(1) NULL default 'N',
+  `warnbannedrecip` VARCHAR(1) NULL default 'N',
+  `warnbadhrecip` VARCHAR(1) NULL default 'N',
   `newvirus_admin` varchar(64) default NULL,
   `virus_admin` varchar(64) default NULL,
   `banned_admin` varchar(64) default NULL,
@@ -1742,8 +1742,8 @@ CREATE TABLE `sys_group` (
 CREATE TABLE `sys_ini` (
   `sysini_id` int(11) unsigned NOT NULL auto_increment,
   `config` longtext,
-  `default_logo` text NOT NULL,
-  `custom_logo` text NOT NULL,
+  `default_logo` text NULL,
+  `custom_logo` text NULL,
   PRIMARY KEY  (`sysini_id`)
 ) DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
 
diff --git a/install/tpl/system.ini.master b/install/tpl/system.ini.master
index 0c4254f87b2819b8b69766d8f9d1d5c9ebf04b0a..79baa94700cc3d1e7c9ffda932ceeff7044968d5 100644
--- a/install/tpl/system.ini.master
+++ b/install/tpl/system.ini.master
@@ -75,3 +75,4 @@ session_timeout=0
 session_allow_endless=0
 min_password_length=8
 min_password_strength=3
+show_delete_on_forms=n
diff --git a/interface/lib/classes/dns_wizard.inc.php b/interface/lib/classes/dns_wizard.inc.php
index 9b81748d23432683793109506a847adf92e71e8c..c9c1af2e6637268ef930cc2ffb3dc4b6d1389793 100644
--- a/interface/lib/classes/dns_wizard.inc.php
+++ b/interface/lib/classes/dns_wizard.inc.php
@@ -268,7 +268,7 @@ class dns_wizard
                 "expire" => $expire,
                 "minimum" => $minimum,
                 "ttl" => $ttl,
-                "active" => 'Y',
+                "active" => 'N', // Activated later when all DNS records are added.
                 "xfer" => $xfer,
                 "also_notify" => $also_notify,
                 "update_acl" => $update_acl,
@@ -301,6 +301,9 @@ class dns_wizard
                 }
             }
 
+            // Activate the DNS zone.
+            $app->db->datalogUpdate('dns_soa', array('active' => 'Y'), 'id', $dns_soa_id);
+
             return 'ok';
 
         } else {
diff --git a/interface/lib/classes/ispcmail.inc.php b/interface/lib/classes/ispcmail.inc.php
index 17ab0eb300eb403bfb0f8eca3ba4f2d02a0b680d..74dc137a7b598621eabe46cd5e71328c0cdb3f38 100644
--- a/interface/lib/classes/ispcmail.inc.php
+++ b/interface/lib/classes/ispcmail.inc.php
@@ -823,7 +823,7 @@ class ispcmail {
 				$recipname = trim(str_replace('"', '', $recipname));
 
 				if($rec_string != '') $rec_string .= ', ';
-				if($recipname && !is_numeric($recipname)) $rec_string .= $recipname . '<' . $recip . '>';
+				if($recipname && !is_numeric($recipname)) $rec_string .= '"' . $recipname . '"<' . $recip . '>';
 				else $rec_string .= $recip;
 			}
 			$to = $this->_encodeHeader($rec_string, $this->mail_charset);
diff --git a/interface/lib/classes/tform_base.inc.php b/interface/lib/classes/tform_base.inc.php
index 7b031dd345c5c1fd2ae59851ad3ef64720162845..dad8266971c15f675881b56c3a11fe7fc90cff44 100644
--- a/interface/lib/classes/tform_base.inc.php
+++ b/interface/lib/classes/tform_base.inc.php
@@ -478,7 +478,7 @@ class tform_base {
 					if(isset($record[$key])) {
 						$val = $record[$key];
 					} else {
-						$val = '';
+						$val = $field['default'];
 					}
 
 					// If Datasource is set, get the data from there
@@ -621,11 +621,7 @@ class tform_base {
 						break;
 
 					default:
-						if(isset($record[$key])) {
-							$new_record[$key] = $app->functions->htmlentities($record[$key]);
-						} else {
-							$new_record[$key] = '';
-						}
+						$new_record[$key] = $app->functions->htmlentities($val);
 					}
 				}
 			}
diff --git a/interface/lib/classes/tpl.inc.php b/interface/lib/classes/tpl.inc.php
index e999ba5bfe4986416e10927b80cfcf6d0dc1fad7..e6a2cfdfb2c8e1463ce0185804f23fcadf915472 100644
--- a/interface/lib/classes/tpl.inc.php
+++ b/interface/lib/classes/tpl.inc.php
@@ -233,7 +233,7 @@ if (!defined('vlibTemplateClassLoaded')) {
 		public function setVar($k, $v = null, $encode = false)
 		{
 			global $app;
-			
+
 			if (is_array($k)) {
 				foreach($k as $key => $value){
 					$key = ($this->OPTIONS['CASELESS']) ? strtolower(trim($key)) : trim($key);
@@ -917,9 +917,17 @@ if (!defined('vlibTemplateClassLoaded')) {
 			$filename = basename($file);
 			$filepath = dirname($file);
 
-			if(isset($_SESSION['s']['module']['name']) && isset($_SESSION['s']['theme'])) {
-				if(is_file(ISPC_THEMES_PATH.'/'.$_SESSION['s']['theme'].'/templates/'.$_SESSION['s']['module']['name'].'/'.$filename)) {
-					return ISPC_THEMES_PATH.'/'.$_SESSION['s']['theme'].'/templates/'.$_SESSION['s']['module']['name'].'/'.$filename;
+			$modulename = false;
+
+			if(isset($_SESSION['s']['module']['name'])) {
+				$modulename = $_SESSION['s']['module']['name'];
+			} elseif(strpos($_SERVER['PHP_SELF'], '/login/') === 0) {
+				$modulename = 'login';
+			}
+
+			if($modulename && isset($_SESSION['s']['theme'])) {
+				if(is_file(ISPC_THEMES_PATH.'/'.$_SESSION['s']['theme'].'/templates/'.$modulename.'/'.$filename)) {
+					return ISPC_THEMES_PATH.'/'.$_SESSION['s']['theme'].'/templates/'.$modulename.'/'.$filename;
 				}
 			}
 
@@ -1079,12 +1087,12 @@ if (!defined('vlibTemplateClassLoaded')) {
 		private function _parseHook ($name)
 		{
 			global $app;
-			
+
 			if(!$name) return false;
-			
+
 			$module = isset($_SESSION['s']['module']['name']) ? $_SESSION['s']['module']['name'] : '';
 			$form = isset($app->tform->formDef['name']) ? $app->tform->formDef['name'] : '';
-			
+
 			$events = array();
 			if($module) {
 				$events[] = $module . ':' . ($form ? $form : '') . ':' . $name;
@@ -1093,9 +1101,9 @@ if (!defined('vlibTemplateClassLoaded')) {
 				$events[] = $name;
 				$events[] = 'on_template_content';
 			}
-			
+
 			$events = array_unique($events);
-			
+
 			for($e = 0; $e < count($events); $e++) {
 				$tmpresult = $app->plugin->raiseEvent($events[$e], array(
 					'name' => $name,
@@ -1104,10 +1112,10 @@ if (!defined('vlibTemplateClassLoaded')) {
 				), true);
 				if(!$tmpresult) $tmpresult = '';
 				else $tmpresult = $this->_getData($tmpresult, false, true);
-				
+
 				$result .= $tmpresult;
 			}
-			
+
 			return $result;
 		}
 
@@ -1225,7 +1233,7 @@ if (!defined('vlibTemplateClassLoaded')) {
 			$wholetag = $args[0];
 			$openclose = $args[1];
 			$tag = strtolower($args[2]);
-			
+
 			if ($tag == 'else') return '<?php } else { ?>';
 			if ($tag == 'tmpl_include') return $wholetag; // ignore tmpl_include tags
 
@@ -1303,10 +1311,10 @@ if (!defined('vlibTemplateClassLoaded')) {
 				if ($this->OPTIONS['ENABLE_PHPINCLUDE']) {
 					return '<?php include(\''.$file.'\'); ?>';
 				}
-			
+
 			case 'hook':
 				return $this->_parseHook(@$var);
-			
+
 			case 'include':
 				return '<?php $this->_getData($this->_fileSearch(\''.$file.'\'), 1); ?>';
 
diff --git a/interface/lib/lang/ar.lng b/interface/lib/lang/ar.lng
index 3f14a97cf4f30169c3bb46ce4cd7fc1939bfad32..d00c7dc1b381c9de60af300b6bd80a6f0ed3643e 100644
--- a/interface/lib/lang/ar.lng
+++ b/interface/lib/lang/ar.lng
@@ -180,4 +180,8 @@ $wb['datalog_status_d_client'] = 'Delete client';
 $wb['datalog_status_i_domain'] = 'Create new domain';
 $wb['datalog_status_u_domain'] = 'Update domain';
 $wb['datalog_status_d_domain'] = 'Delete domain';
+$wb['datalog_status_d_web_backup'] = 'Delete website backup';
+$wb['datalog_status_i_dns_template'] = 'Create DNS template';
+$wb['datalog_status_u_dns_template'] = 'Update DNS template';
+$wb['datalog_status_d_dns_template'] = 'Delete DNS template';
 ?>
diff --git a/interface/lib/lang/bg.lng b/interface/lib/lang/bg.lng
index 4b386336618c85a02fb77de54e3838b06b5d8413..35bec0ab45f4164aa84e221b877e694127d08827 100644
--- a/interface/lib/lang/bg.lng
+++ b/interface/lib/lang/bg.lng
@@ -180,4 +180,8 @@ $wb['datalog_status_d_client'] = 'Delete client';
 $wb['datalog_status_i_domain'] = 'Create new domain';
 $wb['datalog_status_u_domain'] = 'Update domain';
 $wb['datalog_status_d_domain'] = 'Delete domain';
+$wb['datalog_status_d_web_backup'] = 'Delete website backup';
+$wb['datalog_status_i_dns_template'] = 'Create DNS template';
+$wb['datalog_status_u_dns_template'] = 'Update DNS template';
+$wb['datalog_status_d_dns_template'] = 'Delete DNS template';
 ?>
diff --git a/interface/lib/lang/br.lng b/interface/lib/lang/br.lng
index 2ab5ee3c0cedba534bcf519f9ca1a50425c61e42..4195702e25102dead8bb294f5e17429489600724 100644
--- a/interface/lib/lang/br.lng
+++ b/interface/lib/lang/br.lng
@@ -180,4 +180,8 @@ $wb['datalog_status_d_client'] = 'Delete client';
 $wb['datalog_status_i_domain'] = 'Create new domain';
 $wb['datalog_status_u_domain'] = 'Update domain';
 $wb['datalog_status_d_domain'] = 'Delete domain';
+$wb['datalog_status_d_web_backup'] = 'Delete website backup';
+$wb['datalog_status_i_dns_template'] = 'Create DNS template';
+$wb['datalog_status_u_dns_template'] = 'Update DNS template';
+$wb['datalog_status_d_dns_template'] = 'Delete DNS template';
 ?>
diff --git a/interface/lib/lang/ca.lng b/interface/lib/lang/ca.lng
index 4a5fa7c252c6cd7c77ec3563173151a83f8db074..2d61af651a9dab14b178ccb11ab609af3218559b 100644
--- a/interface/lib/lang/ca.lng
+++ b/interface/lib/lang/ca.lng
@@ -180,4 +180,8 @@ $wb['datalog_status_d_client'] = 'Delete client';
 $wb['datalog_status_i_domain'] = 'Create new domain';
 $wb['datalog_status_u_domain'] = 'Update domain';
 $wb['datalog_status_d_domain'] = 'Delete domain';
+$wb['datalog_status_d_web_backup'] = 'Delete website backup';
+$wb['datalog_status_i_dns_template'] = 'Create DNS template';
+$wb['datalog_status_u_dns_template'] = 'Update DNS template';
+$wb['datalog_status_d_dns_template'] = 'Delete DNS template';
 ?>
diff --git a/interface/lib/lang/cn.lng b/interface/lib/lang/cn.lng
index 7f0da4e44ead0b9a718462e1f55e90c21b563e67..cbb6ace68a31c5b35f266dd8404817ae5d218310 100644
--- a/interface/lib/lang/cn.lng
+++ b/interface/lib/lang/cn.lng
@@ -181,4 +181,8 @@ $wb['datalog_status_d_client'] = 'Delete client';
 $wb['datalog_status_i_domain'] = 'Create new domain';
 $wb['datalog_status_u_domain'] = 'Update domain';
 $wb['datalog_status_d_domain'] = 'Delete domain';
+$wb['datalog_status_d_web_backup'] = 'Delete website backup';
+$wb['datalog_status_i_dns_template'] = 'Create DNS template';
+$wb['datalog_status_u_dns_template'] = 'Update DNS template';
+$wb['datalog_status_d_dns_template'] = 'Delete DNS template';
 ?>
diff --git a/interface/lib/lang/cz.lng b/interface/lib/lang/cz.lng
index 4ed689bba9e37baf653cc3818d2b05aa25f386f9..880f4fea117eed9761c8640855211723f0384f9b 100644
--- a/interface/lib/lang/cz.lng
+++ b/interface/lib/lang/cz.lng
@@ -180,4 +180,8 @@ $wb['datalog_status_d_client'] = 'Delete client';
 $wb['datalog_status_i_domain'] = 'Create new domain';
 $wb['datalog_status_u_domain'] = 'Update domain';
 $wb['datalog_status_d_domain'] = 'Delete domain';
+$wb['datalog_status_d_web_backup'] = 'Delete website backup';
+$wb['datalog_status_i_dns_template'] = 'Create DNS template';
+$wb['datalog_status_u_dns_template'] = 'Update DNS template';
+$wb['datalog_status_d_dns_template'] = 'Delete DNS template';
 ?>
diff --git a/interface/lib/lang/de.lng b/interface/lib/lang/de.lng
index d7537bac04eaa4296d05e0fe57ec3960e33cf8c2..885feb171b0de555c1978ae062ed2a1640a58cec 100644
--- a/interface/lib/lang/de.lng
+++ b/interface/lib/lang/de.lng
@@ -180,4 +180,8 @@ $wb['datalog_status_d_client'] = 'Delete client';
 $wb['datalog_status_i_domain'] = 'Create new domain';
 $wb['datalog_status_u_domain'] = 'Update domain';
 $wb['datalog_status_d_domain'] = 'Delete domain';
+$wb['datalog_status_d_web_backup'] = 'Delete website backup';
+$wb['datalog_status_i_dns_template'] = 'Create DNS template';
+$wb['datalog_status_u_dns_template'] = 'Update DNS template';
+$wb['datalog_status_d_dns_template'] = 'Delete DNS template';
 ?>
diff --git a/interface/lib/lang/dk.lng b/interface/lib/lang/dk.lng
index ec8198fa6f2010fdcfe312b28244a7ff5dfbb2fe..6082b1a3919b4efeb0c46f1d7a74961b4f849b03 100644
--- a/interface/lib/lang/dk.lng
+++ b/interface/lib/lang/dk.lng
@@ -180,4 +180,8 @@ $wb['datalog_status_d_client'] = 'Delete client';
 $wb['datalog_status_i_domain'] = 'Create new domain';
 $wb['datalog_status_u_domain'] = 'Update domain';
 $wb['datalog_status_d_domain'] = 'Delete domain';
+$wb['datalog_status_d_web_backup'] = 'Delete website backup';
+$wb['datalog_status_i_dns_template'] = 'Create DNS template';
+$wb['datalog_status_u_dns_template'] = 'Update DNS template';
+$wb['datalog_status_d_dns_template'] = 'Delete DNS template';
 ?>
diff --git a/interface/lib/lang/el.lng b/interface/lib/lang/el.lng
index e15cf3be9570afa452392e4400b06273c70c812b..fb45cd8b68f0d426c0a79979e6dcec8aecd727ee 100644
--- a/interface/lib/lang/el.lng
+++ b/interface/lib/lang/el.lng
@@ -180,4 +180,8 @@ $wb['datalog_status_d_client'] = 'Delete client';
 $wb['datalog_status_i_domain'] = 'Create new domain';
 $wb['datalog_status_u_domain'] = 'Update domain';
 $wb['datalog_status_d_domain'] = 'Delete domain';
+$wb['datalog_status_d_web_backup'] = 'Delete website backup';
+$wb['datalog_status_i_dns_template'] = 'Create DNS template';
+$wb['datalog_status_u_dns_template'] = 'Update DNS template';
+$wb['datalog_status_d_dns_template'] = 'Delete DNS template';
 ?>
diff --git a/interface/lib/lang/en.lng b/interface/lib/lang/en.lng
index 0207f34bba8fc0bb17dd7eeba589e205a27ef9a8..c9b7ccf319c3605f193b6ecc5a8f5a082ac35b38 100644
--- a/interface/lib/lang/en.lng
+++ b/interface/lib/lang/en.lng
@@ -181,6 +181,10 @@ $wb['server_id_0_error_txt'] = 'Please select a valid Server. Server ID must be
 $wb['datalog_changes_close_txt'] = 'Close';
 $wb['non_admin_error'] = 'Requires administrator level permissions';
 $wb['copy_to_clipboard_txt'] = 'Copy to clipboard';
+$wb['datalog_status_d_web_backup'] = 'Delete website backup';
+$wb['datalog_status_i_dns_template'] = 'Create DNS template';
+$wb['datalog_status_u_dns_template'] = 'Update DNS template';
+$wb['datalog_status_d_dns_template'] = 'Delete DNS template';
 $wb['last_accessed_txt'] = 'Last accessed';
 $wb['never_accessed_txt'] = 'Never or unknown';
 ?>
diff --git a/interface/lib/lang/es.lng b/interface/lib/lang/es.lng
index 38ef203e1c765f782894ef7d776c4bfc1c14a5b6..bc2ead77a86825286abdd10af01c1e0d0bbdddfa 100644
--- a/interface/lib/lang/es.lng
+++ b/interface/lib/lang/es.lng
@@ -180,4 +180,8 @@ $wb['datalog_status_d_client'] = 'Delete client';
 $wb['datalog_status_i_domain'] = 'Create new domain';
 $wb['datalog_status_u_domain'] = 'Update domain';
 $wb['datalog_status_d_domain'] = 'Delete domain';
+$wb['datalog_status_d_web_backup'] = 'Delete website backup';
+$wb['datalog_status_i_dns_template'] = 'Create DNS template';
+$wb['datalog_status_u_dns_template'] = 'Update DNS template';
+$wb['datalog_status_d_dns_template'] = 'Delete DNS template';
 ?>
diff --git a/interface/lib/lang/fi.lng b/interface/lib/lang/fi.lng
index 55c788f77c8dc029a6c1076c5d36e315b751edd5..b8f1c502fc10a9ce10de3f7de7d53a11124286eb 100644
--- a/interface/lib/lang/fi.lng
+++ b/interface/lib/lang/fi.lng
@@ -180,4 +180,8 @@ $wb['datalog_status_d_client'] = 'Delete client';
 $wb['datalog_status_i_domain'] = 'Create new domain';
 $wb['datalog_status_u_domain'] = 'Update domain';
 $wb['datalog_status_d_domain'] = 'Delete domain';
+$wb['datalog_status_d_web_backup'] = 'Delete website backup';
+$wb['datalog_status_i_dns_template'] = 'Create DNS template';
+$wb['datalog_status_u_dns_template'] = 'Update DNS template';
+$wb['datalog_status_d_dns_template'] = 'Delete DNS template';
 ?>
diff --git a/interface/lib/lang/fr.lng b/interface/lib/lang/fr.lng
index ea3bac73c31f04f8e7b753e6b2ca6edcb6c4bfb1..273cc125dc891467e963b3cf1a707f7aa1ad3ad3 100644
--- a/interface/lib/lang/fr.lng
+++ b/interface/lib/lang/fr.lng
@@ -180,4 +180,8 @@ $wb['datalog_status_d_client'] = 'Delete client';
 $wb['datalog_status_i_domain'] = 'Create new domain';
 $wb['datalog_status_u_domain'] = 'Update domain';
 $wb['datalog_status_d_domain'] = 'Delete domain';
+$wb['datalog_status_d_web_backup'] = 'Delete website backup';
+$wb['datalog_status_i_dns_template'] = 'Create DNS template';
+$wb['datalog_status_u_dns_template'] = 'Update DNS template';
+$wb['datalog_status_d_dns_template'] = 'Delete DNS template';
 ?>
diff --git a/interface/lib/lang/hr.lng b/interface/lib/lang/hr.lng
index 878f73ba205d842f693d830252d65f88f5cefcbd..bf52fe0be5b925f1bfcc0f2fab33414c6f87a41a 100644
--- a/interface/lib/lang/hr.lng
+++ b/interface/lib/lang/hr.lng
@@ -180,4 +180,8 @@ $wb['datalog_status_d_client'] = 'Delete client';
 $wb['datalog_status_i_domain'] = 'Create new domain';
 $wb['datalog_status_u_domain'] = 'Update domain';
 $wb['datalog_status_d_domain'] = 'Delete domain';
+$wb['datalog_status_d_web_backup'] = 'Delete website backup';
+$wb['datalog_status_i_dns_template'] = 'Create DNS template';
+$wb['datalog_status_u_dns_template'] = 'Update DNS template';
+$wb['datalog_status_d_dns_template'] = 'Delete DNS template';
 ?>
diff --git a/interface/lib/lang/hu.lng b/interface/lib/lang/hu.lng
index 72b0882326914a2fab5473abf6170ecb95e9965a..732e078f8a6e4363542ae2687d1b09e52ca0bc6e 100644
--- a/interface/lib/lang/hu.lng
+++ b/interface/lib/lang/hu.lng
@@ -180,4 +180,8 @@ $wb['datalog_status_d_client'] = 'Delete client';
 $wb['datalog_status_i_domain'] = 'Create new domain';
 $wb['datalog_status_u_domain'] = 'Update domain';
 $wb['datalog_status_d_domain'] = 'Delete domain';
+$wb['datalog_status_d_web_backup'] = 'Delete website backup';
+$wb['datalog_status_i_dns_template'] = 'Create DNS template';
+$wb['datalog_status_u_dns_template'] = 'Update DNS template';
+$wb['datalog_status_d_dns_template'] = 'Delete DNS template';
 ?>
diff --git a/interface/lib/lang/id.lng b/interface/lib/lang/id.lng
index 1df46044b4d4f527fa6547cf112489b757aaef88..970f7d8396769aec3e8b6af2fd860e878a229bfd 100644
--- a/interface/lib/lang/id.lng
+++ b/interface/lib/lang/id.lng
@@ -180,4 +180,8 @@ $wb['datalog_status_d_client'] = 'Delete client';
 $wb['datalog_status_i_domain'] = 'Create new domain';
 $wb['datalog_status_u_domain'] = 'Update domain';
 $wb['datalog_status_d_domain'] = 'Delete domain';
+$wb['datalog_status_d_web_backup'] = 'Delete website backup';
+$wb['datalog_status_i_dns_template'] = 'Create DNS template';
+$wb['datalog_status_u_dns_template'] = 'Update DNS template';
+$wb['datalog_status_d_dns_template'] = 'Delete DNS template';
 ?>
diff --git a/interface/lib/lang/it.lng b/interface/lib/lang/it.lng
index db4660a246149ff6c564a2d807d44d3396c1808e..235c86e8368b59aab772c9ead5d6eaadf1325cdf 100644
--- a/interface/lib/lang/it.lng
+++ b/interface/lib/lang/it.lng
@@ -180,4 +180,8 @@ $wb['datalog_status_d_client'] = 'Delete client';
 $wb['datalog_status_i_domain'] = 'Create new domain';
 $wb['datalog_status_u_domain'] = 'Update domain';
 $wb['datalog_status_d_domain'] = 'Delete domain';
+$wb['datalog_status_d_web_backup'] = 'Delete website backup';
+$wb['datalog_status_i_dns_template'] = 'Create DNS template';
+$wb['datalog_status_u_dns_template'] = 'Update DNS template';
+$wb['datalog_status_d_dns_template'] = 'Delete DNS template';
 ?>
diff --git a/interface/lib/lang/ja.lng b/interface/lib/lang/ja.lng
index 82e5b9850e044a26352366e005d5e2f9534652a3..657b6128b11bb59a6c68369e5d6cd4aa9f231bc6 100644
--- a/interface/lib/lang/ja.lng
+++ b/interface/lib/lang/ja.lng
@@ -180,4 +180,8 @@ $wb['datalog_status_d_client'] = 'Delete client';
 $wb['datalog_status_i_domain'] = 'Create new domain';
 $wb['datalog_status_u_domain'] = 'Update domain';
 $wb['datalog_status_d_domain'] = 'Delete domain';
+$wb['datalog_status_d_web_backup'] = 'Delete website backup';
+$wb['datalog_status_i_dns_template'] = 'Create DNS template';
+$wb['datalog_status_u_dns_template'] = 'Update DNS template';
+$wb['datalog_status_d_dns_template'] = 'Delete DNS template';
 ?>
diff --git a/interface/lib/lang/nl.lng b/interface/lib/lang/nl.lng
index c56a5040109257cefa5aad7bdc5d71d73edc6a4e..b3386d906518658b74072878bfadd0d85b054402 100644
--- a/interface/lib/lang/nl.lng
+++ b/interface/lib/lang/nl.lng
@@ -180,6 +180,10 @@ $wb['server_id_0_error_txt'] = 'Please select a valid Server. Server ID must be
 $wb['datalog_changes_close_txt'] = 'Sluiten';
 $wb['non_admin_error'] = 'Requires administrator level permissions';
 $wb['copy_to_clipboard_txt'] = 'Kopieer naar klembord';
+$wb['datalog_status_d_web_backup'] = 'Delete website backup';
+$wb['datalog_status_i_dns_template'] = 'Create DNS template';
+$wb['datalog_status_u_dns_template'] = 'Update DNS template';
+$wb['datalog_status_d_dns_template'] = 'Delete DNS template';
 $wb['last_accessed_txt'] = 'Laatst gebruikt';
 $wb['never_accessed_txt'] = 'Niet of onbekend';
 ?>
diff --git a/interface/lib/lang/pl.lng b/interface/lib/lang/pl.lng
index bf2231c981045719629e46ba3ebe94a34b2791d6..e33f45575e3dd815179261fb129c80a0dc700769 100644
--- a/interface/lib/lang/pl.lng
+++ b/interface/lib/lang/pl.lng
@@ -180,4 +180,8 @@ $wb['datalog_status_d_client'] = 'Delete client';
 $wb['datalog_status_i_domain'] = 'Create new domain';
 $wb['datalog_status_u_domain'] = 'Update domain';
 $wb['datalog_status_d_domain'] = 'Delete domain';
+$wb['datalog_status_d_web_backup'] = 'Delete website backup';
+$wb['datalog_status_i_dns_template'] = 'Create DNS template';
+$wb['datalog_status_u_dns_template'] = 'Update DNS template';
+$wb['datalog_status_d_dns_template'] = 'Delete DNS template';
 ?>
diff --git a/interface/lib/lang/pt.lng b/interface/lib/lang/pt.lng
index d7ff100bf8c24f8ad14646f3cff34946d864d12f..95fb1f2ddb428e77e3c668157a93d58ccdaca544 100644
--- a/interface/lib/lang/pt.lng
+++ b/interface/lib/lang/pt.lng
@@ -180,4 +180,8 @@ $wb['datalog_status_d_client'] = 'Delete client';
 $wb['datalog_status_i_domain'] = 'Create new domain';
 $wb['datalog_status_u_domain'] = 'Update domain';
 $wb['datalog_status_d_domain'] = 'Delete domain';
+$wb['datalog_status_d_web_backup'] = 'Delete website backup';
+$wb['datalog_status_i_dns_template'] = 'Create DNS template';
+$wb['datalog_status_u_dns_template'] = 'Update DNS template';
+$wb['datalog_status_d_dns_template'] = 'Delete DNS template';
 ?>
diff --git a/interface/lib/lang/ro.lng b/interface/lib/lang/ro.lng
index 3e38f9fb65e53dd0541d36847632eda999df0275..6ec3d59702c3f3f50ae50083d11243e5b0648d91 100644
--- a/interface/lib/lang/ro.lng
+++ b/interface/lib/lang/ro.lng
@@ -180,4 +180,8 @@ $wb['datalog_status_d_client'] = 'Delete client';
 $wb['datalog_status_i_domain'] = 'Create new domain';
 $wb['datalog_status_u_domain'] = 'Update domain';
 $wb['datalog_status_d_domain'] = 'Delete domain';
+$wb['datalog_status_d_web_backup'] = 'Delete website backup';
+$wb['datalog_status_i_dns_template'] = 'Create DNS template';
+$wb['datalog_status_u_dns_template'] = 'Update DNS template';
+$wb['datalog_status_d_dns_template'] = 'Delete DNS template';
 ?>
diff --git a/interface/lib/lang/ru.lng b/interface/lib/lang/ru.lng
index 3dca27230dd52b201a32d674364f780c795846b6..0bf578468ed631cb56124bf8c04f9b9335b81b08 100644
--- a/interface/lib/lang/ru.lng
+++ b/interface/lib/lang/ru.lng
@@ -180,4 +180,8 @@ $wb['datalog_status_d_client'] = 'Delete client';
 $wb['datalog_status_i_domain'] = 'Create new domain';
 $wb['datalog_status_u_domain'] = 'Update domain';
 $wb['datalog_status_d_domain'] = 'Delete domain';
+$wb['datalog_status_d_web_backup'] = 'Delete website backup';
+$wb['datalog_status_i_dns_template'] = 'Create DNS template';
+$wb['datalog_status_u_dns_template'] = 'Update DNS template';
+$wb['datalog_status_d_dns_template'] = 'Delete DNS template';
 ?>
diff --git a/interface/lib/lang/se.lng b/interface/lib/lang/se.lng
index 1e5e7702426c66cbbd50bf9a9e646f021053e5ef..c175f9e54cb80b4a3c3aa413acff838d73842050 100644
--- a/interface/lib/lang/se.lng
+++ b/interface/lib/lang/se.lng
@@ -180,4 +180,8 @@ $wb['datalog_status_d_client'] = 'Delete client';
 $wb['datalog_status_i_domain'] = 'Create new domain';
 $wb['datalog_status_u_domain'] = 'Update domain';
 $wb['datalog_status_d_domain'] = 'Delete domain';
+$wb['datalog_status_d_web_backup'] = 'Delete website backup';
+$wb['datalog_status_i_dns_template'] = 'Create DNS template';
+$wb['datalog_status_u_dns_template'] = 'Update DNS template';
+$wb['datalog_status_d_dns_template'] = 'Delete DNS template';
 ?>
diff --git a/interface/lib/lang/sk.lng b/interface/lib/lang/sk.lng
index 01f77e616a81096474bc376b7a547d2487c9b451..e39f39a92fa2e8240c0f4cc79999416a3cce782b 100644
--- a/interface/lib/lang/sk.lng
+++ b/interface/lib/lang/sk.lng
@@ -180,4 +180,8 @@ $wb['datalog_status_d_client'] = 'Delete client';
 $wb['datalog_status_i_domain'] = 'Create new domain';
 $wb['datalog_status_u_domain'] = 'Update domain';
 $wb['datalog_status_d_domain'] = 'Delete domain';
+$wb['datalog_status_d_web_backup'] = 'Delete website backup';
+$wb['datalog_status_i_dns_template'] = 'Create DNS template';
+$wb['datalog_status_u_dns_template'] = 'Update DNS template';
+$wb['datalog_status_d_dns_template'] = 'Delete DNS template';
 ?>
diff --git a/interface/lib/lang/tr.lng b/interface/lib/lang/tr.lng
index 42ca64a087cdae747708ced8630752c03a030bcf..8a0661a6af35d754e2da56e086b1330cb93860da 100644
--- a/interface/lib/lang/tr.lng
+++ b/interface/lib/lang/tr.lng
@@ -181,4 +181,8 @@ $wb['datalog_status_d_client'] = 'Delete client';
 $wb['datalog_status_i_domain'] = 'Create new domain';
 $wb['datalog_status_u_domain'] = 'Update domain';
 $wb['datalog_status_d_domain'] = 'Delete domain';
+$wb['datalog_status_d_web_backup'] = 'Delete website backup';
+$wb['datalog_status_i_dns_template'] = 'Create DNS template';
+$wb['datalog_status_u_dns_template'] = 'Update DNS template';
+$wb['datalog_status_d_dns_template'] = 'Delete DNS template';
 ?>
diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php
index fd7f49006b41d77a04af523a510e905c624bf47b..1b7be1b803b3e808ece61a7aa5983932675c70b6 100644
--- a/interface/web/admin/form/system_config.tform.php
+++ b/interface/web/admin/form/system_config.tform.php
@@ -493,6 +493,18 @@ $form["tabs"]['dns'] = array (
 			'value'  => '',
 			'name'  => 'default_slave_dnsserver'
 		),
+		'dns_external_slave_fqdn' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'filters'   => array(
+					0 => array( 'event' => 'SAVE',
+					'type' => 'STRIPTAGS'),
+					1 => array( 'event' => 'SAVE',
+					'type' => 'STRIPNL')
+			),
+			'default' => '',
+			'value'  => ''
+		),
 		'dns_show_zoneexport' => array (
 			'datatype' => 'VARCHAR',
 			'formtype' => 'CHECKBOX',
diff --git a/interface/web/admin/lib/lang/ar_system_config.lng b/interface/web/admin/lib/lang/ar_system_config.lng
index 263dffaf78c29218fa56604e3a7d9979bc27ca99..4eb3d443d82de3c2d8cf8a2cacbdb6bdb84d8e2f 100644
--- a/interface/web/admin/lib/lang/ar_system_config.lng
+++ b/interface/web/admin/lib/lang/ar_system_config.lng
@@ -108,5 +108,6 @@ $wb['show_aps_menu_note_url_txt'] = 'Click here for more information.';
 $wb['dns_show_zoneexport_txt'] = 'Show zone export.';
 $wb['le_caa_autocreate_options_txt'] = 'Enable automatic creation of CAA record on issuing LE';
 $wb['show_delete_on_forms_txt'] = 'Show delete button on edit forms';
+$wb['dns_external_slave_server_txt'] = 'External DNS servers (comma separated)';
 $wb['mailbox_show_last_access_txt'] = 'Show last access time for mail accounts';
 ?>
diff --git a/interface/web/admin/lib/lang/bg_system_config.lng b/interface/web/admin/lib/lang/bg_system_config.lng
index ac325ed0df8e0596dc5bc9130168c67e12e03c9a..e7c95b8ce2ea05364814f80070916b789af1b2d8 100644
--- a/interface/web/admin/lib/lang/bg_system_config.lng
+++ b/interface/web/admin/lib/lang/bg_system_config.lng
@@ -108,5 +108,6 @@ $wb['show_aps_menu_note_url_txt'] = 'Click here for more information.';
 $wb['dns_show_zoneexport_txt'] = 'Show zone export.';
 $wb['le_caa_autocreate_options_txt'] = 'Enable automatic creation of CAA record on issuing LE';
 $wb['show_delete_on_forms_txt'] = 'Show delete button on edit forms';
+$wb['dns_external_slave_server_txt'] = 'External DNS servers (comma separated)';
 $wb['mailbox_show_last_access_txt'] = 'Show last access time for mail accounts';
 ?>
diff --git a/interface/web/admin/lib/lang/br_system_config.lng b/interface/web/admin/lib/lang/br_system_config.lng
index cb45b12a0cfbc8ef8727318b424b166e419ff659..c6bf1f4221ce414f218a4ed5ebc8fd6d971252e8 100644
--- a/interface/web/admin/lib/lang/br_system_config.lng
+++ b/interface/web/admin/lib/lang/br_system_config.lng
@@ -109,4 +109,5 @@ $wb['monitor_key_txt'] = 'Senha do Monitor';
 $wb['dns_show_zoneexport_txt'] = 'Show zone export.';
 $wb['le_caa_autocreate_options_txt'] = 'Enable automatic creation of CAA record on issuing LE';
 $wb['show_delete_on_forms_txt'] = 'Show delete button on edit forms';
+$wb['dns_external_slave_server_txt'] = 'External DNS servers (comma separated)';
 $wb['mailbox_show_last_access_txt'] = 'Show last access time for mail accounts';
diff --git a/interface/web/admin/lib/lang/ca_system_config.lng b/interface/web/admin/lib/lang/ca_system_config.lng
index db1fd2bf3ed9b9ff859de979f91e9614e89f423a..89ea62be2e3d06368db885fb2ce800ab6696c1c3 100644
--- a/interface/web/admin/lib/lang/ca_system_config.lng
+++ b/interface/web/admin/lib/lang/ca_system_config.lng
@@ -108,5 +108,6 @@ $wb['show_aps_menu_note_url_txt'] = 'Click here for more information.';
 $wb['dns_show_zoneexport_txt'] = 'Show zone export.';
 $wb['le_caa_autocreate_options_txt'] = 'Enable automatic creation of CAA record on issuing LE';
 $wb['show_delete_on_forms_txt'] = 'Show delete button on edit forms';
+$wb['dns_external_slave_server_txt'] = 'External DNS servers (comma separated)';
 $wb['mailbox_show_last_access_txt'] = 'Show last access time for mail accounts';
 ?>
diff --git a/interface/web/admin/lib/lang/cn_system_config.lng b/interface/web/admin/lib/lang/cn_system_config.lng
index 1cc90bbcb61722489414b519836f11bca36e71f7..eedf1f1029a19895dd51dba3c5b4284a9046e408 100644
--- a/interface/web/admin/lib/lang/cn_system_config.lng
+++ b/interface/web/admin/lib/lang/cn_system_config.lng
@@ -107,5 +107,6 @@ $wb['show_aps_menu_note_txt'] = 'APS 将在不久的将来从面板中移除。'
 $wb['show_aps_menu_note_url_txt'] = '点击这里了解更多信息。';
 $wb['dns_show_zoneexport_txt'] = '显示区域导出。';
 $wb['le_caa_autocreate_options_txt'] = '在颁发 LE 时启用 CAA 记录的自动创建';
+$wb['dns_external_slave_server_txt'] = 'External DNS servers (comma separated)';
 $wb['mailbox_show_last_access_txt'] = 'Show last access time for mail accounts';
 ?>
diff --git a/interface/web/admin/lib/lang/cz_system_config.lng b/interface/web/admin/lib/lang/cz_system_config.lng
index c9e38544d6fd21c3db4095fca3c368cdd737e812..6e6729d79d6a501b02b9c1e6cf4b3761af2668ff 100644
--- a/interface/web/admin/lib/lang/cz_system_config.lng
+++ b/interface/web/admin/lib/lang/cz_system_config.lng
@@ -109,4 +109,5 @@ $wb['monitor_key_txt'] = 'Monitor keyword';
 $wb['dns_show_zoneexport_txt'] = 'Show zone export.';
 $wb['le_caa_autocreate_options_txt'] = 'Enable automatic creation of CAA record on issuing LE';
 $wb['show_delete_on_forms_txt'] = 'Show delete button on edit forms';
+$wb['dns_external_slave_server_txt'] = 'External DNS servers (comma separated)';
 $wb['mailbox_show_last_access_txt'] = 'Show last access time for mail accounts';
diff --git a/interface/web/admin/lib/lang/de_system_config.lng b/interface/web/admin/lib/lang/de_system_config.lng
index be813f37e938e8baafb5a92363529d6c51051dbf..cbd2cc8eea6cf6a6ab3303d8baeae3288402a968 100644
--- a/interface/web/admin/lib/lang/de_system_config.lng
+++ b/interface/web/admin/lib/lang/de_system_config.lng
@@ -108,5 +108,6 @@ $wb['show_aps_menu_note_url_txt'] = 'Click here for more information.';
 $wb['dns_show_zoneexport_txt'] = 'Show zone export.';
 $wb['le_caa_autocreate_options_txt'] = 'Automatische Erstellung des CAA-Records bei LE Ausstellung aktivieren';
 $wb['show_delete_on_forms_txt'] = 'Show delete button on edit forms';
+$wb['dns_external_slave_server_txt'] = 'External DNS servers (comma separated)';
 $wb['mailbox_show_last_access_txt'] = 'Show last access time for mail accounts';
 ?>
diff --git a/interface/web/admin/lib/lang/dk_system_config.lng b/interface/web/admin/lib/lang/dk_system_config.lng
index 8bab928479867abc3ae1a99c5f4307f3b8956e51..8fb1c66db78229ac206b09559710059fca6e1733 100644
--- a/interface/web/admin/lib/lang/dk_system_config.lng
+++ b/interface/web/admin/lib/lang/dk_system_config.lng
@@ -108,5 +108,6 @@ $wb['show_aps_menu_note_url_txt'] = 'Click here for more information.';
 $wb['dns_show_zoneexport_txt'] = 'Show zone export.';
 $wb['le_caa_autocreate_options_txt'] = 'Enable automatic creation of CAA record on issuing LE';
 $wb['show_delete_on_forms_txt'] = 'Show delete button on edit forms';
+$wb['dns_external_slave_server_txt'] = 'External DNS servers (comma separated)';
 $wb['mailbox_show_last_access_txt'] = 'Show last access time for mail accounts';
 ?>
diff --git a/interface/web/admin/lib/lang/el_system_config.lng b/interface/web/admin/lib/lang/el_system_config.lng
index 60466af811692db69dbb7e1017d947dc6bc3f7cc..5b93637c191a3f8a1225b2f3c07b5618667e2817 100644
--- a/interface/web/admin/lib/lang/el_system_config.lng
+++ b/interface/web/admin/lib/lang/el_system_config.lng
@@ -108,5 +108,9 @@ $wb['show_aps_menu_note_url_txt'] = 'Click here for more information.';
 $wb['dns_show_zoneexport_txt'] = 'Show zone export.';
 $wb['le_caa_autocreate_options_txt'] = 'Enable automatic creation of CAA record on issuing LE';
 $wb['show_delete_on_forms_txt'] = 'Show delete button on edit forms';
+<<<<<<< HEAD
 $wb['mailbox_show_last_access_txt'] = 'Show last access time for mail accounts';
+=======
+$wb['dns_external_slave_server_txt'] = 'External DNS servers (comma separated)';
+>>>>>>> origin/develop
 ?>
diff --git a/interface/web/admin/lib/lang/en_system_config.lng b/interface/web/admin/lib/lang/en_system_config.lng
index 72876c505af1923ee36bd1611e9c5b4b37790d22..6e0907c432f40281ccd5165fcd1ccc5fb578fce5 100644
--- a/interface/web/admin/lib/lang/en_system_config.lng
+++ b/interface/web/admin/lib/lang/en_system_config.lng
@@ -109,5 +109,6 @@ $wb['show_aps_menu_note_url_txt'] = 'Click here for more information.';
 $wb['dns_show_zoneexport_txt'] = 'Show zone export.';
 $wb['le_caa_autocreate_options_txt'] = 'Enable automatic creation of CAA record on issuing LE';
 $wb['show_delete_on_forms_txt'] = 'Show delete button on edit forms';
+$wb['dns_external_slave_server_txt'] = 'External DNS servers (comma separated)';
 $wb['mailbox_show_last_access_txt'] = 'Show last access time for mail accounts';
 ?>
diff --git a/interface/web/admin/lib/lang/es_system_config.lng b/interface/web/admin/lib/lang/es_system_config.lng
index 18f44ff3d11edfb928c884d8401384d0b678a49c..331a18a7b74cc13022581fcfd4e3a7398fd76594 100644
--- a/interface/web/admin/lib/lang/es_system_config.lng
+++ b/interface/web/admin/lib/lang/es_system_config.lng
@@ -108,5 +108,6 @@ $wb['show_aps_menu_note_url_txt'] = 'Click here for more information.';
 $wb['dns_show_zoneexport_txt'] = 'Show zone export.';
 $wb['le_caa_autocreate_options_txt'] = 'Enable automatic creation of CAA record on issuing LE';
 $wb['show_delete_on_forms_txt'] = 'Show delete button on edit forms';
+$wb['dns_external_slave_server_txt'] = 'External DNS servers (comma separated)';
 $wb['mailbox_show_last_access_txt'] = 'Show last access time for mail accounts';
 ?>
diff --git a/interface/web/admin/lib/lang/fi_system_config.lng b/interface/web/admin/lib/lang/fi_system_config.lng
index e6da55a02595cf57ac2a66d0ced8ff5ee607e2fa..2b2569cb989143a5f0fbff778a39b6de10a8a9f6 100644
--- a/interface/web/admin/lib/lang/fi_system_config.lng
+++ b/interface/web/admin/lib/lang/fi_system_config.lng
@@ -108,5 +108,6 @@ $wb['show_aps_menu_note_url_txt'] = 'Click here for more information.';
 $wb['dns_show_zoneexport_txt'] = 'Show zone export.';
 $wb['le_caa_autocreate_options_txt'] = 'Enable automatic creation of CAA record on issuing LE';
 $wb['show_delete_on_forms_txt'] = 'Show delete button on edit forms';
+$wb['dns_external_slave_server_txt'] = 'External DNS servers (comma separated)';
 $wb['mailbox_show_last_access_txt'] = 'Show last access time for mail accounts';
 ?>
diff --git a/interface/web/admin/lib/lang/fr_system_config.lng b/interface/web/admin/lib/lang/fr_system_config.lng
index e58466d44945decde053815efb42b54af99a8878..172442cea2453949e62eb08a1e351a46cccff596 100644
--- a/interface/web/admin/lib/lang/fr_system_config.lng
+++ b/interface/web/admin/lib/lang/fr_system_config.lng
@@ -108,5 +108,6 @@ $wb['show_aps_menu_note_url_txt'] = 'Click here for more information.';
 $wb['dns_show_zoneexport_txt'] = 'Show zone export.';
 $wb['le_caa_autocreate_options_txt'] = 'Enable automatic creation of CAA record on issuing LE';
 $wb['show_delete_on_forms_txt'] = 'Show delete button on edit forms';
+$wb['dns_external_slave_server_txt'] = 'External DNS servers (comma separated)';
 $wb['mailbox_show_last_access_txt'] = 'Show last access time for mail accounts';
 ?>
diff --git a/interface/web/admin/lib/lang/hr_system_config.lng b/interface/web/admin/lib/lang/hr_system_config.lng
index 632a9870380b2dfd43e010e7d628743d5ad0a95e..a167f4e4a30c9b5f28ef48cb626e6556204935ac 100644
--- a/interface/web/admin/lib/lang/hr_system_config.lng
+++ b/interface/web/admin/lib/lang/hr_system_config.lng
@@ -108,5 +108,6 @@ $wb['show_aps_menu_note_url_txt'] = 'Click here for more information.';
 $wb['dns_show_zoneexport_txt'] = 'Show zone export.';
 $wb['le_caa_autocreate_options_txt'] = 'Enable automatic creation of CAA record on issuing LE';
 $wb['show_delete_on_forms_txt'] = 'Show delete button on edit forms';
+$wb['dns_external_slave_server_txt'] = 'External DNS servers (comma separated)';
 $wb['mailbox_show_last_access_txt'] = 'Show last access time for mail accounts';
 ?>
diff --git a/interface/web/admin/lib/lang/hu_system_config.lng b/interface/web/admin/lib/lang/hu_system_config.lng
index ab2b097d5d8e949b540979406d1bc24009066bc1..4a8c266677795096ff5e37650fb71ff34cd2d466 100644
--- a/interface/web/admin/lib/lang/hu_system_config.lng
+++ b/interface/web/admin/lib/lang/hu_system_config.lng
@@ -108,5 +108,6 @@ $wb['show_aps_menu_note_url_txt'] = 'Click here for more information.';
 $wb['dns_show_zoneexport_txt'] = 'Show zone export.';
 $wb['le_caa_autocreate_options_txt'] = 'Enable automatic creation of CAA record on issuing LE';
 $wb['show_delete_on_forms_txt'] = 'Show delete button on edit forms';
+$wb['dns_external_slave_server_txt'] = 'External DNS servers (comma separated)';
 $wb['mailbox_show_last_access_txt'] = 'Show last access time for mail accounts';
 ?>
diff --git a/interface/web/admin/lib/lang/id_system_config.lng b/interface/web/admin/lib/lang/id_system_config.lng
index ca5e7e3c35e26771cbbe0b778a6a0abacf16b193..e37cd5b9670fbfc65034fb78d66f9d198ccb5875 100644
--- a/interface/web/admin/lib/lang/id_system_config.lng
+++ b/interface/web/admin/lib/lang/id_system_config.lng
@@ -108,5 +108,6 @@ $wb['show_aps_menu_note_url_txt'] = 'Click here for more information.';
 $wb['dns_show_zoneexport_txt'] = 'Show zone export.';
 $wb['le_caa_autocreate_options_txt'] = 'Enable automatic creation of CAA record on issuing LE';
 $wb['show_delete_on_forms_txt'] = 'Show delete button on edit forms';
+$wb['dns_external_slave_server_txt'] = 'External DNS servers (comma separated)';
 $wb['mailbox_show_last_access_txt'] = 'Show last access time for mail accounts';
 ?>
diff --git a/interface/web/admin/lib/lang/it_system_config.lng b/interface/web/admin/lib/lang/it_system_config.lng
index 359acd9107035ba94551cf18561e7c6d8823d4d9..adfeada35724cc1ba26eec25bbc4c5f71dca3218 100644
--- a/interface/web/admin/lib/lang/it_system_config.lng
+++ b/interface/web/admin/lib/lang/it_system_config.lng
@@ -108,5 +108,6 @@ $wb['show_aps_menu_note_url_txt'] = 'Clicca qui per maggiori informazioni.';
 $wb['dns_show_zoneexport_txt'] = 'Show zone export.';
 $wb['le_caa_autocreate_options_txt'] = 'Enable automatic creation of CAA record on issuing LE';
 $wb['show_delete_on_forms_txt'] = 'Show delete button on edit forms';
+$wb['dns_external_slave_server_txt'] = 'External DNS servers (comma separated)';
 $wb['mailbox_show_last_access_txt'] = 'Show last access time for mail accounts';
 ?>
diff --git a/interface/web/admin/lib/lang/ja_system_config.lng b/interface/web/admin/lib/lang/ja_system_config.lng
index a55ac965227417a4dda0f3b6bae35a07c7e0c7e6..eeb2b1078fe351d6adba075f63e1eeb6eada3f05 100644
--- a/interface/web/admin/lib/lang/ja_system_config.lng
+++ b/interface/web/admin/lib/lang/ja_system_config.lng
@@ -108,5 +108,6 @@ $wb['show_aps_menu_note_url_txt'] = 'Click here for more information.';
 $wb['dns_show_zoneexport_txt'] = 'Show zone export.';
 $wb['le_caa_autocreate_options_txt'] = 'Enable automatic creation of CAA record on issuing LE';
 $wb['show_delete_on_forms_txt'] = 'Show delete button on edit forms';
+$wb['dns_external_slave_server_txt'] = 'External DNS servers (comma separated)';
 $wb['mailbox_show_last_access_txt'] = 'Show last access time for mail accounts';
 ?>
diff --git a/interface/web/admin/lib/lang/nl_system_config.lng b/interface/web/admin/lib/lang/nl_system_config.lng
index 1fcd9db0ec6ce945114f66ccca18474884b4f2ec..d6d57639aa0465e48c30e37a471297da97103940 100644
--- a/interface/web/admin/lib/lang/nl_system_config.lng
+++ b/interface/web/admin/lib/lang/nl_system_config.lng
@@ -108,5 +108,6 @@ $wb['show_aps_menu_note_url_txt'] = 'Click here for more information.';
 $wb['dns_show_zoneexport_txt'] = 'Show zone export.';
 $wb['le_caa_autocreate_options_txt'] = 'Enable automatic creation of CAA record on issuing LE';
 $wb['show_delete_on_forms_txt'] = 'Show delete button on edit forms';
+$wb['dns_external_slave_server_txt'] = 'External DNS servers (comma separated)';
 $wb['mailbox_show_last_access_txt'] = 'Show last access time for mail accounts';
 ?>
diff --git a/interface/web/admin/lib/lang/pl_system_config.lng b/interface/web/admin/lib/lang/pl_system_config.lng
index d52177150e3c2a6863bea60777cc15a250e6bb0b..0218e86eaf5a4cead426f4ad4b56885a81b74180 100644
--- a/interface/web/admin/lib/lang/pl_system_config.lng
+++ b/interface/web/admin/lib/lang/pl_system_config.lng
@@ -108,5 +108,6 @@ $wb['show_aps_menu_note_url_txt'] = 'Click here for more information.';
 $wb['dns_show_zoneexport_txt'] = 'Show zone export.';
 $wb['le_caa_autocreate_options_txt'] = 'Enable automatic creation of CAA record on issuing LE';
 $wb['show_delete_on_forms_txt'] = 'Show delete button on edit forms';
+$wb['dns_external_slave_server_txt'] = 'External DNS servers (comma separated)';
 $wb['mailbox_show_last_access_txt'] = 'Show last access time for mail accounts';
 ?>
diff --git a/interface/web/admin/lib/lang/pt_system_config.lng b/interface/web/admin/lib/lang/pt_system_config.lng
index bf3691b61857fa99240901bb944824ccfdab4c39..320d45a8a274cdc22da9d93a4fa7638d91ecd412 100644
--- a/interface/web/admin/lib/lang/pt_system_config.lng
+++ b/interface/web/admin/lib/lang/pt_system_config.lng
@@ -108,5 +108,6 @@ $wb['show_aps_menu_note_url_txt'] = 'Click here for more information.';
 $wb['dns_show_zoneexport_txt'] = 'Show zone export.';
 $wb['le_caa_autocreate_options_txt'] = 'Enable automatic creation of CAA record on issuing LE';
 $wb['show_delete_on_forms_txt'] = 'Show delete button on edit forms';
+$wb['dns_external_slave_server_txt'] = 'External DNS servers (comma separated)';
 $wb['mailbox_show_last_access_txt'] = 'Show last access time for mail accounts';
 ?>
diff --git a/interface/web/admin/lib/lang/ro_system_config.lng b/interface/web/admin/lib/lang/ro_system_config.lng
index 59010122e279d4f82d007379814d815bcc6d7670..d9bfa02c68c9ae12dcf13f1b8cee50059bd53064 100644
--- a/interface/web/admin/lib/lang/ro_system_config.lng
+++ b/interface/web/admin/lib/lang/ro_system_config.lng
@@ -108,5 +108,6 @@ $wb['show_aps_menu_note_url_txt'] = 'Click here for more information.';
 $wb['dns_show_zoneexport_txt'] = 'Show zone export.';
 $wb['le_caa_autocreate_options_txt'] = 'Enable automatic creation of CAA record on issuing LE';
 $wb['show_delete_on_forms_txt'] = 'Show delete button on edit forms';
+$wb['dns_external_slave_server_txt'] = 'External DNS servers (comma separated)';
 $wb['mailbox_show_last_access_txt'] = 'Show last access time for mail accounts';
 ?>
diff --git a/interface/web/admin/lib/lang/ru_system_config.lng b/interface/web/admin/lib/lang/ru_system_config.lng
index 89917c95edbb04098d14790d05e9fd6c4661ca3f..3000aa17359b6ce87f35fa8bd04a3de5c80d13aa 100644
--- a/interface/web/admin/lib/lang/ru_system_config.lng
+++ b/interface/web/admin/lib/lang/ru_system_config.lng
@@ -108,5 +108,6 @@ $wb['show_aps_menu_note_url_txt'] = 'Click here for more information.';
 $wb['dns_show_zoneexport_txt'] = 'Show zone export.';
 $wb['le_caa_autocreate_options_txt'] = 'Enable automatic creation of CAA record on issuing LE';
 $wb['show_delete_on_forms_txt'] = 'Show delete button on edit forms';
+$wb['dns_external_slave_server_txt'] = 'External DNS servers (comma separated)';
 $wb['mailbox_show_last_access_txt'] = 'Show last access time for mail accounts';
 ?>
diff --git a/interface/web/admin/lib/lang/se_system_config.lng b/interface/web/admin/lib/lang/se_system_config.lng
index 11bae20933245ab9027076db616d9592ee1252b0..f61f92247756f74ffa46c6726e37311638a6a16d 100644
--- a/interface/web/admin/lib/lang/se_system_config.lng
+++ b/interface/web/admin/lib/lang/se_system_config.lng
@@ -108,5 +108,6 @@ $wb['show_aps_menu_note_url_txt'] = 'Click here for more information.';
 $wb['dns_show_zoneexport_txt'] = 'Show zone export.';
 $wb['le_caa_autocreate_options_txt'] = 'Enable automatic creation of CAA record on issuing LE';
 $wb['show_delete_on_forms_txt'] = 'Show delete button on edit forms';
+$wb['dns_external_slave_server_txt'] = 'External DNS servers (comma separated)';
 $wb['mailbox_show_last_access_txt'] = 'Show last access time for mail accounts';
 ?>
diff --git a/interface/web/admin/lib/lang/sk_system_config.lng b/interface/web/admin/lib/lang/sk_system_config.lng
index a965f9b83f4476089da0cb180ca6eb753c8c09f5..8603147c96d066d4e244ef93a6f197d56b20f686 100644
--- a/interface/web/admin/lib/lang/sk_system_config.lng
+++ b/interface/web/admin/lib/lang/sk_system_config.lng
@@ -108,5 +108,6 @@ $wb['show_aps_menu_note_url_txt'] = 'Click here for more information.';
 $wb['dns_show_zoneexport_txt'] = 'Show zone export.';
 $wb['le_caa_autocreate_options_txt'] = 'Enable automatic creation of CAA record on issuing LE';
 $wb['show_delete_on_forms_txt'] = 'Show delete button on edit forms';
+$wb['dns_external_slave_server_txt'] = 'External DNS servers (comma separated)';
 $wb['mailbox_show_last_access_txt'] = 'Show last access time for mail accounts';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_system_config.lng b/interface/web/admin/lib/lang/tr_system_config.lng
index 40d6108c72b468d04ca47c968f03eddc04544af2..98f02216898c8c943f2ad91daab7250d8528e625 100644
--- a/interface/web/admin/lib/lang/tr_system_config.lng
+++ b/interface/web/admin/lib/lang/tr_system_config.lng
@@ -108,5 +108,6 @@ $wb['show_aps_menu_note_url_txt'] = 'Click here for more information.';
 $wb['dns_show_zoneexport_txt'] = 'Show zone export.';
 $wb['le_caa_autocreate_options_txt'] = 'Enable automatic creation of CAA record on issuing LE';
 $wb['show_delete_on_forms_txt'] = 'Show delete button on edit forms';
+$wb['dns_external_slave_server_txt'] = 'External DNS servers (comma separated)';
 $wb['mailbox_show_last_access_txt'] = 'Show last access time for mail accounts';
 ?>
diff --git a/interface/web/admin/templates/server_list.htm b/interface/web/admin/templates/server_list.htm
index 313fad7ff113b055b2cb6b2ab649fa040d43195e..ca2600b491c81a05fe8caf8c405f826459a24c11 100644
--- a/interface/web/admin/templates/server_list.htm
+++ b/interface/web/admin/templates/server_list.htm
@@ -51,16 +51,16 @@
                     </tmpl_loop>
                     <tmpl_unless name="records">
                         <tr class="tbl_row_noresults tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
-                            <td colspan="7">{tmpl_var name='globalsearch_noresults_text_txt'}</td>
+                            <td colspan="9">{tmpl_var name='globalsearch_noresults_text_txt'}</td>
                         </tr>
                     </tmpl_unless>
                 </tbody>
                 <tfoot>
                     <tr>
-                        <td colspan="7"><tmpl_var name="paging"></td>
+                        <td colspan="9"><tmpl_var name="paging"></td>
                     </tr>
                 </tfoot>
             </table>
 </div>
-        
-    </div>
\ No newline at end of file
+
+    </div>
diff --git a/interface/web/admin/templates/server_php_list.htm b/interface/web/admin/templates/server_php_list.htm
index 5f6fae91dbba86f7ae32581f55b55a6afc98a0be..2f9a3f922ea928d93e6ce02111fa0de060fc23c4 100644
--- a/interface/web/admin/templates/server_php_list.htm
+++ b/interface/web/admin/templates/server_php_list.htm
@@ -4,12 +4,12 @@
 
 
         <p class="fieldset-legend">{tmpl_var name="toolsarea_head_txt"}</p>
-            
+
                 <button class="btn btn-default formbutton-success" type="button" data-load-content="admin/server_php_edit.php">{tmpl_var name="add_new_record_txt"}</button>
-            
-        
 
-    
+
+
+
         <p class="fieldset-legend"><tmpl_var name="list_head_txt"></p>
             <div class="table-wrapper marginTop15">
 <table class="table">
@@ -50,16 +50,16 @@
                     </tmpl_loop>
                     <tmpl_unless name="records">
                         <tr class="tbl_row_noresults tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
-                            <td colspan="6">{tmpl_var name='globalsearch_noresults_text_txt'}</td>
+                            <td colspan="7">{tmpl_var name='globalsearch_noresults_text_txt'}</td>
                         </tr>
                     </tmpl_unless>
                 </tbody>
                 <tfoot>
                     <tr>
-                        <td colspan="6"><tmpl_var name="paging"></td>
+                        <td colspan="7"><tmpl_var name="paging"></td>
                     </tr>
                 </tfoot>
             </table>
 </div>
-        
-    
+
+
diff --git a/interface/web/admin/templates/system_config_dns_edit.htm b/interface/web/admin/templates/system_config_dns_edit.htm
index 9636b4a26114d517adcf7c50a127401961b54fa8..0395c5b17d9da944d328bee0c48944f4272e4d7d 100644
--- a/interface/web/admin/templates/system_config_dns_edit.htm
+++ b/interface/web/admin/templates/system_config_dns_edit.htm
@@ -12,6 +12,13 @@
 	</select></div>
 </div>
 
+<div class="form-group">
+  <label class="col-sm-3 control-label">{tmpl_var name=dns_external_slave_server_txt'}</label>
+  <div class="col-sm-9">
+	<input type="text" name="dns_external_slave_fqdn" id="dns_external_slave_fqdn" value="{tmpl_var name='dns_external_slave_fqdn'}" size="" maxlength="" class="form-control" />
+  </div>
+</div>
+
 <div class="form-group">
   <label class="col-sm-3 control-label">{tmpl_var name=dns_show_zoneexport_txt'}</label>
   <div class="col-sm-9">
diff --git a/interface/web/client/domain_edit.php b/interface/web/client/domain_edit.php
index af7b900b9109a475b20b238c4060f4d5135c635f..78b7d53de7195557024c15ea9401519823ef8b7c 100644
--- a/interface/web/client/domain_edit.php
+++ b/interface/web/client/domain_edit.php
@@ -130,6 +130,13 @@ class page_action extends tform_actions {
 
 		$app->tpl->setVar($wb);
 
+		$csrf_token = $app->auth->csrf_token_get('_domain_del');
+		$app->tpl->setVar('_csrf_id', $csrf_token['csrf_id']);
+		$app->tpl->setVar('_csrf_key', $csrf_token['csrf_key']);
+
+		$global_config = $app->getconf->get_global_config();
+		$app->tpl->setVar('show_delete_on_forms', $global_config['misc']['show_delete_on_forms']);
+
 		parent::onShowEnd();
 	}
 
diff --git a/interface/web/client/form/domain.tform.php b/interface/web/client/form/domain.tform.php
index c96af934d7ad993fec2dca7395482679adf0e89c..0e8d3ffa1c723c5605461202d82d6f417664d48e 100644
--- a/interface/web/client/form/domain.tform.php
+++ b/interface/web/client/form/domain.tform.php
@@ -107,7 +107,8 @@ $form["tabs"]['domain'] = array (
 			'default' => '',
 			'value'  => '',
 			'width'  => '30',
-			'maxlength' => '255'
+			'maxlength' => '255',
+			'searchable' => 1,
 		),
 		//#################################
 		// END Datatable fields
diff --git a/interface/web/client/lib/lang/ar_domain.lng b/interface/web/client/lib/lang/ar_domain.lng
index a66a2258af7043759fcaec32ead09d70273191b6..50dc79323ac0fffbe9bb30060336874a089a163c 100644
--- a/interface/web/client/lib/lang/ar_domain.lng
+++ b/interface/web/client/lib/lang/ar_domain.lng
@@ -3,4 +3,5 @@ $wb['domain_error_empty'] = 'The domain-name is empty';
 $wb['domain_error_unique'] = 'The domain already exists';
 $wb['domain_error_regex'] = 'This domain-name is not allowed';
 $wb['Domain'] = 'Domain';
+$wb['domain_txt'] = 'Domain';
 ?>
diff --git a/interface/web/client/lib/lang/bg_domain.lng b/interface/web/client/lib/lang/bg_domain.lng
index c60ae5604598940dc6796aab8dc145f7311b7203..fdffdcd26a6dbb5ee0b9a3515414c7dcaf3043ee 100644
--- a/interface/web/client/lib/lang/bg_domain.lng
+++ b/interface/web/client/lib/lang/bg_domain.lng
@@ -3,4 +3,5 @@ $wb['domain_error_empty'] = 'Името на домейна е празно';
 $wb['domain_error_unique'] = 'Домейна съществува';
 $wb['domain_error_regex'] = 'Това име на домейн не е разрешен.';
 $wb['Domain'] = 'Домейн';
+$wb['domain_txt'] = 'Domain';
 ?>
diff --git a/interface/web/client/lib/lang/br_domain.lng b/interface/web/client/lib/lang/br_domain.lng
index 0ebd82d63c921bed761c65e4a9cb986a4cd937a5..cafdc79358b9ba686fd76aaa33af9ce56f18647b 100644
--- a/interface/web/client/lib/lang/br_domain.lng
+++ b/interface/web/client/lib/lang/br_domain.lng
@@ -3,3 +3,4 @@ $wb['domain_error_empty'] = 'O domínio está vazio.';
 $wb['domain_error_unique'] = 'O domínio já existe.';
 $wb['domain_error_regex'] = 'O nome do domínio não é permitido.';
 $wb['Domain'] = 'Domínio';
+$wb['domain_txt'] = 'Domain';
diff --git a/interface/web/client/lib/lang/ca_domain.lng b/interface/web/client/lib/lang/ca_domain.lng
index f94d21bbe558503f263788386fdfda37aeea4fbf..7ca7e894a1d29597a07eefe2c1b3cf39fb50fb47 100644
--- a/interface/web/client/lib/lang/ca_domain.lng
+++ b/interface/web/client/lib/lang/ca_domain.lng
@@ -3,4 +3,5 @@ $wb['domain_error_empty'] = 'Le nom de domaine est vide';
 $wb['domain_error_unique'] = 'Ce nom de domaine existe déjà';
 $wb['domain_error_regex'] = 'Ce nom de domaine n\'est pas autorisé';
 $wb['Domain'] = 'Domaine';
+$wb['domain_txt'] = 'Domain';
 ?>
diff --git a/interface/web/client/lib/lang/cn_domain.lng b/interface/web/client/lib/lang/cn_domain.lng
index dbdac298a6f36222028bbee56dd7db9232108592..022feb4ba4650e1580218cc7fc032fd49f9b5f10 100644
--- a/interface/web/client/lib/lang/cn_domain.lng
+++ b/interface/web/client/lib/lang/cn_domain.lng
@@ -3,4 +3,5 @@ $wb['domain_error_empty'] = '域名为空';
 $wb['domain_error_unique'] = '域名已存在';
 $wb['domain_error_regex'] = '该域名不被允许';
 $wb['Domain'] = '域名';
+$wb['domain_txt'] = 'Domain';
 ?>
diff --git a/interface/web/client/lib/lang/cz_domain.lng b/interface/web/client/lib/lang/cz_domain.lng
index 33d634d8e34fc2dc4bafac47154329b6cc594c73..c40ae34ce2f5e615ed80360ce9453dd9c5e4571d 100644
--- a/interface/web/client/lib/lang/cz_domain.lng
+++ b/interface/web/client/lib/lang/cz_domain.lng
@@ -3,3 +3,4 @@ $wb['domain_error_empty'] = 'Doménové jméno je prázdné';
 $wb['domain_error_unique'] = 'Doména již existuje';
 $wb['domain_error_regex'] = 'Toto doménové jméno je zakázáno';
 $wb['Domain'] = 'Doména';
+$wb['domain_txt'] = 'Domain';
diff --git a/interface/web/client/lib/lang/de_domain.lng b/interface/web/client/lib/lang/de_domain.lng
index eb4276a3f8a9b8f4c54b6e97d5075010bd9167f4..3b0ab87a4bd867edc96584dc57143ad49aeefc62 100644
--- a/interface/web/client/lib/lang/de_domain.lng
+++ b/interface/web/client/lib/lang/de_domain.lng
@@ -3,4 +3,5 @@ $wb['domain_error_empty'] = 'Der Domain Name darf nicht leer sein';
 $wb['domain_error_unique'] = 'Die Domain existiert bereits';
 $wb['domain_error_regex'] = 'Dieser Domain Name ist nicht gültig';
 $wb['Domain'] = 'Domain';
+$wb['domain_txt'] = 'Domain';
 ?>
diff --git a/interface/web/client/lib/lang/dk_domain.lng b/interface/web/client/lib/lang/dk_domain.lng
index cd9c60de58adf3022d5fde870f59a8b06457fae6..240c9e9f29a9513e58a83f1f8696c143a1e07d78 100644
--- a/interface/web/client/lib/lang/dk_domain.lng
+++ b/interface/web/client/lib/lang/dk_domain.lng
@@ -3,4 +3,5 @@ $wb['domain_error_empty'] = 'Domæne-navn er tomt';
 $wb['domain_error_unique'] = 'Domænet findes allerede';
 $wb['domain_error_regex'] = 'Dette domæne-navn er ikke tilladt';
 $wb['Domain'] = 'Domæne';
+$wb['domain_txt'] = 'Domain';
 ?>
diff --git a/interface/web/client/lib/lang/el_domain.lng b/interface/web/client/lib/lang/el_domain.lng
index 696d10da42b75b164259a43d2cedbfc0df32f90c..624c72cd1d0c5791e987a65ec3ae6dfec3f8d7d5 100644
--- a/interface/web/client/lib/lang/el_domain.lng
+++ b/interface/web/client/lib/lang/el_domain.lng
@@ -3,4 +3,5 @@ $wb['domain_error_empty'] = 'Το όνομα domain δεν έχει οριστε
 $wb['domain_error_unique'] = 'Το όνομα domain υπάρχει';
 $wb['domain_error_regex'] = 'Το όνομα domain δεν επιτρέπεται';
 $wb['Domain'] = 'Domain';
+$wb['domain_txt'] = 'Domain';
 ?>
diff --git a/interface/web/client/lib/lang/en_domain.lng b/interface/web/client/lib/lang/en_domain.lng
index a66a2258af7043759fcaec32ead09d70273191b6..50dc79323ac0fffbe9bb30060336874a089a163c 100644
--- a/interface/web/client/lib/lang/en_domain.lng
+++ b/interface/web/client/lib/lang/en_domain.lng
@@ -3,4 +3,5 @@ $wb['domain_error_empty'] = 'The domain-name is empty';
 $wb['domain_error_unique'] = 'The domain already exists';
 $wb['domain_error_regex'] = 'This domain-name is not allowed';
 $wb['Domain'] = 'Domain';
+$wb['domain_txt'] = 'Domain';
 ?>
diff --git a/interface/web/client/lib/lang/es_domain.lng b/interface/web/client/lib/lang/es_domain.lng
index 95ccf9ae23ca104a491914a14df91dde53d73d78..525eee7a874c549a8c314fca9fe176e989517e85 100644
--- a/interface/web/client/lib/lang/es_domain.lng
+++ b/interface/web/client/lib/lang/es_domain.lng
@@ -3,4 +3,5 @@ $wb['Domain'] = 'Dominio';
 $wb['domain_error_empty'] = 'El nombre de dominio está vacío';
 $wb['domain_error_regex'] = 'Este nombre de dominio no esta permitido';
 $wb['domain_error_unique'] = 'El dominio ya existe';
+$wb['domain_txt'] = 'Domain';
 ?>
diff --git a/interface/web/client/lib/lang/fi_domain.lng b/interface/web/client/lib/lang/fi_domain.lng
index a66a2258af7043759fcaec32ead09d70273191b6..50dc79323ac0fffbe9bb30060336874a089a163c 100644
--- a/interface/web/client/lib/lang/fi_domain.lng
+++ b/interface/web/client/lib/lang/fi_domain.lng
@@ -3,4 +3,5 @@ $wb['domain_error_empty'] = 'The domain-name is empty';
 $wb['domain_error_unique'] = 'The domain already exists';
 $wb['domain_error_regex'] = 'This domain-name is not allowed';
 $wb['Domain'] = 'Domain';
+$wb['domain_txt'] = 'Domain';
 ?>
diff --git a/interface/web/client/lib/lang/fr_domain.lng b/interface/web/client/lib/lang/fr_domain.lng
index 03b7c14c289bb415168a9d21af84d2072f2378df..d0b489518f0f08f6250168b1f74d2d1664a8fc52 100644
--- a/interface/web/client/lib/lang/fr_domain.lng
+++ b/interface/web/client/lib/lang/fr_domain.lng
@@ -3,4 +3,5 @@ $wb['domain_error_empty'] = 'Le nom de domaine est vide';
 $wb['domain_error_unique'] = 'Ce nom de domaine existe déjà';
 $wb['domain_error_regex'] = 'Ce nom de domaine n’est pas autorisé';
 $wb['Domain'] = 'Domaine';
+$wb['domain_txt'] = 'Domain';
 ?>
diff --git a/interface/web/client/lib/lang/hr_domain.lng b/interface/web/client/lib/lang/hr_domain.lng
index 784ccc63b725354eb780a6647451bedf3326ddcd..d557bfa631ae2b6da18f785ad63c7d96333e2f7e 100644
--- a/interface/web/client/lib/lang/hr_domain.lng
+++ b/interface/web/client/lib/lang/hr_domain.lng
@@ -3,4 +3,5 @@ $wb['domain_error_empty'] = 'Ime domene je prazno';
 $wb['domain_error_unique'] = 'Domena već postoji';
 $wb['domain_error_regex'] = 'Ovo ime domene ne možete upotrijebiti';
 $wb['Domain'] = 'Domain';
+$wb['domain_txt'] = 'Domain';
 ?>
diff --git a/interface/web/client/lib/lang/hu_domain.lng b/interface/web/client/lib/lang/hu_domain.lng
index a66a2258af7043759fcaec32ead09d70273191b6..50dc79323ac0fffbe9bb30060336874a089a163c 100644
--- a/interface/web/client/lib/lang/hu_domain.lng
+++ b/interface/web/client/lib/lang/hu_domain.lng
@@ -3,4 +3,5 @@ $wb['domain_error_empty'] = 'The domain-name is empty';
 $wb['domain_error_unique'] = 'The domain already exists';
 $wb['domain_error_regex'] = 'This domain-name is not allowed';
 $wb['Domain'] = 'Domain';
+$wb['domain_txt'] = 'Domain';
 ?>
diff --git a/interface/web/client/lib/lang/id_domain.lng b/interface/web/client/lib/lang/id_domain.lng
index 2091e872f93ae85acf2306d31a0062688104d962..73ea445c79a5e3dd115ad9a23c290887dc47c46d 100644
--- a/interface/web/client/lib/lang/id_domain.lng
+++ b/interface/web/client/lib/lang/id_domain.lng
@@ -3,4 +3,5 @@ $wb['domain_error_empty'] = 'Nama Domain kosong';
 $wb['domain_error_unique'] = 'Domain sudah ada';
 $wb['domain_error_regex'] = 'Nama Domain ini tidak diperbolehkan';
 $wb['Domain'] = 'Domain';
+$wb['domain_txt'] = 'Domain';
 ?>
diff --git a/interface/web/client/lib/lang/it_domain.lng b/interface/web/client/lib/lang/it_domain.lng
index dba372981a34d4bfca5294e1b58a21248e18eb6c..bb7c9e664077237e88887139bf78f7bb11cc2487 100644
--- a/interface/web/client/lib/lang/it_domain.lng
+++ b/interface/web/client/lib/lang/it_domain.lng
@@ -3,4 +3,5 @@ $wb['domain_error_empty'] = 'Nome dominio è vuoto';
 $wb['domain_error_unique'] = 'Dominio già esistente';
 $wb['domain_error_regex'] = 'Questo nome di dominio non è permesso';
 $wb['Domain'] = 'Dominio';
+$wb['domain_txt'] = 'Domain';
 ?>
diff --git a/interface/web/client/lib/lang/ja_domain.lng b/interface/web/client/lib/lang/ja_domain.lng
index a66a2258af7043759fcaec32ead09d70273191b6..50dc79323ac0fffbe9bb30060336874a089a163c 100644
--- a/interface/web/client/lib/lang/ja_domain.lng
+++ b/interface/web/client/lib/lang/ja_domain.lng
@@ -3,4 +3,5 @@ $wb['domain_error_empty'] = 'The domain-name is empty';
 $wb['domain_error_unique'] = 'The domain already exists';
 $wb['domain_error_regex'] = 'This domain-name is not allowed';
 $wb['Domain'] = 'Domain';
+$wb['domain_txt'] = 'Domain';
 ?>
diff --git a/interface/web/client/lib/lang/nl_domain.lng b/interface/web/client/lib/lang/nl_domain.lng
index c1da1b741db1bf7e8863f6ca76509ad192062698..78c728bc474e3c2f4e0e8eb24e350d62c9e36ae5 100644
--- a/interface/web/client/lib/lang/nl_domain.lng
+++ b/interface/web/client/lib/lang/nl_domain.lng
@@ -3,4 +3,5 @@ $wb['domain_error_empty'] = 'De domein naam is niet ingevuld';
 $wb['domain_error_unique'] = 'Het domein bestaat reeds';
 $wb['domain_error_regex'] = 'Deze domein naam is niet toegestaan';
 $wb['Domain'] = 'Domein';
+$wb['domain_txt'] = 'Domain';
 ?>
diff --git a/interface/web/client/lib/lang/pl_domain.lng b/interface/web/client/lib/lang/pl_domain.lng
index 9f3e80ff6458666aa19d3888ceb68af2a0875cdf..f80dea959f5d928f1c37dc88d8d2e1029b1d006f 100644
--- a/interface/web/client/lib/lang/pl_domain.lng
+++ b/interface/web/client/lib/lang/pl_domain.lng
@@ -3,4 +3,5 @@ $wb['domain_error_empty'] = 'Nazwa domeny jest pusta';
 $wb['domain_error_unique'] = 'Domena o podanej nazwie już istnieje';
 $wb['domain_error_regex'] = 'Nazwa domeny jest niedopuszczalna';
 $wb['Domain'] = 'Domena';
+$wb['domain_txt'] = 'Domain';
 ?>
diff --git a/interface/web/client/lib/lang/pt_domain.lng b/interface/web/client/lib/lang/pt_domain.lng
index a66a2258af7043759fcaec32ead09d70273191b6..50dc79323ac0fffbe9bb30060336874a089a163c 100644
--- a/interface/web/client/lib/lang/pt_domain.lng
+++ b/interface/web/client/lib/lang/pt_domain.lng
@@ -3,4 +3,5 @@ $wb['domain_error_empty'] = 'The domain-name is empty';
 $wb['domain_error_unique'] = 'The domain already exists';
 $wb['domain_error_regex'] = 'This domain-name is not allowed';
 $wb['Domain'] = 'Domain';
+$wb['domain_txt'] = 'Domain';
 ?>
diff --git a/interface/web/client/lib/lang/ro_domain.lng b/interface/web/client/lib/lang/ro_domain.lng
index a66a2258af7043759fcaec32ead09d70273191b6..50dc79323ac0fffbe9bb30060336874a089a163c 100644
--- a/interface/web/client/lib/lang/ro_domain.lng
+++ b/interface/web/client/lib/lang/ro_domain.lng
@@ -3,4 +3,5 @@ $wb['domain_error_empty'] = 'The domain-name is empty';
 $wb['domain_error_unique'] = 'The domain already exists';
 $wb['domain_error_regex'] = 'This domain-name is not allowed';
 $wb['Domain'] = 'Domain';
+$wb['domain_txt'] = 'Domain';
 ?>
diff --git a/interface/web/client/lib/lang/ru_domain.lng b/interface/web/client/lib/lang/ru_domain.lng
index 50f0d3f2fccde6aa200d4d11db6229829a16ca16..a387fb970eb4401753da77afbc1e828b3c63f670 100644
--- a/interface/web/client/lib/lang/ru_domain.lng
+++ b/interface/web/client/lib/lang/ru_domain.lng
@@ -3,4 +3,5 @@ $wb['domain_error_empty'] = 'Домен пустой.';
 $wb['domain_error_unique'] = 'Имя должно быть уникальным.';
 $wb['domain_error_regex'] = 'Некорректное имя домена.';
 $wb['Domain'] = 'Домен';
+$wb['domain_txt'] = 'Domain';
 ?>
diff --git a/interface/web/client/lib/lang/se_domain.lng b/interface/web/client/lib/lang/se_domain.lng
index df60bbeca2d3234da77905a44a732acc37d98d39..b300fb890ab7f8496f19308b6e88df440effa2c2 100644
--- a/interface/web/client/lib/lang/se_domain.lng
+++ b/interface/web/client/lib/lang/se_domain.lng
@@ -3,4 +3,5 @@ $wb['domain_error_empty'] = 'Domännamnet är tomt';
 $wb['domain_error_unique'] = 'Domänen finns redan';
 $wb['domain_error_regex'] = 'Denna domän är ogiltig';
 $wb['Domain'] = 'Domän';
+$wb['domain_txt'] = 'Domain';
 ?>
diff --git a/interface/web/client/lib/lang/sk_domain.lng b/interface/web/client/lib/lang/sk_domain.lng
index a66a2258af7043759fcaec32ead09d70273191b6..50dc79323ac0fffbe9bb30060336874a089a163c 100644
--- a/interface/web/client/lib/lang/sk_domain.lng
+++ b/interface/web/client/lib/lang/sk_domain.lng
@@ -3,4 +3,5 @@ $wb['domain_error_empty'] = 'The domain-name is empty';
 $wb['domain_error_unique'] = 'The domain already exists';
 $wb['domain_error_regex'] = 'This domain-name is not allowed';
 $wb['Domain'] = 'Domain';
+$wb['domain_txt'] = 'Domain';
 ?>
diff --git a/interface/web/client/lib/lang/tr_domain.lng b/interface/web/client/lib/lang/tr_domain.lng
index d0b4e228dae6ab0867652235de8eea6ff4c2d601..3f7312bf8a346afefafe210e67db2eda161355dc 100644
--- a/interface/web/client/lib/lang/tr_domain.lng
+++ b/interface/web/client/lib/lang/tr_domain.lng
@@ -3,4 +3,5 @@ $wb['domain_error_empty'] = 'Etki alanı boş olamaz';
 $wb['domain_error_unique'] = 'Aynı etki alanı zaten var';
 $wb['domain_error_regex'] = 'Bu etki alanına izin verilmiyor';
 $wb['Domain'] = 'Etki Alanı';
+$wb['domain_txt'] = 'Domain';
 ?>
diff --git a/interface/web/client/templates/domain_edit.htm b/interface/web/client/templates/domain_edit.htm
index 97fefc85e0f1f1920773cdc3c3938b56deec769f..8d2da4d03fd48f5fe3621bc62d1531314d781acf 100644
--- a/interface/web/client/templates/domain_edit.htm
+++ b/interface/web/client/templates/domain_edit.htm
@@ -19,7 +19,11 @@
         <input type="hidden" name="id" value="{tmpl_var name='id'}">
         <input type="hidden" name="type" value="local">
 
-        <div class="clear"><div class="right">
+        <div class="clear">
+          <tmpl_if name='id'><tmpl_if name='show_delete_on_forms' op="==" value="y">
+            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('client/domain_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='_csrf_id'}&_csrf_key={tmpl_var name='_csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+          </tmpl_if></tmpl_if>
+          <div class="right">
             <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="client/domain_edit.php">{tmpl_var name='btn_save_txt'}</button>
             <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="client/domain_list.php">{tmpl_var name='btn_cancel_txt'}</button>
         </div></div>
\ No newline at end of file
diff --git a/interface/web/dashboard/ajax_get_json.php b/interface/web/dashboard/ajax_get_json.php
index 4c6612888d517081e2e8963359da207627b0c264..0bd587ce012fb89ece63aeaee27e7d8cd41aa393 100644
--- a/interface/web/dashboard/ajax_get_json.php
+++ b/interface/web/dashboard/ajax_get_json.php
@@ -54,6 +54,9 @@ if($type == 'globalsearch'){
 	// resellers
 	$result[] = _search('client', 'reseller', "AND limit_client != 0");
 
+	// client domains
+	$result[] = _search('client', 'domain');
+
 	// web sites
 	$result[] = _search('sites', 'web_vhost_domain', "AND type = 'vhost'");
 
diff --git a/interface/web/dns/dns_dmarc_edit.php b/interface/web/dns/dns_dmarc_edit.php
index c2c54c6659d4ffdece8e6b18394592efb5c522c4..bada56d85aa4342b51ce66c1b58c09840da71dea 100644
--- a/interface/web/dns/dns_dmarc_edit.php
+++ b/interface/web/dns/dns_dmarc_edit.php
@@ -94,7 +94,7 @@ class page_action extends tform_actions {
 			$this->id = 1;
 			$old_data = strtolower($rec['data']);
 			$app->tpl->setVar("data", $old_data, true);
-      //if ($rec['active'] == 'Y') $app->tpl->setVar("active", "CHECKED"); else $app->tpl->setVar("active", "UNCHECKED");
+			if ($rec['active'] == 'Y') $app->tpl->setVar("active", '<input name="active" id="active" value="" type="checkbox" CHECKED>'); else $app->tpl->setVar("active", '<input name="active" id="active" value="" type="checkbox">');
 			$dmarc_rua = '';
 			$dmarc_ruf = '';
 			$dmac_rf = '';
diff --git a/interface/web/dns/dns_edit_base.php b/interface/web/dns/dns_edit_base.php
index 3d15ec1d8636402fef136de05394826f618b531f..2d6d4081e73a0b690841c0d5e4238d2d4e4927b4 100644
--- a/interface/web/dns/dns_edit_base.php
+++ b/interface/web/dns/dns_edit_base.php
@@ -129,6 +129,12 @@ class dns_page_action extends tform_actions {
 
 		if($this->checkDuplicate()) $app->tform->errorMessage .= $app->tform->lng("data_error_duplicate")."<br>";
 
+		// Remove accidental quotes around a record.
+		$matches = array();
+		if(preg_match('/^"(.*)"$/', $this->dataRecord["data"], $matches)) {
+			$this->dataRecord["data"] = $matches[1];
+		}
+
 		// Set the server ID of the rr record to the same server ID as the parent record.
 		$this->dataRecord["server_id"] = $soa["server_id"];
 
diff --git a/interface/web/dns/dns_import.php b/interface/web/dns/dns_import.php
index a229f3956bd097c5122763a7d991fc74a4a4323a..22a5367f6ee2485b70f99d5b1f969e73452576c8 100644
--- a/interface/web/dns/dns_import.php
+++ b/interface/web/dns/dns_import.php
@@ -64,6 +64,8 @@ if (isset($_POST['client_group_id'])) {
 	$sys_groupid = $_SESSION["s"]["user"]["default_group"];
 }
 $domain = (isset($_POST['domain'])&&!empty($_POST['domain']))?$_POST['domain']:NULL;
+$settings = $app->getconf->get_global_config('dns');
+$external_slave_servers = $settings['dns_external_slave_fqdn'];
 
 // get the correct server_id
 if (isset($_POST['server_id'])) {
@@ -73,11 +75,11 @@ if (isset($_POST['server_id'])) {
 	$server_id = $app->functions->intval($_POST['server_id_value']);
 	$post_server_id = true;
 } else {
-	$settings = $app->getconf->get_global_config('dns');
 	$server_id = $app->functions->intval($settings['default_dnsserver']);
 	$post_server_id = false;
 }
 
+$ignore_ns_records = (isset($_POST['ignore_ns_records']))?$app->functions->intval($_POST['ignore_ns_records']):0;
 
 // Load the templates
 $records = $app->db->queryAllRecords("SELECT * FROM dns_template WHERE visible = 'Y'");
@@ -190,16 +192,17 @@ if ($settings['use_domain_module'] == 'y') {
 		/* We have domains in the list, so create the drop-down-list */
 		foreach( $domains as $domain) {
 			$domain_select .= "<option value=" . $domain['domain_id'] ;
-			if ($domain['domain'] == $_POST['domain']) {
+			if ($domain['domain_id'] == $_POST['domain']) {
 				$domain_select .= " selected";
+				$selected_domain = $domain['domain'];
 			}
 			$domain_select .= ">" . $app->functions->idn_decode($domain['domain']) . ".</option>\r\n";
 		}
 	}
 	$app->tpl->setVar("domain_option", $domain_select);
 	/* check if the selected domain can be used! */
-	if ($domain) {
-		$domain_check = $app->tools_sites->checkDomainModuleDomain($domain);
+	if ($selected_domain) {
+		$domain_check = $app->tools_sites->checkDomainModuleDomain($selected_domain);
 		if(!$domain_check) {
 			// invalid domain selected
 			$domain = NULL;
@@ -207,6 +210,7 @@ if ($settings['use_domain_module'] == 'y') {
 			$domain = $domain_check;
 		}
 	}
+	$domain = $selected_domain;
 }
 
 $lng_file = 'lib/lang/'.$app->functions->check_language($_SESSION['s']['language']).'_dns_import.lng';
@@ -261,6 +265,13 @@ if(isset($_FILES['file']['name']) && is_uploaded_file($_FILES['file']['tmp_name'
 			$servers[$i]['server_name'] .= ".";
 		}
 	}
+	if (!empty($external_slave_servers)) {
+		$external_servers = preg_split('/[\s,]+/', $external_slave_servers);
+		foreach($external_servers as $e) {
+			$servers[]['server_name'] = rtrim($e, '.') . '.';
+		}
+	}
+
 	$lines = file($_FILES['file']['tmp_name']);
 
 	// Remove empty lines, comments, whitespace, tabs, etc.
@@ -322,7 +333,7 @@ if(isset($_FILES['file']['name']) && is_uploaded_file($_FILES['file']['tmp_name'
 	$owner = $name;
 	$r = 0;
 	$dns_rr = array();
-	$add_default_ns = TRUE;
+	$ns_record_included = FALSE;
 	$found_soa = FALSE;
 	foreach($lines as $line){
 
@@ -570,7 +581,12 @@ if(isset($_FILES['file']['name']) && is_uploaded_file($_FILES['file']['tmp_name'
 			$dns_rr[$r]['type'] = strtoupper($resource_type);
 
 			if($dns_rr[$r]['type'] == 'NS' && fqdn_name( $dns_rr[$r]['name'], $soa['name'] ) == $soa['name']){
-				$add_default_ns = FALSE;
+				if ($ignore_ns_records) {
+					unset($dns_rr[$r]);
+					continue;
+				} else {
+					$ns_record_included = TRUE;
+				}
 			}
 
 			$dns_rr[$r]['ttl'] = $app->functions->intval($dns_rr[$r]['ttl']);
@@ -601,7 +617,7 @@ if(isset($_FILES['file']['name']) && is_uploaded_file($_FILES['file']['tmp_name'
 		$i++;
 	}
 
-	if ( $add_default_ns ) {
+	if ( $ignore_ns_records || !$ns_record_included ) {
 		foreach ($servers as $server){
 			$dns_rr[$r]['name'] = $soa['name'];
 			$dns_rr[$r]['type'] = 'NS';
@@ -661,7 +677,7 @@ $error[] = print_r( $soa, true );
 			"expire" => $soa['expire'],
 			"minimum" => $soa['minimum'],
 			"ttl" => $soa['ttl'],
-			"active" => 'Y',
+			"active" => 'N', // Activated later when all DNS records are added.
 			"xfer" => $xfer
 		);
 		$dns_soa_id = $app->db->datalogInsert('dns_soa', $insert_data, 'id');
@@ -694,6 +710,9 @@ $error[] = print_r( $soa, true );
 				$dns_rr_id = $app->db->datalogInsert('dns_rr', $insert_data, 'id');
 			}
 
+			// Activate the DNS zone.
+			$app->db->datalogUpdate('dns_soa', array('active' => 'Y'), 'id', $dns_soa_id);
+
 			$msg[] = $wb['zone_file_successfully_imported_txt'];
 		} elseif (is_array($dns_rr)) {
 			$error[] = $wb['zone_file_import_fail'];
diff --git a/interface/web/dns/dns_soa_del.php b/interface/web/dns/dns_soa_del.php
index fee2138f8579708ed7f6085daef93710c36ea438..e04b11620d81ab954bd258387c72e5c3b08a36f0 100644
--- a/interface/web/dns/dns_soa_del.php
+++ b/interface/web/dns/dns_soa_del.php
@@ -55,7 +55,9 @@ class page_action extends tform_actions {
 
 		if($app->tform->checkPerm($this->id, 'd') == false) $app->error($app->lng('error_no_delete_permission'));
 
-		// Delete all records that belog to this zone.
+               $app->db->datalogUpdate('dns_soa', array("active" => 'N'), 'id', $this->id);
+
+		// Delete all records that belong to this zone.
 		$records = $app->db->queryAllRecords("SELECT id FROM dns_rr WHERE zone = ?", $this->id);
 		foreach($records as $rec) {
 			$app->db->datalogDelete('dns_rr', 'id', $rec['id']);
diff --git a/interface/web/dns/dns_soa_edit.php b/interface/web/dns/dns_soa_edit.php
index e17571e73612e8db511c303479aa3c87aed0ae8c..f2f10180b18a43de02b961f0b86af7e92bed56fb 100644
--- a/interface/web/dns/dns_soa_edit.php
+++ b/interface/web/dns/dns_soa_edit.php
@@ -227,6 +227,14 @@ class page_action extends tform_actions {
 			}
 		}
 
+               $csrf_token = $app->auth->csrf_token_get('dns_soa_del');
+               $app->tpl->setVar('_csrf_id', $csrf_token['csrf_id']);
+               $app->tpl->setVar('_csrf_key', $csrf_token['csrf_key']);
+
+               $global_config = $app->getconf->get_global_config();
+               $app->tpl->setVar('show_delete_on_forms', $global_config['misc']['show_delete_on_forms']);
+
+
 	} else {
 		$app->tpl->setVar("edit_disabled", 0);
 	}
diff --git a/interface/web/dns/form/dns_caa.tform.php b/interface/web/dns/form/dns_caa.tform.php
index aa297f29d77bd3a8018d25027fdefae628fedeb7..c17f66e181793324c94d5b281e406932020316c7 100644
--- a/interface/web/dns/form/dns_caa.tform.php
+++ b/interface/web/dns/form/dns_caa.tform.php
@@ -51,7 +51,7 @@ $form['tabs']['dns'] = array (
 					'type' => 'TOLOWER')
 			),
 			'validators' => array (  0 => array ( 'type' => 'REGEX',
-					'regex' => '/^[a-zA-Z0-9\.\-\_]{0,255}$/',
+					'regex' => '/^[a-zA-Z0-9\.\-\_\*]{0,255}$/',
 					'errmsg'=> 'name_error_regex'),
 			),
 			'default' => '',
diff --git a/interface/web/dns/lib/lang/ar_dns_import.lng b/interface/web/dns/lib/lang/ar_dns_import.lng
index 3fc63992ed75d7262ee09d7726130a858bcf5fed..6af6a86d1ffdf75d569f098200935e5794d6c2d1 100644
--- a/interface/web/dns/lib/lang/ar_dns_import.lng
+++ b/interface/web/dns/lib/lang/ar_dns_import.lng
@@ -22,4 +22,5 @@ $wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.';
 $wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.';
 $wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.';
 $wb['zone_file_import_fail'] = 'The zone file did not import.';
+$wb['ignore_ns_records_txt'] = 'Ignore NS records';
 ?>
diff --git a/interface/web/dns/lib/lang/bg_dns_import.lng b/interface/web/dns/lib/lang/bg_dns_import.lng
index 7ff3498c44d0847282b2755823bc1270e61964f9..b8c83bd4def99917055c4bb634b7eda85ad62b2b 100644
--- a/interface/web/dns/lib/lang/bg_dns_import.lng
+++ b/interface/web/dns/lib/lang/bg_dns_import.lng
@@ -22,4 +22,5 @@ $wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.';
 $wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.';
 $wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.';
 $wb['zone_file_import_fail'] = 'The zone file did not import.';
+$wb['ignore_ns_records_txt'] = 'Ignore NS records';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_import.lng b/interface/web/dns/lib/lang/br_dns_import.lng
index 1bdc7774b52f8137bee8dc5652deb786d88f4559..605f12db14fb6f25d8c4b46f3a2662d69e636358 100644
--- a/interface/web/dns/lib/lang/br_dns_import.lng
+++ b/interface/web/dns/lib/lang/br_dns_import.lng
@@ -22,3 +22,4 @@ $wb['ignore_record_not_class_in'] = 'Registro DNS ignorado, sem classe IN.';
 $wb['ignore_record_unknown_type'] = 'Registro DNS ignorado, tipo desconhecido.';
 $wb['ignore_record_invalid_owner'] = 'Registro DNS ignorado, não foi possível validar o proprietário.';
 $wb['zone_file_import_fail'] = 'O arquivo de zona não foi importado.';
+$wb['ignore_ns_records_txt'] = 'Ignore NS records';
diff --git a/interface/web/dns/lib/lang/ca_dns_import.lng b/interface/web/dns/lib/lang/ca_dns_import.lng
index 78c2edbf808ba61813fb9fa6fd65cf7d7f721a0e..45075228e510b8f517ab155e1b7a48292e8b760f 100644
--- a/interface/web/dns/lib/lang/ca_dns_import.lng
+++ b/interface/web/dns/lib/lang/ca_dns_import.lng
@@ -22,4 +22,5 @@ $wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.';
 $wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.';
 $wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.';
 $wb['zone_file_import_fail'] = 'The zone file did not import.';
+$wb['ignore_ns_records_txt'] = 'Ignore NS records';
 ?>
diff --git a/interface/web/dns/lib/lang/cn_dns_import.lng b/interface/web/dns/lib/lang/cn_dns_import.lng
index 22e24db0a45bd189daefd00a8a7e50be04716162..3598cdeafc6ecefde63de6acfdbf67c1e2b9c729 100644
--- a/interface/web/dns/lib/lang/cn_dns_import.lng
+++ b/interface/web/dns/lib/lang/cn_dns_import.lng
@@ -22,4 +22,5 @@ $wb['ignore_record_not_class_in'] = '忽略DNS记录,不是IN类。';
 $wb['ignore_record_unknown_type'] = '忽略DNS记录,未知类型。';
 $wb['ignore_record_invalid_owner'] = '忽略DNS记录,无法验证所有者名称。';
 $wb['zone_file_import_fail'] = '区域文件未导入。';
+$wb['ignore_ns_records_txt'] = 'Ignore NS records';
 ?>
diff --git a/interface/web/dns/lib/lang/cz_dns_import.lng b/interface/web/dns/lib/lang/cz_dns_import.lng
index ddbcce0875ccc6b6c38b3135e9c4cb874168f421..7d092cdebf234417a227eaf0da12f3a5a88c3e72 100644
--- a/interface/web/dns/lib/lang/cz_dns_import.lng
+++ b/interface/web/dns/lib/lang/cz_dns_import.lng
@@ -22,3 +22,4 @@ $wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.';
 $wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.';
 $wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.';
 $wb['zone_file_import_fail'] = 'The zone file did not import.';
+$wb['ignore_ns_records_txt'] = 'Ignore NS records';
diff --git a/interface/web/dns/lib/lang/de_dns_import.lng b/interface/web/dns/lib/lang/de_dns_import.lng
index 31db13932e2476cb0b5b94f397000d58e4e1ca53..6df425972a1e17437e32e251dfccbfc261c62b5e 100644
--- a/interface/web/dns/lib/lang/de_dns_import.lng
+++ b/interface/web/dns/lib/lang/de_dns_import.lng
@@ -22,4 +22,5 @@ $wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.';
 $wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.';
 $wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.';
 $wb['zone_file_import_fail'] = 'The zone file did not import.';
+$wb['ignore_ns_records_txt'] = 'Ignore NS records';
 ?>
diff --git a/interface/web/dns/lib/lang/dk_dns_import.lng b/interface/web/dns/lib/lang/dk_dns_import.lng
index 93357e11940d8d1a833e93a80f553bf1a8364ad5..4f474a47c2f5c9a306ec059523f492d27c13d1ef 100644
--- a/interface/web/dns/lib/lang/dk_dns_import.lng
+++ b/interface/web/dns/lib/lang/dk_dns_import.lng
@@ -22,4 +22,5 @@ $wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.';
 $wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.';
 $wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.';
 $wb['zone_file_import_fail'] = 'The zone file did not import.';
+$wb['ignore_ns_records_txt'] = 'Ignore NS records';
 ?>
diff --git a/interface/web/dns/lib/lang/el_dns_import.lng b/interface/web/dns/lib/lang/el_dns_import.lng
index 3fc63992ed75d7262ee09d7726130a858bcf5fed..6af6a86d1ffdf75d569f098200935e5794d6c2d1 100644
--- a/interface/web/dns/lib/lang/el_dns_import.lng
+++ b/interface/web/dns/lib/lang/el_dns_import.lng
@@ -22,4 +22,5 @@ $wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.';
 $wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.';
 $wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.';
 $wb['zone_file_import_fail'] = 'The zone file did not import.';
+$wb['ignore_ns_records_txt'] = 'Ignore NS records';
 ?>
diff --git a/interface/web/dns/lib/lang/en_dns_import.lng b/interface/web/dns/lib/lang/en_dns_import.lng
index 0b9681b22758908dead72a67084788587c1486ae..1811d249c843e2e422697f9f1b9f6e1197413777 100644
--- a/interface/web/dns/lib/lang/en_dns_import.lng
+++ b/interface/web/dns/lib/lang/en_dns_import.lng
@@ -22,4 +22,5 @@ $wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.';
 $wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.';
 $wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.';
 $wb['zone_file_import_fail'] = 'The zone file did not import.';
+$wb['ignore_ns_records_txt'] = 'Ignore NS records';
 ?>
diff --git a/interface/web/dns/lib/lang/es_dns_import.lng b/interface/web/dns/lib/lang/es_dns_import.lng
index db73b69e33602d1fbbea4ad1ee3ffbacf8c2b9af..01c28aebd278450930242ca8dcae53d010a8da36 100644
--- a/interface/web/dns/lib/lang/es_dns_import.lng
+++ b/interface/web/dns/lib/lang/es_dns_import.lng
@@ -22,4 +22,5 @@ $wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.';
 $wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.';
 $wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.';
 $wb['zone_file_import_fail'] = 'The zone file did not import.';
+$wb['ignore_ns_records_txt'] = 'Ignore NS records';
 ?>
diff --git a/interface/web/dns/lib/lang/fi_dns_import.lng b/interface/web/dns/lib/lang/fi_dns_import.lng
index 3fc63992ed75d7262ee09d7726130a858bcf5fed..6af6a86d1ffdf75d569f098200935e5794d6c2d1 100644
--- a/interface/web/dns/lib/lang/fi_dns_import.lng
+++ b/interface/web/dns/lib/lang/fi_dns_import.lng
@@ -22,4 +22,5 @@ $wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.';
 $wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.';
 $wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.';
 $wb['zone_file_import_fail'] = 'The zone file did not import.';
+$wb['ignore_ns_records_txt'] = 'Ignore NS records';
 ?>
diff --git a/interface/web/dns/lib/lang/fr_dns_import.lng b/interface/web/dns/lib/lang/fr_dns_import.lng
index c367f542bb17aabbf3c29f2799108c8e07d705a0..bdabc3dad9eab09cba2a4374e04b0563517e501b 100644
--- a/interface/web/dns/lib/lang/fr_dns_import.lng
+++ b/interface/web/dns/lib/lang/fr_dns_import.lng
@@ -22,4 +22,5 @@ $wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.';
 $wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.';
 $wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.';
 $wb['zone_file_import_fail'] = 'The zone file did not import.';
+$wb['ignore_ns_records_txt'] = 'Ignore NS records';
 ?>
diff --git a/interface/web/dns/lib/lang/hr_dns_import.lng b/interface/web/dns/lib/lang/hr_dns_import.lng
index 59632ed64edad24d7f293db3c849e21f76fd9f18..0d6bb2217d338bcb12eef9d7a29ebd9d38968621 100644
--- a/interface/web/dns/lib/lang/hr_dns_import.lng
+++ b/interface/web/dns/lib/lang/hr_dns_import.lng
@@ -22,4 +22,5 @@ $wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.';
 $wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.';
 $wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.';
 $wb['zone_file_import_fail'] = 'The zone file did not import.';
+$wb['ignore_ns_records_txt'] = 'Ignore NS records';
 ?>
diff --git a/interface/web/dns/lib/lang/hu_dns_import.lng b/interface/web/dns/lib/lang/hu_dns_import.lng
index 3fc63992ed75d7262ee09d7726130a858bcf5fed..6af6a86d1ffdf75d569f098200935e5794d6c2d1 100644
--- a/interface/web/dns/lib/lang/hu_dns_import.lng
+++ b/interface/web/dns/lib/lang/hu_dns_import.lng
@@ -22,4 +22,5 @@ $wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.';
 $wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.';
 $wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.';
 $wb['zone_file_import_fail'] = 'The zone file did not import.';
+$wb['ignore_ns_records_txt'] = 'Ignore NS records';
 ?>
diff --git a/interface/web/dns/lib/lang/id_dns_import.lng b/interface/web/dns/lib/lang/id_dns_import.lng
index 3fc63992ed75d7262ee09d7726130a858bcf5fed..6af6a86d1ffdf75d569f098200935e5794d6c2d1 100644
--- a/interface/web/dns/lib/lang/id_dns_import.lng
+++ b/interface/web/dns/lib/lang/id_dns_import.lng
@@ -22,4 +22,5 @@ $wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.';
 $wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.';
 $wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.';
 $wb['zone_file_import_fail'] = 'The zone file did not import.';
+$wb['ignore_ns_records_txt'] = 'Ignore NS records';
 ?>
diff --git a/interface/web/dns/lib/lang/it_dns_import.lng b/interface/web/dns/lib/lang/it_dns_import.lng
index 3f49ddc427a079b49ea65950f0c34a4926d5479b..23e68ed74af6543ebc88bf52bbc41228360832f5 100644
--- a/interface/web/dns/lib/lang/it_dns_import.lng
+++ b/interface/web/dns/lib/lang/it_dns_import.lng
@@ -22,4 +22,5 @@ $wb['ignore_record_not_class_in'] = 'Ignoro record DNS non di tipo IN.';
 $wb['ignore_record_unknown_type'] = 'Ignoro record DNS record di tipo sconosciuto.';
 $wb['ignore_record_invalid_owner'] = 'Ignoro record DNS non essendo possibile di validare il nome del titolare.';
 $wb['zone_file_import_fail'] = 'Il file di zona non è stato importato.';
+$wb['ignore_ns_records_txt'] = 'Ignore NS records';
 ?>
diff --git a/interface/web/dns/lib/lang/ja_dns_import.lng b/interface/web/dns/lib/lang/ja_dns_import.lng
index 3fc63992ed75d7262ee09d7726130a858bcf5fed..6af6a86d1ffdf75d569f098200935e5794d6c2d1 100644
--- a/interface/web/dns/lib/lang/ja_dns_import.lng
+++ b/interface/web/dns/lib/lang/ja_dns_import.lng
@@ -22,4 +22,5 @@ $wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.';
 $wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.';
 $wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.';
 $wb['zone_file_import_fail'] = 'The zone file did not import.';
+$wb['ignore_ns_records_txt'] = 'Ignore NS records';
 ?>
diff --git a/interface/web/dns/lib/lang/nl_dns_import.lng b/interface/web/dns/lib/lang/nl_dns_import.lng
index 3fc63992ed75d7262ee09d7726130a858bcf5fed..6af6a86d1ffdf75d569f098200935e5794d6c2d1 100644
--- a/interface/web/dns/lib/lang/nl_dns_import.lng
+++ b/interface/web/dns/lib/lang/nl_dns_import.lng
@@ -22,4 +22,5 @@ $wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.';
 $wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.';
 $wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.';
 $wb['zone_file_import_fail'] = 'The zone file did not import.';
+$wb['ignore_ns_records_txt'] = 'Ignore NS records';
 ?>
diff --git a/interface/web/dns/lib/lang/pl_dns_import.lng b/interface/web/dns/lib/lang/pl_dns_import.lng
index f6b618c87b425b2bb570886f896ed1abde067d1c..657ae3d133f5b5d4eb374cb3aa74875628a59a54 100644
--- a/interface/web/dns/lib/lang/pl_dns_import.lng
+++ b/interface/web/dns/lib/lang/pl_dns_import.lng
@@ -22,4 +22,5 @@ $wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.';
 $wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.';
 $wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.';
 $wb['zone_file_import_fail'] = 'The zone file did not import.';
+$wb['ignore_ns_records_txt'] = 'Ignore NS records';
 ?>
diff --git a/interface/web/dns/lib/lang/pt_dns_import.lng b/interface/web/dns/lib/lang/pt_dns_import.lng
index 3fc63992ed75d7262ee09d7726130a858bcf5fed..6af6a86d1ffdf75d569f098200935e5794d6c2d1 100644
--- a/interface/web/dns/lib/lang/pt_dns_import.lng
+++ b/interface/web/dns/lib/lang/pt_dns_import.lng
@@ -22,4 +22,5 @@ $wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.';
 $wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.';
 $wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.';
 $wb['zone_file_import_fail'] = 'The zone file did not import.';
+$wb['ignore_ns_records_txt'] = 'Ignore NS records';
 ?>
diff --git a/interface/web/dns/lib/lang/ro_dns_import.lng b/interface/web/dns/lib/lang/ro_dns_import.lng
index 3fc63992ed75d7262ee09d7726130a858bcf5fed..6af6a86d1ffdf75d569f098200935e5794d6c2d1 100644
--- a/interface/web/dns/lib/lang/ro_dns_import.lng
+++ b/interface/web/dns/lib/lang/ro_dns_import.lng
@@ -22,4 +22,5 @@ $wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.';
 $wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.';
 $wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.';
 $wb['zone_file_import_fail'] = 'The zone file did not import.';
+$wb['ignore_ns_records_txt'] = 'Ignore NS records';
 ?>
diff --git a/interface/web/dns/lib/lang/ru_dns_import.lng b/interface/web/dns/lib/lang/ru_dns_import.lng
index 95cf32c935bb281cd84cc1c79d38500eea2e90b4..acc1eccd85aba9fc09ba01201a4e3322de6dbd41 100644
--- a/interface/web/dns/lib/lang/ru_dns_import.lng
+++ b/interface/web/dns/lib/lang/ru_dns_import.lng
@@ -22,4 +22,5 @@ $wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.';
 $wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.';
 $wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.';
 $wb['zone_file_import_fail'] = 'The zone file did not import.';
+$wb['ignore_ns_records_txt'] = 'Ignore NS records';
 ?>
diff --git a/interface/web/dns/lib/lang/se_dns_import.lng b/interface/web/dns/lib/lang/se_dns_import.lng
index 1c9496600275d21b8fb2bbfe059017c67b1e892b..1ae7b83cad996cfc05dec7b60f20a73cecd40eec 100644
--- a/interface/web/dns/lib/lang/se_dns_import.lng
+++ b/interface/web/dns/lib/lang/se_dns_import.lng
@@ -22,4 +22,5 @@ $wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.';
 $wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.';
 $wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.';
 $wb['zone_file_import_fail'] = 'The zone file did not import.';
+$wb['ignore_ns_records_txt'] = 'Ignore NS records';
 ?>
diff --git a/interface/web/dns/lib/lang/sk_dns_import.lng b/interface/web/dns/lib/lang/sk_dns_import.lng
index 3fc63992ed75d7262ee09d7726130a858bcf5fed..6af6a86d1ffdf75d569f098200935e5794d6c2d1 100644
--- a/interface/web/dns/lib/lang/sk_dns_import.lng
+++ b/interface/web/dns/lib/lang/sk_dns_import.lng
@@ -22,4 +22,5 @@ $wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.';
 $wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.';
 $wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.';
 $wb['zone_file_import_fail'] = 'The zone file did not import.';
+$wb['ignore_ns_records_txt'] = 'Ignore NS records';
 ?>
diff --git a/interface/web/dns/lib/lang/tr_dns_import.lng b/interface/web/dns/lib/lang/tr_dns_import.lng
index 8aa42a51e3c6126a0620d20bee38418048d96751..8ce62d2cc2d8e0494cdd71083fdec8fa4707715b 100644
--- a/interface/web/dns/lib/lang/tr_dns_import.lng
+++ b/interface/web/dns/lib/lang/tr_dns_import.lng
@@ -22,4 +22,5 @@ $wb['ignore_record_not_class_in'] = 'Ignoring DNS record, not class IN.';
 $wb['ignore_record_unknown_type'] = 'Ignoring DNS record, unknown type.';
 $wb['ignore_record_invalid_owner'] = 'Ignoring DNS record, not able to validate owner name.';
 $wb['zone_file_import_fail'] = 'The zone file did not import.';
+$wb['ignore_ns_records_txt'] = 'Ignore NS records';
 ?>
diff --git a/interface/web/dns/templates/dns_a_list.htm b/interface/web/dns/templates/dns_a_list.htm
index 4d0f3b2b2880d2aa9afe38bd756fdc00e9e87ff5..f39c1b9253a194686697c1c727edd5f7013cf1d4 100644
--- a/interface/web/dns/templates/dns_a_list.htm
+++ b/interface/web/dns/templates/dns_a_list.htm
@@ -73,7 +73,7 @@
                     <td><input class="form-control" type="text" name="search_aux" value="{tmpl_var name='search_aux'}" /></td>
                     <td><input class="form-control" type="text" name="search_ttl" value="{tmpl_var name='search_ttl'}" /></td>
                     <td class="text-right">
-                        <button type="button" class="btn btn-default formbutton-default formbutton-narrow" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" onclick="return ISPConfig.changeTab('dns_records','dns/dns_soa_edit.php');" data-form-action="dns/dns_a_list.php"><span class="icon icon-filter"></span></button>
+                        <button type="button" class="btn btn-default formbutton-default formbutton-narrow" name="Filter" id="Filter" value="{tmpl_var name='filter_txt'}" onclick="return ISPConfig.changeTab('dns_records','dns/dns_soa_edit.php',true);" data-form-action="dns/dns_soa_edit.php?id={tmpl_var name='parent_id'}&next_tab=dns_records"><span class="icon icon-filter"></span></button>
                     </td>
                 </tr>
             </thead>
diff --git a/interface/web/dns/templates/dns_import.htm b/interface/web/dns/templates/dns_import.htm
index 9d40107c89c7ee6f74435a05bf1697f34c0f2724..4e9541575428d0b0b6cba3cf0fd19f5db853154f 100644
--- a/interface/web/dns/templates/dns_import.htm
+++ b/interface/web/dns/templates/dns_import.htm
@@ -46,6 +46,13 @@
 			<div class="col-sm-9 col-text">
 				<tmpl_var name='domain_field_desc_txt' }</div>
 			</div>
+			<div class="form-group">
+			  <label class="col-sm-3 control-label">{tmpl_var name=ignore_ns_records_txt'}</label>
+			  <div class="col-sm-9">
+				<input type="checkbox" id="ignore_ns_records" value="1" checked name="ignore_ns_records" />
+			  </div>
+			</div>
+
 			<div class="form-group">
 				<label for="file" class="col-sm-3 control-label">{tmpl_var name='zonefile_to_import_txt'}</label>
 				<div class="col-sm-9 col-text"><input name="file" id="file" size="30" type="file" class="fileUpload" /></div>
@@ -59,7 +66,7 @@
 				</div>
 			</tmpl_if>
 			<tmpl_if name="error">
-				<div class='alert alert-danger clear'>
+				<div id='errorMsg' class='alert alert-danger clear'>
 					<div class='alert-label'>
 						<strong>
 							<tmpl_var name="error_txt">
diff --git a/interface/web/dns/templates/dns_soa_edit.htm b/interface/web/dns/templates/dns_soa_edit.htm
index 97f338503099d330097583b225db61a0de55c195..a23d87e8cbb87c36dbb7c633c3d28b4f0335bdd4 100644
--- a/interface/web/dns/templates/dns_soa_edit.htm
+++ b/interface/web/dns/templates/dns_soa_edit.htm
@@ -173,6 +173,10 @@
 <input type="hidden" name="id" value="{tmpl_var name='id'}">
 <input name="serial" type="hidden" value="{tmpl_var name='serial'}">
 <div class="clear">
+  <tmpl_if name='id'><tmpl_if name='show_delete_on_forms' op="==" value="y">
+    <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('dns/dns_soa_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='_csrf_id'}&_csrf_key={tmpl_var name='_csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name
+='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+  </tmpl_if></tmpl_if>
   <div class="right">
     <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="dns/dns_soa_edit.php">{tmpl_var name='btn_save_txt'}</button>
     <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="dns/dns_soa_list.php">{tmpl_var name='btn_cancel_txt'}</button>
diff --git a/interface/web/mail/ajax_get_json.php b/interface/web/mail/ajax_get_json.php
index 68d935abb7f2e93b1a4271d6cdbf8b42824d170b..d5b4d7edd7f457ff2ebb43b740d982e943cc194c 100644
--- a/interface/web/mail/ajax_get_json.php
+++ b/interface/web/mail/ajax_get_json.php
@@ -34,8 +34,10 @@ require_once '../../lib/app.inc.php';
 //* Check permissions for module
 $app->auth->check_module_permissions('mail');
 
+$app->uses('functions');
+
 $type = $_GET['type'];
-$domain_id = $_GET['domain_id'];
+$domain_id = $app->functions->idn_encode($_GET['domain_id']);
 
 if($type == 'create_dkim' && $domain_id != ''){
 	$dkim_public = $_GET['dkim_public'];
diff --git a/interface/web/mail/lib/lang/de_backup_stats_list.lng b/interface/web/mail/lib/lang/de_backup_stats_list.lng
index 9147d3cbd6e03abec15051bd166b7c10ed041c24..c2210bfed39f89bfafc442683508a8324bc2b427 100644
--- a/interface/web/mail/lib/lang/de_backup_stats_list.lng
+++ b/interface/web/mail/lib/lang/de_backup_stats_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'Backup Statistiken';
+$wb['list_head_txt'] = 'Backup-Statistiken';
 $wb['active_txt'] = 'Aktiv';
 $wb['domain_txt'] = 'Email';
 $wb['backup_count_txt'] = 'Anz. Backups';
diff --git a/interface/web/mail/lib/lang/de_mail_alias.lng b/interface/web/mail/lib/lang/de_mail_alias.lng
index 7d8099fdcaaa8eb62479a398306e340e3cecc671..9f23b53c068a79318fd2f918d7d43cffaeb04f6b 100644
--- a/interface/web/mail/lib/lang/de_mail_alias.lng
+++ b/interface/web/mail/lib/lang/de_mail_alias.lng
@@ -1,15 +1,15 @@
 <?php
-$wb['email_txt'] = 'E-Mail Adresse';
+$wb['email_txt'] = 'E-Mail-Adresse';
 $wb['destination_txt'] = 'Ziel';
 $wb['active_txt'] = 'Aktiv';
-$wb['email_error_isemail'] = 'E-Mail Adresse ist ungültig';
-$wb['email_error_unique'] = 'Doppelte E-Mail Adresse.';
+$wb['email_error_isemail'] = 'E-Mail-Adresse ist ungültig';
+$wb['email_error_unique'] = 'Doppelte E-Mail-Adresse.';
 $wb['no_domain_perm'] = 'Sie haben keine Berechtigung für diese Domain.';
 $wb['destination_error_isemail'] = 'Zieladresse ist ungültig.';
-$wb['limit_mailalias_txt'] = 'Die maximale Anzahl an E-Mail Aliasen für Ihr Konto wurde erreicht.';
-$wb['duplicate_mailbox_txt'] = 'Es existiert bereits eine E-Mail Konto mit dieser E-Mail Adresse.';
+$wb['limit_mailalias_txt'] = 'Die maximale Anzahl an E-Mail-Aliasen für Ihr Konto wurde erreicht.';
+$wb['duplicate_mailbox_txt'] = 'Es existiert bereits eine E-Mail Konto mit dieser E-Mail-Adresse.';
 $wb['domain_txt'] = 'Domain';
-$wb['duplicate_email_alias_txt'] = 'Dieser E-Mail Alias existiert bereits.';
+$wb['duplicate_email_alias_txt'] = 'Dieser E-Mail-Alias existiert bereits.';
 $wb['source_txt'] = 'Alias';
 $wb['send_as_txt'] = 'Senden als';
 $wb['send_as_exp'] = 'Ziel erlauben, den Alias als Absender zu benutzen';
diff --git a/interface/web/mail/lib/lang/de_mail_alias_list.lng b/interface/web/mail/lib/lang/de_mail_alias_list.lng
index e741d02b3b504364b76b408bce61d8fe48418fb5..f4b8600c43fa7618f005e62e9994fca6f4a784b7 100644
--- a/interface/web/mail/lib/lang/de_mail_alias_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_alias_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'E-Mail Alias';
+$wb['list_head_txt'] = 'E-Mail-Alias';
 $wb['active_txt'] = 'Aktiv';
 $wb['source_txt'] = 'Quelle';
 $wb['destination_txt'] = 'Ziel';
-$wb['email_txt'] = 'E-Mail Adresse';
-$wb['add_new_record_txt'] = 'Neuen E-Mail Alias hinzufügen';
+$wb['email_txt'] = 'E-Mail-Adresse';
+$wb['add_new_record_txt'] = 'Neuen E-Mail-Alias hinzufügen';
 ?>
diff --git a/interface/web/mail/lib/lang/de_mail_aliasdomain.lng b/interface/web/mail/lib/lang/de_mail_aliasdomain.lng
index f75bd1659c475a36ecec5f11119fa71d1380b9b4..cde8a93a4bc2c911c3c9b017c533807669625eb0 100644
--- a/interface/web/mail/lib/lang/de_mail_aliasdomain.lng
+++ b/interface/web/mail/lib/lang/de_mail_aliasdomain.lng
@@ -3,9 +3,9 @@ $wb['source_txt'] = 'Quelle';
 $wb['destination_txt'] = 'Ziel';
 $wb['active_txt'] = 'Aktiv';
 $wb['no_domain_perm'] = 'Sie haben keine Rechte für diese Domain.';
-$wb['limit_mailaliasdomain_txt'] = 'Die maximale Anzahl an E-Mail Alias Domains für Ihr Konto wurde erreicht.';
+$wb['limit_mailaliasdomain_txt'] = 'Die maximale Anzahl an E-Mail-Alias-Domains für Ihr Konto wurde erreicht.';
 $wb['source_destination_identical_txt'] = 'Quell- und Ziel Domain sind identisch.';
-$wb['source_error_empty'] = 'Quell Domain ist leer.';
-$wb['source_error_unique'] = 'Quell Domain duplizieren.';
-$wb['source_error_regex'] = 'Ungültiger Quell Domainname.';
+$wb['source_error_empty'] = 'Quelldomain ist leer.';
+$wb['source_error_unique'] = 'Quelldomain duplizieren.';
+$wb['source_error_regex'] = 'Ungültiger Quelldomainname.';
 ?>
diff --git a/interface/web/mail/lib/lang/de_mail_aliasdomain_list.lng b/interface/web/mail/lib/lang/de_mail_aliasdomain_list.lng
index c386d429bc088420bed04c4a0618ff0e32a95254..82806d7347cdf95bd99844e8074141ece92e32b4 100644
--- a/interface/web/mail/lib/lang/de_mail_aliasdomain_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_aliasdomain_list.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['list_head_txt'] = 'E-Mail Domain Alias';
+$wb['list_head_txt'] = 'E-Mail-Domain-Alias';
 $wb['active_txt'] = 'Aktiv';
 $wb['source_txt'] = 'Quelle';
 $wb['destination_txt'] = 'Ziel';
-$wb['add_new_record_txt'] = 'Neuen E-Mail Domain Alias hinzufügen';
+$wb['add_new_record_txt'] = 'Neuen E-Mail-Domain-Alias hinzufügen';
 ?>
diff --git a/interface/web/mail/lib/lang/de_mail_blacklist.lng b/interface/web/mail/lib/lang/de_mail_blacklist.lng
index 7cb69f74bc32417a5211871ad27cdd4a01959494..b46708e2829d34e8d841880a49618963b928094e 100644
--- a/interface/web/mail/lib/lang/de_mail_blacklist.lng
+++ b/interface/web/mail/lib/lang/de_mail_blacklist.lng
@@ -1,12 +1,12 @@
 <?php
 $wb['server_id_txt'] = 'Server';
-$wb['source_txt'] = 'Blacklist E-Mail Adresse';
+$wb['source_txt'] = 'Blacklist-E-Mail-Adresse';
 $wb['recipient_txt'] = 'Empfänger';
 $wb['active_txt'] = 'Aktiv';
 $wb['source_error_notempty'] = 'Adresse ist leer.';
 $wb['type_txt'] = 'Typ';
-$wb['limit_mailfilter_txt'] = 'Die maximale Anzahl an E-Mail Filter für Ihr Konto wurde erreicht.';
-$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.';
-$wb['mail_access_unique'] = 'Blacklist Address already in use.';
+$wb['limit_mailfilter_txt'] = 'Die maximale Anzahl an E-Mail-Filter für Ihr Konto wurde erreicht.';
+$wb['limit_mail_wblist_txt'] = 'Die maximale Anzahl an White- oder Blacklist Einträgen für ihr Konto wurde erreicht.';
+$wb['mail_access_unique'] = 'Blacklist-E-Mail-Adresse wird bereits verwendet.';
 $wb['client_txt'] = 'Client';
 $wb['sender_txt'] = 'Sender';
diff --git a/interface/web/mail/lib/lang/de_mail_blacklist_list.lng b/interface/web/mail/lib/lang/de_mail_blacklist_list.lng
index b169909112a091d9488d23e3fd329d913ab9ef22..3aecdae05c4fea6d917f576d918b5ef7fe4db468 100644
--- a/interface/web/mail/lib/lang/de_mail_blacklist_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_blacklist_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'E-Mail Blacklist';
+$wb['list_head_txt'] = 'E-Mail-Blacklist';
 $wb['active_txt'] = 'Aktiv';
 $wb['server_id_txt'] = 'Server';
-$wb['source_txt'] = 'Blacklisted E-Mail Adresse';
+$wb['source_txt'] = 'Blacklisted E-Mail-Adresse';
 $wb['type_txt'] = 'Typ';
 $wb['recipient_txt'] = 'Empfänger';
 $wb['add_new_record_txt'] = 'Neuen Blacklist Eintrag hinzufügen';
diff --git a/interface/web/mail/lib/lang/de_mail_domain.lng b/interface/web/mail/lib/lang/de_mail_domain.lng
index 0a972caa42f76e7bf8d5abf467f826ec157bd18d..36db59d732a9453e6f5f7673ff7b65b1adab4bdf 100644
--- a/interface/web/mail/lib/lang/de_mail_domain.lng
+++ b/interface/web/mail/lib/lang/de_mail_domain.lng
@@ -7,19 +7,19 @@ $wb['dkim_txt'] = 'DKIM aktivieren';
 $wb['dkim_private_txt'] = 'DKIM privater Schlüssel';
 $wb['dkim_public_txt'] = 'DKIM öffentlicher Schlüssel';
 $wb['dkim_generate_txt'] = 'erstelle DKIM Schlüssel';
-$wb['dkim_dns_txt'] = 'DNS Eintrag';
-$wb['dkim_private_key_error'] = 'ungueltiger DKIM-Private key';
+$wb['dkim_dns_txt'] = 'DNS-Eintrag';
+$wb['dkim_private_key_error'] = 'Privater DKIM-Schlüssel ist ungültig';
 $wb['domain_error_empty'] = 'Domain ist leer';
 $wb['domain_error_unique'] = 'Doppelte Domain.';
 $wb['domain_error_regex'] = 'Ungültiger Domainname.';
 $wb['client_txt'] = 'Kunde';
-$wb['limit_maildomain_txt'] = 'Die maximale Anzahl an E-Mail Domains für Ihr Konto wurde erreicht.';
+$wb['limit_maildomain_txt'] = 'Die maximale Anzahl an E-Mail-Domains für Ihr Konto wurde erreicht.';
 $wb['policy_txt'] = 'Spamfilter';
 $wb['no_policy'] = '- nicht aktiviert -';
 $wb['dkim_selector_txt'] = 'DKIM-Selector';
 $wb['dkim_selector_error'] = 'Ungültiger DKIM-Selector. Verwenden Sie nur max. 63 alphanumerische Zeichen (a-z oder 0-9), gefolgt von einem optionalen Punkt und weiter 63 alphanumerischen Zeichen.';
 $wb['dkim_settings_txt'] = 'DomainKeys Identified Mail (DKIM)';
-$wb['error_not_allowed_server_id'] = 'Chosen server is not allowed for this account.';
+$wb['error_not_allowed_server_id'] = 'Der gewählte Server ist für dieses Konto nicht zulässig.';
 $wb['relayhost_txt'] = 'Relayhost';
-$wb['relayhost_user_txt'] = 'Relayhost User';
-$wb['relayhost_password_txt'] = 'Relayhost Password';
+$wb['relayhost_user_txt'] = 'Relayhost-Benutzer';
+$wb['relayhost_password_txt'] = 'Relayhost-Passwort';
diff --git a/interface/web/mail/lib/lang/de_mail_domain_admin_list.lng b/interface/web/mail/lib/lang/de_mail_domain_admin_list.lng
index 403bb90feea2d1b3afb3cb6736869bc39d5cd0b7..2ff3d10be9a9e9b9e293410d240679f3ed302761 100644
--- a/interface/web/mail/lib/lang/de_mail_domain_admin_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_domain_admin_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'E-Mail Domain';
+$wb['list_head_txt'] = 'E-Mail-Domain';
 $wb['server_id_txt'] = 'Server';
 $wb['domain_txt'] = 'Domain';
 $wb['add_new_record_txt'] = 'Neue Domain hinzufügen';
diff --git a/interface/web/mail/lib/lang/de_mail_domain_catchall.lng b/interface/web/mail/lib/lang/de_mail_domain_catchall.lng
index 02fe5f100046661277b46c27d9b90a8128d9b8df..d6eee6699dbca9b420b2b2e536d869023c4348b0 100644
--- a/interface/web/mail/lib/lang/de_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/de_mail_domain_catchall.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['domain_txt'] = 'Domain';
-$wb['destination_txt'] = 'Ziel E-Mail';
+$wb['destination_txt'] = 'Ziel-E-Mail';
 $wb['active_txt'] = 'Aktiv';
 $wb['domain_error_unique'] = 'Es besteht bereits ein Catchall Eintrag für diese Domain.';
 $wb['no_domain_perm'] = 'Sie haben keine Berechtigung für diese Domain.';
@@ -10,4 +10,4 @@ $wb['source_txt'] = 'Quelle';
 $wb['destination_error_isemail'] = 'Das Ziel ist keine gültige E-Mail Adresse.';
 $wb['greylisting_txt'] = 'Aktiviere Greylisting';
 $wb['send_as_txt'] = 'Senden als';
-$wb['send_as_exp'] = 'Allow destination to send from email addresses in this domain';
+$wb['send_as_exp'] = 'Erlaube dem Ziel, von E-Mail-Adressen in dieser Domäne zu senden.';
diff --git a/interface/web/mail/lib/lang/de_mail_domain_catchall_list.lng b/interface/web/mail/lib/lang/de_mail_domain_catchall_list.lng
index 558cb5c9f9614d04bcc7a7de06cff7f57fadd794..91f4b4db18fb993ed62f4522559394540bc56cc0 100644
--- a/interface/web/mail/lib/lang/de_mail_domain_catchall_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_domain_catchall_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'E-Mail Catchall';
+$wb['list_head_txt'] = 'E-Mail-Catchall';
 $wb['active_txt'] = 'Aktiv';
 $wb['source_txt'] = 'Quelle';
 $wb['destination_txt'] = 'Zieladresse';
diff --git a/interface/web/mail/lib/lang/de_mail_domain_list.lng b/interface/web/mail/lib/lang/de_mail_domain_list.lng
index ff25a5817d728e966d06991d5225d2940c718bb8..ed9dfb61f14b4a176e0628c07ddefbcdd9ca774f 100644
--- a/interface/web/mail/lib/lang/de_mail_domain_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_domain_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'E-Mail Domain';
+$wb['list_head_txt'] = 'E-Mail-Domain';
 $wb['server_id_txt'] = 'Server';
 $wb['domain_txt'] = 'Domain';
 $wb['add_new_record_txt'] = 'Neue Domain hinzufügen';
diff --git a/interface/web/mail/lib/lang/de_mail_forward.lng b/interface/web/mail/lib/lang/de_mail_forward.lng
index 4435ce707c3dbfb6104dc56796762daca72e4e52..7b2e706ec438316c1ec1c2c91c1d040111d74f4a 100644
--- a/interface/web/mail/lib/lang/de_mail_forward.lng
+++ b/interface/web/mail/lib/lang/de_mail_forward.lng
@@ -1,15 +1,15 @@
 <?php
-$wb['email_txt'] = 'E-Mail Adresse';
-$wb['destination_txt'] = 'Ziel E-Mail Adresse';
+$wb['email_txt'] = 'E-Mail-Adresse';
+$wb['destination_txt'] = 'Ziel-E-Mail-Adresse';
 $wb['active_txt'] = 'Aktiv';
-$wb['limit_mailforward_txt'] = 'Die maximale Anzahl an E-Mail Weiterleitungen für Ihr Konto wurde erreicht.';
-$wb['duplicate_mailbox_txt'] = 'Es existiert bereits ein E-Mail Konto mit dieser Adresse.';
+$wb['limit_mailforward_txt'] = 'Die maximale Anzahl an E-Mail-Weiterleitungen für Ihr Konto wurde erreicht.';
+$wb['duplicate_mailbox_txt'] = 'Es existiert bereits ein E-Mail-Konto mit dieser Adresse.';
 $wb['domain_txt'] = 'Domain';
-$wb['source_txt'] = 'Quell E-Mail Adresse';
+$wb['source_txt'] = 'Quell-E-Mail-Adresse';
 $wb['destination_error_empty'] = 'Das Weiterleitungsziel darf nicht leer sein.';
 $wb['destination_error_isemail'] = 'Das Weiterleitungsziel enthält mindestens eine ungültige E-Mail-Adresse.';
-$wb['email_error_isemail'] = 'Bitte geben Sie eine gültige E-Mail Adresse an.';
-$wb['email_error_unique'] = 'Doppelte E-Mail Adresse.';
+$wb['email_error_isemail'] = 'Bitte geben Sie eine gültige E-Mail-Adresse an.';
+$wb['email_error_unique'] = 'Doppelte E-Mail-Adresse.';
 $wb['send_as_txt'] = 'Senden als';
 $wb['send_as_exp'] = 'Ziel erlauben, die Adresse als Absender zu nutzen (Nur, falls das Ziel intern ist)';
 $wb['greylisting_txt'] = 'Aktiviere greylisting';
diff --git a/interface/web/mail/lib/lang/de_mail_forward_list.lng b/interface/web/mail/lib/lang/de_mail_forward_list.lng
index 99b6ab5ea44efdd5bc736f4d6d9bb3b3275ebc4b..9279620c1764db825a5ba8a1b28401310006d388 100644
--- a/interface/web/mail/lib/lang/de_mail_forward_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_forward_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'E-Mail Weiterleitung';
+$wb['list_head_txt'] = 'E-Mail-Weiterleitung';
 $wb['active_txt'] = 'Aktiv';
 $wb['source_txt'] = 'Quelle';
 $wb['destination_txt'] = 'Ziel';
 $wb['email_txt'] = 'E-Mail';
-$wb['add_new_record_txt'] = 'Neue E-Mail Weiterleitung hinzufügen';
+$wb['add_new_record_txt'] = 'Neue E-Mail-Weiterleitung hinzufügen';
 ?>
diff --git a/interface/web/mail/lib/lang/de_mail_mailinglist.lng b/interface/web/mail/lib/lang/de_mail_mailinglist.lng
index e09153f44b4d386cf600eb83623c5a5b5e2df126..6477fe86ee3f529694244e537b96c722e6cfcb8f 100644
--- a/interface/web/mail/lib/lang/de_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/de_mail_mailinglist.lng
@@ -2,22 +2,22 @@
 $wb['limit_mailmailinglist_txt'] = 'Limit erreicht';
 $wb['domain_error_empty'] = 'Domain ist leer.';
 $wb['listname_error_empty'] = 'Listenname ist leer.';
-$wb['domain_error_regex'] = 'Domain Name ist nicht gültig.';
+$wb['domain_error_regex'] = 'Domainname ist nicht gültig.';
 $wb['listname_error_regex'] = 'Der Listenname ist ungültig. Die Mindestlänge beträgt 2 Zeichen (erlaubt sind: [a-z 1-9 - _])';
-$wb['email_in_use_txt'] = 'E-Mail Adresse ist bereits in Benutzung';
+$wb['email_in_use_txt'] = 'E-Mail-Adresse ist bereits in Benutzung';
 $wb['no_domain_perm'] = 'Sie haben keine Rechte für diese Domain.';
 $wb['password_strength_txt'] = 'Passwortkomplexität';
 $wb['server_id_txt'] = 'Server';
 $wb['domain_txt'] = 'Domain';
 $wb['listname_txt'] = 'Listenname';
 $wb['client_txt'] = 'Kunde';
-$wb['email_txt'] = 'E-Mail Adresse';
+$wb['email_txt'] = 'E-Mail-Adresse';
 $wb['password_txt'] = 'Passwort';
 $wb['generate_password_txt'] = 'Passwort erzeugen';
 $wb['repeat_password_txt'] = 'Passwort wiederholen';
 $wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
 $wb['password_match_txt'] = 'Die Passwörter stimmen überein.';
 $wb['listname_error_unique'] = 'Es beseht bereits eine Mailingliste mit diesem Namen auf dem Serverr. Bitte verwenden Sie einen anderen Mailinglistennamen.';
-$wb['email_error_isemail'] = 'Die E-Mail Adresse ist falsch.';
+$wb['email_error_isemail'] = 'Die E-Mail-Adresse ist falsch.';
 $wb['mailinglist_txt'] = 'Mailingliste';
 ?>
diff --git a/interface/web/mail/lib/lang/de_mail_relay_domain.lng b/interface/web/mail/lib/lang/de_mail_relay_domain.lng
index 6c0456a2c242ba694164f33ba5f1b35b11b2e6dd..334c59ccdb24d29105a7f29b93d9cc64bbaf47ec 100644
--- a/interface/web/mail/lib/lang/de_mail_relay_domain.lng
+++ b/interface/web/mail/lib/lang/de_mail_relay_domain.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['mail_relay_domain_title'] = 'Email relay domain';
-$wb['tab_relay_domain_title'] = 'Relay domain';
+$wb['mail_relay_domain_title'] = 'E-Mail-Relay-Domain';
+$wb['tab_relay_domain_title'] = 'Relay-Domain';
 $wb['server_id_txt'] = 'Server';
 $wb['active_txt'] = 'Aktiv';
 $wb['domain_txt'] = 'Domain';
-$wb['domain_error_regex'] = 'Domain Name ist nicht gültig.';
+$wb['domain_error_regex'] = 'Domainname ist nicht gültig.';
 $wb['domain_error_empty'] = 'Domain ist leer.';
-$wb['domain_error_unique'] = 'This Domain already exists as a mail relay domain on this server.';
+$wb['domain_error_unique'] = 'Diese Domain existiert bereits als Mail-Relay-Domain auf diesem Server.';
diff --git a/interface/web/mail/lib/lang/de_mail_relay_domain_list.lng b/interface/web/mail/lib/lang/de_mail_relay_domain_list.lng
index 833a055963ee2389b0b93216ce1554142eef59ce..2565f0bfa406c34a086dd7efa32a56bd01eb6b7a 100644
--- a/interface/web/mail/lib/lang/de_mail_relay_domain_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_relay_domain_list.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['list_head_txt'] = 'Relay domains';
+$wb['list_head_txt'] = 'Relay-Domains';
 $wb['active_txt'] = 'Aktiv';
 $wb['server_id_txt'] = 'Server';
 $wb['domain_txt'] = 'Domain';
-$wb['add_new_record_txt'] = 'Add new relay domain';
+$wb['add_new_record_txt'] = 'Neue Relay-Domain hinzufügen';
 $wb['access_txt'] = 'Zugriff';
diff --git a/interface/web/mail/lib/lang/de_mail_relay_recipient.lng b/interface/web/mail/lib/lang/de_mail_relay_recipient.lng
index 37a2401071f823af3e057d049c091af5cd2783ff..9d78836f702657856f56fb6460ef7df7a3e1c692 100644
--- a/interface/web/mail/lib/lang/de_mail_relay_recipient.lng
+++ b/interface/web/mail/lib/lang/de_mail_relay_recipient.lng
@@ -1,9 +1,9 @@
 <?php
 $wb['server_id_txt'] = 'Server';
-$wb['source_txt'] = 'Relay Empfänger';
+$wb['source_txt'] = 'Relay-Empfänger';
 $wb['recipient_txt'] = 'Empfänger';
 $wb['active_txt'] = 'Aktiv';
 $wb['source_error_notempty'] = 'Adresse ist leer.';
 $wb['type_txt'] = 'Typ';
-$wb['limit_mailfilter_txt'] = 'Die maximale Anzahl an E-Mail Filtern für Ihr Konto wurde erreicht.';
+$wb['limit_mailfilter_txt'] = 'Die maximale Anzahl an E-Mail-Filtern für Ihr Konto wurde erreicht.';
 ?>
diff --git a/interface/web/mail/lib/lang/de_mail_relay_recipient_list.lng b/interface/web/mail/lib/lang/de_mail_relay_recipient_list.lng
index fc5d6f47c545a835f0f438b46064e289cf69450b..61dcab1d3430d87b02232b12f80718f9c4a0cb4d 100644
--- a/interface/web/mail/lib/lang/de_mail_relay_recipient_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_relay_recipient_list.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['list_head_txt'] = 'Relay Empfänger';
+$wb['list_head_txt'] = 'Relay-Empfänger';
 $wb['active_txt'] = 'Aktiv';
 $wb['server_id_txt'] = 'Server';
-$wb['source_txt'] = 'Empfänger Adresse';
+$wb['source_txt'] = 'Empfängeradresse';
 $wb['recipient_txt'] = 'Empfänger';
-$wb['add_new_record_txt'] = 'Neuen Relay Empfänger hinzufügen';
+$wb['add_new_record_txt'] = 'Neuen Relay-Empfänger hinzufügen';
 $wb['access_txt'] = 'Zugriff';
 ?>
diff --git a/interface/web/mail/lib/lang/de_mail_spamfilter.lng b/interface/web/mail/lib/lang/de_mail_spamfilter.lng
index b133a4129ba560d85003c1e50c27a57b77ca450c..7af10884c10c95e0edba8e2d063a952f3b63a0e8 100644
--- a/interface/web/mail/lib/lang/de_mail_spamfilter.lng
+++ b/interface/web/mail/lib/lang/de_mail_spamfilter.lng
@@ -1,17 +1,17 @@
 <?php
 $wb['email_txt'] = 'E-Mail';
-$wb['spam_rewrite_score_int_txt'] = 'Rewrite Bewertung';
-$wb['spam_redirect_score_int_txt'] = 'Redirect Bewertung';
+$wb['spam_rewrite_score_int_txt'] = 'Rewrite-Bewertung';
+$wb['spam_redirect_score_int_txt'] = 'Redirect-Bewertung';
 $wb['spam_delete_score_int_txt'] = 'Bewertung löschen';
-$wb['spam_rewrite_subject_txt'] = 'Rewrite Betreff';
-$wb['spam_redirect_maildir_txt'] = 'Redirect E-Mail Konto';
+$wb['spam_rewrite_subject_txt'] = 'Rewrite-Betreff';
+$wb['spam_redirect_maildir_txt'] = 'Redirect E-Mail-Konto';
 $wb['active_txt'] = 'Aktiv';
-$wb['spam_rewrite_txt'] = 'Schreibe E-Mail Betreff über dieser Bewertung um.';
-$wb['spam_redirect_txt'] = 'Leite E-Mails über dieser Bewertung zur ausgewähltem E-Mail Konto weiter.';
+$wb['spam_rewrite_txt'] = 'Schreibe E-Mail-Betreff über dieser Bewertung um.';
+$wb['spam_redirect_txt'] = 'Leite E-Mails über dieser Bewertung zur ausgewähltem E-Mail-Konto weiter.';
 $wb['spam_delete_txt'] = 'Lösche E-Mails über dieser Bewertung.';
 $wb['disable_txt'] = 'Tipp: Um eine Filteroption zu deaktivieren, müssen Sie die Bewertung auf 0.00 setzen.';
-$wb['email_error_isemail'] = 'E-Mail Adresse ist ungültig.';
-$wb['email_error_unique'] = 'Es existiert bereits ein Spamfilter Eintrag für diese E-Mail Adresse.';
-$wb['spam_redirect_maildir_purge_txt'] = 'Lösche E-Mail Verzeichnis nach';
+$wb['email_error_isemail'] = 'E-Mail-Adresse ist ungültig.';
+$wb['email_error_unique'] = 'Es existiert bereits ein Spamfilter Eintrag für diese E-Mail-Adresse.';
+$wb['spam_redirect_maildir_purge_txt'] = 'Lösche E-Mail-Verzeichnis nach';
 $wb['days_txt'] = 'Tagen.';
 ?>
diff --git a/interface/web/mail/lib/lang/de_mail_transport.lng b/interface/web/mail/lib/lang/de_mail_transport.lng
index 724882866f968c6d4ac11da1576c41d781db4d90..9ed6c36375631c18481066f9ac43d99dc628ce62 100644
--- a/interface/web/mail/lib/lang/de_mail_transport.lng
+++ b/interface/web/mail/lib/lang/de_mail_transport.lng
@@ -3,9 +3,9 @@ $wb['server_id_txt'] = 'Server';
 $wb['domain_txt'] = 'Domain';
 $wb['destination_txt'] = 'Ziel';
 $wb['type_txt'] = 'Typ';
-$wb['mx_txt'] = 'Kein MX Lookup';
+$wb['mx_txt'] = 'Kein MX-Lookup';
 $wb['sort_order_txt'] = 'Sortiert nach';
 $wb['active_txt'] = 'Aktiv';
-$wb['limit_mailrouting_txt'] = 'Die maximale Anzahl an E-Mail Routen für Ihr Konto wurde erreicht.';
+$wb['limit_mailrouting_txt'] = 'Die maximale Anzahl an E-Mail-Routen für Ihr Konto wurde erreicht.';
 $wb['transport_txt'] = 'Transport';
-$wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.';
+$wb['domain_error_unique'] = 'Ein Mail-Transport für diese Domain existiert bereits auf diesem Server.';
diff --git a/interface/web/mail/lib/lang/de_mail_transport_list.lng b/interface/web/mail/lib/lang/de_mail_transport_list.lng
index 6c9f8656c4ed90fdef951f6d1de59673a3bb189d..713c2a766e444255e22b1705b0c3c49f5453bb27 100644
--- a/interface/web/mail/lib/lang/de_mail_transport_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_transport_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'E-Mail Routing';
+$wb['list_head_txt'] = 'E-Mail-Routing';
 $wb['active_txt'] = 'Aktiv';
 $wb['server_id_txt'] = 'Server';
 $wb['domain_txt'] = 'Domain';
diff --git a/interface/web/mail/lib/lang/de_mail_user.lng b/interface/web/mail/lib/lang/de_mail_user.lng
index 0fc31e8446d5730772a6aaedb53e0c5adefcdd07..e2a9d6e90145e32da56e336a92850936d0a7cfa8 100644
--- a/interface/web/mail/lib/lang/de_mail_user.lng
+++ b/interface/web/mail/lib/lang/de_mail_user.lng
@@ -1,11 +1,11 @@
 <?php
-$wb['custom_mailfilter_txt'] = 'Benutzerdefinierte E-Mailfilter Regel';
+$wb['custom_mailfilter_txt'] = 'Benutzerdefinierte E-Mail-Filterregel';
 $wb['email_txt'] = 'E-Mail';
 $wb['cryptpwd_txt'] = 'Passwort';
 $wb['active_txt'] = 'Aktiv';
-$wb['email_error_isemail'] = 'E-Mail Adresse ist ungültig.';
-$wb['email_error_unique'] = 'Doppelte E-Mail Adresse.';
-$wb['autoresponder_subject_txt'] = 'E-Mail Betreff';
+$wb['email_error_isemail'] = 'E-Mail-Adresse ist ungültig.';
+$wb['email_error_unique'] = 'Doppelte E-Mail-Adresse.';
+$wb['autoresponder_subject_txt'] = 'E-Mail-Betreff';
 $wb['autoresponder_subject'] = 'Abwesenheitsnotiz';
 $wb['autoresponder_text_txt'] = 'Text';
 $wb['autoresponder_txt'] = 'Autoresponder';
@@ -15,15 +15,15 @@ $wb['quota_error_isint'] = 'E-Mailkontogröße muss eine Zahl sein.';
 $wb['quota_txt'] = 'Beschränkung';
 $wb['server_id_txt'] = 'Server ID';
 $wb['password_txt'] = 'Passwort';
-$wb['maildir_txt'] = 'E-Mail Verzeichnis';
+$wb['maildir_txt'] = 'E-Mail-Verzeichnis';
 $wb['postfix_txt'] = 'Aktiviere Empfang';
 $wb['tooltip_postfix_txt'] = 'Lässt eingehende E-Mails an diese E-Mail-Adresse zu.';
 $wb['greylisting_txt'] = 'Aktiviere Greylisting';
 $wb['access_txt'] = 'Aktiviere Zugriff';
 $wb['policy_txt'] = 'Spamfilter';
-$wb['inherit_policy'] = '- Inherit domain setting -';
-$wb['limit_mailbox_txt'] = 'Die maximale Anzahl an E-Mailkonten für Ihr Konto wurde erreicht.';
-$wb['limit_mailquota_txt'] = 'Der maximale Speicherplatz für Ihr E-Mail Konto wurde erreicht. Der maximal verfügbare Speicher in MB ist';
+$wb['inherit_policy'] = '- Vererbung der Domäneneinstellung -';
+$wb['limit_mailbox_txt'] = 'Die maximale Anzahl an E-Mail-Konten für Ihr Konto wurde erreicht.';
+$wb['limit_mailquota_txt'] = 'Der maximale Speicherplatz für Ihr E-Mail-Konto wurde erreicht. Der maximal verfügbare Speicher in MB ist';
 $wb['disablesmtp_txt'] = 'SMTP (Mailversand) deaktivieren';
 $wb['tooltip_disablesmtp_txt'] = 'Deaktiviert den Versand von E-Mails von diesem E-Mail-Konto.';
 $wb['disabledeliver_txt'] = 'Deaktiviere lokale Zustellung';
@@ -31,13 +31,13 @@ $wb['tooltip_disabledeliver_txt'] = 'Deaktiviert die Zustellung in den Posteinga
 $wb['disableimap_txt'] = 'IMAP deaktivieren';
 $wb['disablepop3_txt'] = 'POP3 deaktivieren';
 $wb['password_strength_txt'] = 'Passwortkomplexität';
-$wb['duplicate_alias_or_forward_txt'] = 'Es existiert bereits ein Alias oder eine Weiterleitung mit dieser E-Mail Adresse.';
+$wb['duplicate_alias_or_forward_txt'] = 'Es existiert bereits ein Alias oder eine Weiterleitung mit dieser E-Mail-Adresse.';
 $wb['quota_error_value'] = 'Ungültige Beschränkungseingabe. Erlaubte Größen sind: 0 für unlimitiert oder Nummern > 1';
 $wb['autoresponder_start_date_txt'] = 'Startet am';
 $wb['autoresponder_start_date_ispast'] = 'Startdatum kann nicht in der Vergangenheit liegen.';
 $wb['autoresponder_end_date_txt'] = 'Endet am';
 $wb['autoresponder_end_date_isgreater'] = 'Enddatum muss angegeben werden und muss später als das Startdatum sein.';
-$wb['move_junk_txt'] = 'Spam E-Mails in den Junk-Ordner verschieben';
+$wb['move_junk_txt'] = 'Spam-E-Mails in den Junk-Ordner verschieben';
 $wb['move_junk_y_txt'] = 'Zuerst verschieben, vor benutzerdefinierten Filtern.';
 $wb['move_junk_a_txt'] = 'Als Letztes verschieben, nach benutzerdefinierten Filtern.';
 $wb['move_junk_n_txt'] = 'Spam-E-Mails nicht in den Junk-Ordner verschieben.';
@@ -45,13 +45,13 @@ $wb['name_txt'] = 'Name';
 $wb['name_optional_txt'] = '(optional)';
 $wb['autoresponder_active'] = 'Autoresponder aktivieren';
 $wb['cc_txt'] = 'Eingehende Mails in Kopie senden an';
-$wb['cc_error_isemail'] = 'Das Feld "Kopie senden an" enthält keine gültige E-Mail Adresse';
+$wb['cc_error_isemail'] = 'Das Feld "Kopie senden an" enthält keine gültige E-Mail-Adresse';
 $wb['forward_in_lda_txt'] = 'Kopiere E-Mail während der Zustellung';
 $wb['tooltip_forward_in_lda_txt'] = 'Legt fest, ob die E-Mail-Kopie vor oder während der Zustellung an die Mailbox weitergeleitet werden soll.';
 $wb['login_error_unique'] = 'Benutzername wird bereits verwendet.';
 $wb['login_error_regex'] = 'Zulässige Zeichen sind A-Z, a-z, 0-9, ., _ und -.';
 $wb['login_txt'] = 'Anmelden';
-$wb['error_login_email_txt'] = 'Dieser Benutzername ist nicht zulässig. Bitte verwenden Sie einen anderen Benutzernamen oder die E-Mail Adresse als Benutzername.';
+$wb['error_login_email_txt'] = 'Dieser Benutzername ist nicht zulässig. Bitte verwenden Sie einen anderen Benutzernamen oder die E-Mail-Adresse als Benutzername.';
 $wb['domain_txt'] = 'Domain';
 $wb['now_txt'] = 'Jetzt';
 $wb['generate_password_txt'] = 'Passwort erzeugen';
@@ -67,14 +67,14 @@ $wb['weekly_backup_txt'] = 'wöchentlich';
 $wb['monthly_backup_txt'] = 'monatlich';
 $wb['cc_note_txt'] = '(Mehrere E-Mail-Adressen mit Kommas trennen)';
 $wb['sender_cc_txt'] = 'Kopie ausgehender Emails senden an (BCC)';
-$wb['sender_cc_error_isemail'] = '-Kopie ausgehender Emails senden an- Feld enthält keine gültige Emailadresse';
+$wb['sender_cc_error_isemail'] = '-Kopie ausgehender E-Mails senden an- Feld enthält keine gültige E-Mail-Adresse';
 $wb['sender_cc_note_txt'] = '(Nur eine E-Mail-Adresse)';
 $wb['password_click_to_set_txt'] = 'Passwort erzeugen';
 $wb['purge_trash_days_txt'] = 'Papierkorb automatisch nach X Tagen leeren';
 $wb['tooltip_purge_trash_days_txt'] = '0 = deaktiviert';
 $wb['purge_junk_days_txt'] = 'Junk-Ordner automatisch nach X Tagen leeren';
 $wb['tooltip_purge_junk_days_txt'] = '0 = deaktiviert';
-$wb['imap_prefix_txt'] = 'IMAP prefix';
-$wb['tooltip_imap_prefix_txt'] = 'In most cases this should be left empty.  To allow seamless per-mailbox migration of legacy systems you can specify a prefix followed by the hierarchy separator. e.g.: \'INBOX.\'';
+$wb['imap_prefix_txt'] = 'IMAP-Präfix';
+$wb['tooltip_imap_prefix_txt'] = 'In den meisten Fällen sollte dies leer gelassen werden. Um eine nahtlose Migration von Altsystemen zu ermöglichen, können Sie ein Präfix, gefolgt vom Hierarchietrennzeichen, angeben, z. B: \'INBOX.\'';
 ?>
 
diff --git a/interface/web/mail/lib/lang/de_mail_user_filter.lng b/interface/web/mail/lib/lang/de_mail_user_filter.lng
index 13be430c80b58a8754946e4ecfd8bac92577e684..14e7b162644a9466bda6c129fffe4d0c2d2c229f 100644
--- a/interface/web/mail/lib/lang/de_mail_user_filter.lng
+++ b/interface/web/mail/lib/lang/de_mail_user_filter.lng
@@ -7,7 +7,7 @@ $wb['rulename_error_empty'] = 'Name ist leer.';
 $wb['searchterm_is_empty'] = 'Suchbegriff ist leer.';
 $wb['source_txt'] = 'Quelle';
 $wb['target_error_regex'] = 'Das Ziel beinhaltet wahrscheinlich diese Zeichen: a-z, 0-9, -, ., _, &, /, und {space}';
-$wb['limit_mailfilter_txt'] = 'Die maximale Anzahl an E-Mail Filtern für Ihr Konto wurde erreicht.';
+$wb['limit_mailfilter_txt'] = 'Die maximale Anzahl an E-Mail-Filtern für Ihr Konto wurde erreicht.';
 $wb['subject_txt'] = 'Betreff';
 $wb['from_txt'] = 'Von';
 $wb['to_txt'] = 'An';
@@ -20,8 +20,8 @@ $wb['regex_txt'] = 'Matches Regex';
 $wb['move_stop_txt'] = 'Verschieben nach';
 $wb['delete_txt'] = 'Löschen';
 $wb['header_txt'] = 'Header';
-$wb['size_over_txt'] = 'Email ist größer als (KB)';
-$wb['size_under_txt'] = 'Email ist kleiner als (KB)';
+$wb['size_over_txt'] = 'E-Mail ist größer als (KB)';
+$wb['size_under_txt'] = 'E-Mail ist kleiner als (KB)';
 $wb['localpart_txt'] = 'Localpart';
 $wb['domain_txt'] = 'Domain';
 $wb['keep_txt'] = 'Behalten';
diff --git a/interface/web/mail/lib/lang/de_mail_user_list.lng b/interface/web/mail/lib/lang/de_mail_user_list.lng
index b1ebb2fd1dd9afa307f1e4c5ba4a4689caf18098..d42804d14beb1b5f8074bcb8a312561e510c8ac9 100644
--- a/interface/web/mail/lib/lang/de_mail_user_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_user_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'E-Mail Konto';
-$wb['email_txt'] = 'E-Mail Adresse';
+$wb['list_head_txt'] = 'E-Mail-Konto';
+$wb['email_txt'] = 'E-Mail-Adresse';
 $wb['autoresponder_txt'] = 'Autoresponder';
-$wb['add_new_record_txt'] = 'Neues E-Mail Konto hinzufügen';
+$wb['add_new_record_txt'] = 'Neues E-Mail-Konto hinzufügen';
 $wb['name_txt'] = 'Name';
 $wb['login_txt'] = 'Anmelden';
 $wb['postfix_txt'] = 'Empfang';
diff --git a/interface/web/mail/lib/lang/de_mail_user_stats_list.lng b/interface/web/mail/lib/lang/de_mail_user_stats_list.lng
index ef0b0c5157a8a5a82829092996cf68e491eca998..f5edb683ed0dd763c48d83be3da9a629ce64ad16 100644
--- a/interface/web/mail/lib/lang/de_mail_user_stats_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_user_stats_list.lng
@@ -1,6 +1,6 @@
 <?php
-$wb['list_head_txt'] = 'E-Mail Datenverkehr';
-$wb['email_txt'] = 'E-Mail Adresse';
+$wb['list_head_txt'] = 'E-Mail-Datenverkehr';
+$wb['email_txt'] = 'E-Mail-Adresse';
 $wb['this_month_txt'] = 'Aktueller Monat';
 $wb['last_month_txt'] = 'Vergangener Monat';
 $wb['this_year_txt'] = 'Aktuelles Jahr';
diff --git a/interface/web/mail/lib/lang/de_mail_whitelist.lng b/interface/web/mail/lib/lang/de_mail_whitelist.lng
index 04719f2479a9d6671fee9c8534d50891ebbfde03..1a7e5650cd86bc6998164b2e914396dbf5f76a18 100644
--- a/interface/web/mail/lib/lang/de_mail_whitelist.lng
+++ b/interface/web/mail/lib/lang/de_mail_whitelist.lng
@@ -1,12 +1,12 @@
 <?php
 $wb['server_id_txt'] = 'Server';
-$wb['source_txt'] = 'Whitelist E-Mail Adresse';
+$wb['source_txt'] = 'Whitelist-E-Mail-Adresse';
 $wb['recipient_txt'] = 'Empfänger';
 $wb['active_txt'] = 'Aktiv';
-$wb['source_error_notempty'] = 'E-Mail Adresse ist leer.';
+$wb['source_error_notempty'] = 'E-Mail-Adresse ist leer.';
 $wb['type_txt'] = 'Typ';
-$wb['limit_mailfilter_txt'] = 'Die maximale Anzahl an E-Mail Filtern für Ihr Konto wurde erreicht.';
-$wb['limit_mail_wblist_txt'] = 'The max. number of email white / blacklist for your account is reached.';
-$wb['mail_access_unique'] = 'Whitelist Address already in use.';
+$wb['limit_mailfilter_txt'] = 'Die maximale Anzahl an E-Mail-Filtern für Ihr Konto wurde erreicht.';
+$wb['limit_mail_wblist_txt'] = 'Die maximale Anzahl an White- oder Blacklist Einträgen für ihr Konto wurde erreicht.';
+$wb['mail_access_unique'] = 'Whitelist-E-Mail-Adresse wird bereits verwendet.';
 $wb['client_txt'] = 'Client';
 $wb['sender_txt'] = 'Sender';
diff --git a/interface/web/mail/lib/lang/de_mail_whitelist_list.lng b/interface/web/mail/lib/lang/de_mail_whitelist_list.lng
index bcd4ccb4e10e35320fbefee5751f88c7aac9c878..3d05e8df0631973aa0667b9066aec5b1f81c76d5 100644
--- a/interface/web/mail/lib/lang/de_mail_whitelist_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_whitelist_list.lng
@@ -1,10 +1,10 @@
 <?php
-$wb['list_head_txt'] = 'E-Mail Whitelist';
+$wb['list_head_txt'] = 'E-Mail-Whitelist';
 $wb['active_txt'] = 'Aktiv';
 $wb['server_id_txt'] = 'Server';
-$wb['source_txt'] = 'Whitelisted Adressen';
+$wb['source_txt'] = 'Whitelisted-Adressen';
 $wb['type_txt'] = 'Typ';
 $wb['recipient_txt'] = 'Empfänger';
-$wb['add_new_record_txt'] = 'Whitelist Eintrag hinzufügen';
+$wb['add_new_record_txt'] = 'Whitelist-Eintrag hinzufügen';
 $wb['access_txt'] = 'Zugriff';
 ?>
diff --git a/interface/web/mail/lib/lang/de_spamfilter_blacklist.lng b/interface/web/mail/lib/lang/de_spamfilter_blacklist.lng
index 63205a5ec18a0c9c8d7f86b8e08ea764bfe358b2..4c7e16d9aa2371f52ea232267b9ed41710db07d1 100644
--- a/interface/web/mail/lib/lang/de_spamfilter_blacklist.lng
+++ b/interface/web/mail/lib/lang/de_spamfilter_blacklist.lng
@@ -2,7 +2,7 @@
 $wb['server_id_txt'] = 'Server';
 $wb['wb_txt'] = 'wb';
 $wb['rid_txt'] = 'Benutzer';
-$wb['email_txt'] = 'E-Mail Adresse';
+$wb['email_txt'] = 'E-Mail-Adresse';
 $wb['priority_txt'] = 'Priorität';
 $wb['active_txt'] = 'Aktiv';
 $wb['limit_spamfilter_wblist_txt'] = 'Die maximale Anzahl an White- oder Blacklist Einträgen für ihr Konto wurde erreicht.';
diff --git a/interface/web/mail/lib/lang/de_spamfilter_blacklist_list.lng b/interface/web/mail/lib/lang/de_spamfilter_blacklist_list.lng
index 7ba623b657d32f07b475cf4d1170f1861a325564..ded5fa4303df8dbacfe5c7166272eb58a5e9dac2 100644
--- a/interface/web/mail/lib/lang/de_spamfilter_blacklist_list.lng
+++ b/interface/web/mail/lib/lang/de_spamfilter_blacklist_list.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['list_head_txt'] = 'Spamfilter Blacklist';
+$wb['list_head_txt'] = 'Spamfilter-Blacklist';
 $wb['active_txt'] = 'Aktiv';
 $wb['server_id_txt'] = 'Server';
 $wb['priority_txt'] = 'Priorität';
 $wb['rid_txt'] = 'Benutzer';
-$wb['email_txt'] = 'Blacklisted E-Mail Adressen';
-$wb['add_new_record_txt'] = 'Blacklist Eintrag hinzufügen';
+$wb['email_txt'] = 'Blacklisted-E-Mail-Adressen';
+$wb['add_new_record_txt'] = 'Blacklist-Eintrag hinzufügen';
 ?>
diff --git a/interface/web/mail/lib/lang/de_spamfilter_config.lng b/interface/web/mail/lib/lang/de_spamfilter_config.lng
index 2cf223259bcf07322277951765d98727183b69c7..f0c66e0e0f2c6a82c42fdf7f36b4f9ec7557f03e 100644
--- a/interface/web/mail/lib/lang/de_spamfilter_config.lng
+++ b/interface/web/mail/lib/lang/de_spamfilter_config.lng
@@ -1,20 +1,20 @@
 <?php
-$wb['getmail_config_dir_txt'] = 'Getmail Konfigurationspfad';
+$wb['getmail_config_dir_txt'] = 'Getmail-Konfigurationspfad';
 $wb['ip_address_txt'] = 'IP Adresse';
 $wb['netmask_txt'] = 'Netzmaske';
 $wb['gateway_txt'] = 'Gateway';
 $wb['hostname_txt'] = 'Hostname';
 $wb['nameservers_txt'] = 'Nameserver';
 $wb['module_txt'] = 'Server Module';
-$wb['maildir_path_txt'] = 'E-Mail Verzeichnis Pfad';
-$wb['homedir_path_txt'] = 'Home Verzeichnis Pfad';
-$wb['mailuser_uid_txt'] = 'E-Mail Benutzer UID';
-$wb['mailuser_gid_txt'] = 'E-Mail Benutzer GID';
-$wb['mailuser_name_txt'] = 'E-Mail Benutzer Name';
-$wb['mailuser_group_txt'] = 'E-Mail Benutzer Gruppe';
+$wb['maildir_path_txt'] = 'E-Mail-Verzeichnis-Pfad';
+$wb['homedir_path_txt'] = 'Home-Verzeichnis-Pfad';
+$wb['mailuser_uid_txt'] = 'E-Mail-Benutzer UID';
+$wb['mailuser_gid_txt'] = 'E-Mail-Benutzer GID';
+$wb['mailuser_name_txt'] = 'E-Mail-Benutzer Name';
+$wb['mailuser_group_txt'] = 'E-Mail-Benutzer Gruppe';
 $wb['relayhost_txt'] = 'Relayhost';
-$wb['relayhost_user_txt'] = 'Relayhost Benutzer';
-$wb['relayhost_password_txt'] = 'Relayhost Passwort';
-$wb['mailbox_size_limit_txt'] = 'E-Mail Kontogrössenlimit';
+$wb['relayhost_user_txt'] = 'Relayhost-Benutzer';
+$wb['relayhost_password_txt'] = 'Relayhost-Passwort';
+$wb['mailbox_size_limit_txt'] = 'E-Mail-Kontogrössenlimit';
 $wb['message_size_limit_txt'] = 'Nachrichtengrössenlimit';
 ?>
diff --git a/interface/web/mail/lib/lang/de_spamfilter_policy.lng b/interface/web/mail/lib/lang/de_spamfilter_policy.lng
index 1036fbf91c8f09bb6a263b729b39c72dfb5c92b1..26f982d4aed0d892e21fed7188f3d69dfba7f5ba 100644
--- a/interface/web/mail/lib/lang/de_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/de_spamfilter_policy.lng
@@ -1,40 +1,40 @@
 <?php
 $wb['policy_name_txt'] = 'Richtlinienname';
-$wb['virus_lover_txt'] = 'Virus Liebhaber';
-$wb['spam_lover_txt'] = 'SPAM Liebhaber';
-$wb['banned_files_lover_txt'] = 'Banned Files Liebhaber';
-$wb['bad_header_lover_txt'] = 'Bad Header Liebhaber';
+$wb['virus_lover_txt'] = 'Virus-Liebhaber';
+$wb['spam_lover_txt'] = 'SPAM-Liebhaber';
+$wb['banned_files_lover_txt'] = 'Banned-Files-Liebhaber';
+$wb['bad_header_lover_txt'] = 'Bad-Header-Liebhaber';
 $wb['bypass_virus_checks_txt'] = 'Umgehe Virus Überprüfungen';
 $wb['bypass_banned_checks_txt'] = 'Umgehe Banned Überprüfungen';
 $wb['bypass_header_checks_txt'] = 'Umgehe Header Überprüfungen';
-$wb['virus_quarantine_to_txt'] = 'Weiterleiten von Viren zur E-Mail Adresse';
-$wb['spam_quarantine_to_txt'] = 'Weiterleiten von Spam zur E-Mail Adresse';
-$wb['banned_quarantine_to_txt'] = 'Weiterleiten von Banned zur E-Mail Adresse';
-$wb['bad_header_quarantine_to_txt'] = 'Weiterleiten von Bad Header zur E-Mail Adresse';
-$wb['clean_quarantine_to_txt'] = 'Weiterleiten von sauberen E-Mails zur E-Mail Adresse';
-$wb['other_quarantine_to_txt'] = 'Weiterleiten von anderen E-Mails zur E-Mail Adresse';
-$wb['spam_tag_level_txt'] = 'SPAM Markierungslevel';
-$wb['spam_tag2_level_txt'] = 'SPAM Markierungslevel 2';
-$wb['spam_kill_level_txt'] = 'SPAM Markierungslevel Kill';
-$wb['spam_dsn_cutoff_level_txt'] = 'SPAM Markierungslevel DSN Cutoff';
-$wb['spam_quarantine_cutoff_level_txt'] = 'SPAM Markierungslevel Quarantine Cutoff';
+$wb['virus_quarantine_to_txt'] = 'Weiterleiten von Viren zur E-Mail-Adresse';
+$wb['spam_quarantine_to_txt'] = 'Weiterleiten von Spam zur E-Mail-Adresse';
+$wb['banned_quarantine_to_txt'] = 'Weiterleiten von Banned zur E-Mail-Adresse';
+$wb['bad_header_quarantine_to_txt'] = 'Weiterleiten von Bad Header zur E-Mail-Adresse';
+$wb['clean_quarantine_to_txt'] = 'Weiterleiten von sauberen E-Mails zur E-Mail-Adresse';
+$wb['other_quarantine_to_txt'] = 'Weiterleiten von anderen E-Mails zur E-Mail-Adresse';
+$wb['spam_tag_level_txt'] = 'SPAM-Markierungslevel';
+$wb['spam_tag2_level_txt'] = 'SPAM-Markierungslevel 2';
+$wb['spam_kill_level_txt'] = 'SPAM-Markierungslevel Kill';
+$wb['spam_dsn_cutoff_level_txt'] = 'SPAM-Markierungslevel DSN Cutoff';
+$wb['spam_quarantine_cutoff_level_txt'] = 'SPAM-Markierungslevel Quarantine Cutoff';
 $wb['spam_modifies_subj_txt'] = 'SPAM ändert Betreff';
-$wb['spam_subject_tag_txt'] = 'SPAM Betreff Markierung';
-$wb['spam_subject_tag2_txt'] = 'SPAM Betreff Markierung 2';
+$wb['spam_subject_tag_txt'] = 'SPAM-Betreff-Markierung';
+$wb['spam_subject_tag2_txt'] = 'SPAM-Betreff-Markierung 2';
 $wb['addr_extension_virus_txt'] = 'Adresserweiterung Virus';
 $wb['addr_extension_spam_txt'] = 'Adresserweiterung SPAM';
 $wb['addr_extension_banned_txt'] = 'Adresserweiterung Banned';
 $wb['addr_extension_bad_header_txt'] = 'Adresserweiterung Bad Header';
-$wb['warnvirusrecip_txt'] = 'Warne Virus Empfänger';
-$wb['warnbannedrecip_txt'] = 'Warne Banned Empfänger';
-$wb['warnbadhrecip_txt'] = 'Warne Bad Header Empfänger';
-$wb['newvirus_admin_txt'] = 'Newvirus Administrator';
-$wb['virus_admin_txt'] = 'Virus Administrator';
-$wb['banned_admin_txt'] = 'Banned Administrator';
-$wb['bad_header_admin_txt'] = 'Bad Header Administrator';
-$wb['spam_admin_txt'] = 'SPAM Administrator';
+$wb['warnvirusrecip_txt'] = 'Warne Virus-Empfänger';
+$wb['warnbannedrecip_txt'] = 'Warne Banned-Empfänger';
+$wb['warnbadhrecip_txt'] = 'Warne Bad-Header-Empfänger';
+$wb['newvirus_admin_txt'] = 'Newvirus-Administrator';
+$wb['virus_admin_txt'] = 'Virus-Administrator';
+$wb['banned_admin_txt'] = 'Banned-Administrator';
+$wb['bad_header_admin_txt'] = 'Bad-Header-Administrator';
+$wb['spam_admin_txt'] = 'SPAM-Administrator';
 $wb['message_size_limit_txt'] = 'Nachrichtengrößen Limit';
-$wb['banned_rulenames_txt'] = 'Banned Richtliniennamen';
+$wb['banned_rulenames_txt'] = 'Banned-Richtliniennamen';
 $wb['rspamd_greylisting_txt'] = 'Greylisting nutzen';
 $wb['rspamd_spam_greylisting_level_txt'] = 'Greylisting-Level';
 $wb['rspamd_spam_tag_level_txt'] = 'SPAM-Markierungslevel';
diff --git a/interface/web/mail/lib/lang/de_spamfilter_policy_list.lng b/interface/web/mail/lib/lang/de_spamfilter_policy_list.lng
index b5ec8e98c2d57e48e05b415ca69add0d8cb43f38..3ada6c9dc06b19d8a0c63e7b2da2bba8b3820e7f 100644
--- a/interface/web/mail/lib/lang/de_spamfilter_policy_list.lng
+++ b/interface/web/mail/lib/lang/de_spamfilter_policy_list.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['list_head_txt'] = 'Spamfilter Richtlinie';
+$wb['list_head_txt'] = 'Spamfilter-Richtlinie';
 $wb['policy_name_txt'] = 'Name';
-$wb['virus_lover_txt'] = 'Virus Liebhaber';
-$wb['spam_lover_txt'] = 'Spam Liebhaber';
-$wb['banned_files_lover_txt'] = 'Gesperrte Dateien Liebhaber';
-$wb['bad_header_lover_txt'] = 'Ungültige Header Liebhaber';
-$wb['add_new_record_txt'] = 'Richtlinien Eintrag hinzufügen';
+$wb['virus_lover_txt'] = 'Virus-Liebhaber';
+$wb['spam_lover_txt'] = 'Spam-Liebhaber';
+$wb['banned_files_lover_txt'] = 'Gesperrte-Dateien-Liebhaber';
+$wb['bad_header_lover_txt'] = 'Ungültige-Header-Liebhaber';
+$wb['add_new_record_txt'] = 'Richtlinien-Eintrag hinzufügen';
 ?>
diff --git a/interface/web/mail/lib/lang/de_spamfilter_users.lng b/interface/web/mail/lib/lang/de_spamfilter_users.lng
index d6b148cbe3153ab5343b5faaeffd2b925d0693ac..25171a837dcf5355225abae57e78d65c9acac6be 100644
--- a/interface/web/mail/lib/lang/de_spamfilter_users.lng
+++ b/interface/web/mail/lib/lang/de_spamfilter_users.lng
@@ -10,4 +10,4 @@ $wb['fullname_error_notempty'] = 'Der Name darf nicht leer sein.';
 $wb['10 - highest'] = '10 - höchste';
 $wb['5 - medium'] = '5 - normal';
 $wb['1 - lowest'] = '1 - niedrigste';
-$wb['inherit_policy'] = '- Inherit domain setting -';
+$wb['inherit_policy'] = '- Vererbung der Domäneneinstellung -';
diff --git a/interface/web/mail/lib/lang/de_spamfilter_whitelist.lng b/interface/web/mail/lib/lang/de_spamfilter_whitelist.lng
index fc6be5baeda96e91732ecdf682ac783636db552e..55f69f463b26a89e69563dcdac1d1f7dbc4e7e0c 100644
--- a/interface/web/mail/lib/lang/de_spamfilter_whitelist.lng
+++ b/interface/web/mail/lib/lang/de_spamfilter_whitelist.lng
@@ -2,7 +2,7 @@
 $wb['server_id_txt'] = 'Server';
 $wb['wb_txt'] = 'wb';
 $wb['rid_txt'] = 'Benutzer';
-$wb['email_txt'] = 'E-Mail Adresse';
+$wb['email_txt'] = 'E-Mail-Adresse';
 $wb['priority_txt'] = 'Priorität';
 $wb['active_txt'] = 'Aktiv';
 $wb['limit_spamfilter_wblist_txt'] = 'Die maximale Anzahl an White- oder Blacklist Einträgen für Ihr Konto wurde erreicht.';
diff --git a/interface/web/mail/lib/lang/de_spamfilter_whitelist_list.lng b/interface/web/mail/lib/lang/de_spamfilter_whitelist_list.lng
index 4d7769d2aa3eb3dc8e25e7b3c51556b5bb40012c..5c93be8ccdcec4f7652411d3bbc4c2f97dd87959 100644
--- a/interface/web/mail/lib/lang/de_spamfilter_whitelist_list.lng
+++ b/interface/web/mail/lib/lang/de_spamfilter_whitelist_list.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['list_head_txt'] = 'Spamfilter Whitelist';
+$wb['list_head_txt'] = 'Spamfilter-Whitelist';
 $wb['active_txt'] = 'Aktiv';
 $wb['server_id_txt'] = 'Server';
 $wb['priority_txt'] = 'Priorität';
 $wb['rid_txt'] = 'Benutzer';
-$wb['email_txt'] = 'Whitelisted E-Mail Adresse';
-$wb['add_new_record_txt'] = 'Whitelist Eintrag hinzufügen';
+$wb['email_txt'] = 'Whitelisted-E-Mail-Adresse';
+$wb['add_new_record_txt'] = 'Whitelist-Eintrag hinzufügen';
 ?>
diff --git a/interface/web/mail/lib/lang/de_user_quota_stats_list.lng b/interface/web/mail/lib/lang/de_user_quota_stats_list.lng
index beb9c18eb9f8ba1de9fb80437875b64b642b88d6..90f28f396db92eff4892f50c58e2081f9b29d9ef 100644
--- a/interface/web/mail/lib/lang/de_user_quota_stats_list.lng
+++ b/interface/web/mail/lib/lang/de_user_quota_stats_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'E-Mail Kontobeschränkung';
+$wb['list_head_txt'] = 'E-Mail-Kontobeschränkung';
 $wb['quota_txt'] = 'Verfügbarer Speicherplatz';
 $wb['name_txt'] = 'Name';
-$wb['email_txt'] = 'E-Mail Adresse';
+$wb['email_txt'] = 'E-Mail-Adresse';
 $wb['used_txt'] = 'Verbrauchter Speicherplatz';
 $wb['percentage_txt'] = 'Verbraucht in %';
 ?>
diff --git a/interface/web/mail/lib/lang/de_xmpp_domain.lng b/interface/web/mail/lib/lang/de_xmpp_domain.lng
index 0541203b2e19bc1658e140470cb0375f774c7e0a..520b5154da05d126543ca5b4fd6b1c504b9ce12c 100644
--- a/interface/web/mail/lib/lang/de_xmpp_domain.lng
+++ b/interface/web/mail/lib/lang/de_xmpp_domain.lng
@@ -1,62 +1,62 @@
 <?php
 $wb['server_id_txt'] = 'Server';
-$wb['client_group_id_txt'] = 'Client';
+$wb['client_group_id_txt'] = 'Kunde';
 $wb['domain_txt'] = 'Domain';
-$wb['type_txt'] = 'Type';
-$wb['active_txt'] = 'Active';
-$wb['client_txt'] = 'Client';
-$wb['management_method_txt'] = 'Management of user accounts';
-$wb['public_registration_txt'] = 'Enable public registration';
-$wb['registration_url_txt'] = 'Registration URL';
-$wb['registration_message_txt'] = 'Registration Message';
-$wb['domain_admins_txt'] = 'Domain Admins (JIDs)';
-$wb['use_pubsub_txt'] = 'Enable Pubsub';
-$wb['use_proxy_txt'] = 'Enable Bytestream Proxy';
-$wb['use_anon_host_txt'] = 'Enable Anonymous Host';
-$wb['use_vjud_txt'] = 'Enable VJUD User Directory';
-$wb['vjud_opt_mode_txt'] = 'VJUD Opt Mode';
-$wb['use_muc_host_txt'] = 'Enable Multi User Chatrooms';
-$wb['muc_name_txt'] = 'Name in MUC Service Discovery';
-$wb['muc_restrict_room_creation_txt'] = 'Permission to create chatrooms';
+$wb['type_txt'] = 'Typ';
+$wb['active_txt'] = 'Aktiv';
+$wb['client_txt'] = 'Kunde';
+$wb['management_method_txt'] = 'Verwaltung der Benutzerkonten';
+$wb['public_registration_txt'] = 'Öffentliche Registrierung ermöglichen';
+$wb['registration_url_txt'] = 'Anmelde-URL';
+$wb['registration_message_txt'] = 'Registrierungsnachricht';
+$wb['domain_admins_txt'] = 'Domain-Administratoren (JIDs)';
+$wb['use_pubsub_txt'] = 'Aktiviere Pubsub';
+$wb['use_proxy_txt'] = 'Aktiviere Bytestream-Proxy';
+$wb['use_anon_host_txt'] = 'Aktiviere Anonymous-Host';
+$wb['use_vjud_txt'] = 'Aktiviere VJUD-Benutzerverzeichnis';
+$wb['vjud_opt_mode_txt'] = 'VJUD-Opt-Mode';
+$wb['use_muc_host_txt'] = 'Aktiviere Multi-User-Chaträume';
+$wb['muc_name_txt'] = 'Name in MUC-Service-Discovery';
+$wb['muc_restrict_room_creation_txt'] = 'Erlaubnis zur Einrichtung von Chaträumen';
 $wb['muc_admins_txt'] = 'MUC Admins (JIDs)';
-$wb['use_pastebin_txt'] = 'Enable Pastebin';
-$wb['pastebin_expire_after_txt'] = 'Pastes expire after (hours)';
-$wb['pastebin_trigger_txt'] = 'Pastebin trigger';
-$wb['use_http_archive_txt'] = 'Enable HTTP chatroom archive';
-$wb['http_archive_show_join_txt'] = 'Show join messages in archive';
-$wb['http_archive_show_status_txt'] = 'Show status changes in archive';
-$wb['use_status_host_txt'] = 'Enable XML Status host';
-$wb['cant_change_domainname_txt'] = 'The Domain name of existing XMPP domain cannot be changed.';
-$wb['about_registration_url_txt'] = 'Link to your registration form.';
-$wb['about_registration_message_txt'] = 'Description about your account registration process.';
-$wb['no_corresponding_maildomain_txt'] = 'Corresponding mail domain for user management not found. Please create the mail domain first.';
-$wb['ssl_state_txt'] = 'State';
-$wb['ssl_locality_txt'] = 'Locality';
-$wb['ssl_organisation_txt'] = 'Organisation';
-$wb['ssl_organisation_unit_txt'] = 'Organisation Unit';
-$wb['ssl_country_txt'] = 'Country';
-$wb['ssl_key_txt'] = 'SSL Key';
-$wb['ssl_request_txt'] = 'SSL Request';
-$wb['ssl_cert_txt'] = 'SSL Certificate';
-$wb['ssl_bundle_txt'] = 'SSL Bundle';
-$wb['ssl_action_txt'] = 'SSL Action';
-$wb['ssl_email_txt'] = 'Email Address';
+$wb['use_pastebin_txt'] = 'Aktiviere Pastebin';
+$wb['pastebin_expire_after_txt'] = 'Pastes verfallen nach (Stunden)';
+$wb['pastebin_trigger_txt'] = 'Pastebin-Trigger';
+$wb['use_http_archive_txt'] = 'HTTP-Chatraum-Archive aktivieren';
+$wb['http_archive_show_join_txt'] = 'Beitrittsnachrichten im Archiv anzeigen';
+$wb['http_archive_show_status_txt'] = 'Statusänderungen im Archiv anzeigen';
+$wb['use_status_host_txt'] = 'Aktiviere XML-Status-Host';
+$wb['cant_change_domainname_txt'] = 'Der Domainname der bestehenden XMPP-Domain kann nicht geändert werden.';
+$wb['about_registration_url_txt'] = 'Link zum Registrierungsformular.';
+$wb['about_registration_message_txt'] = 'Beschreibung des Registrierungsprozesses für Ihr Konto.';
+$wb['no_corresponding_maildomain_txt'] = 'Entsprechende Mail-Domain für die Benutzerverwaltung nicht gefunden. Bitte erstellen Sie zuerst die Mail-Domain.';
+$wb['ssl_state_txt'] = 'Bundesland';
+$wb['ssl_locality_txt'] = 'Ort';
+$wb['ssl_organisation_txt'] = 'Firma';
+$wb['ssl_organisation_unit_txt'] = 'Organisationseinheit';
+$wb['ssl_country_txt'] = 'Land';
+$wb['ssl_key_txt'] = 'SSL-Key';
+$wb['ssl_request_txt'] = 'SSL-Request';
+$wb['ssl_cert_txt'] = 'SSL-Zertifikat';
+$wb['ssl_bundle_txt'] = 'SSL-Bundle';
+$wb['ssl_action_txt'] = 'SSL-Action';
+$wb['ssl_email_txt'] = 'E-Mail-Adresse';
 $wb['ssl_txt'] = 'SSL';
-$wb['error_ssl_state_empty'] = 'SSL State is empty.';
-$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.';
-$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.';
-$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.';
-$wb['error_ssl_country_empty'] = 'SSL Country is empty.';
-$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty';
-$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_&äöüÄÖÜ';
-$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_&äöüÄÖÜ';
-$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_&äöüÄÖÜ';
-$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_&äöüÄÖÜ';
-$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z';
-$wb['none_txt'] = 'None';
-$wb['save_certificate_txt'] = 'Save certificate';
-$wb['create_certificate_txt'] = 'Create certificate';
-$wb['delete_certificate_txt'] = 'Delete certificate';
-$wb['ssl_error_isemail'] = 'Please enter a valid email adress for generation of the SSL certificate';
-$wb['limit_xmppdomain_txt'] = 'The max. number of XMPP domains for your account is reached.';
+$wb['error_ssl_state_empty'] = 'SSL-Bundesland ist leer.';
+$wb['error_ssl_locality_empty'] = 'SSL-Ort ist leer.';
+$wb['error_ssl_organisation_empty'] = 'SSL-Firma ist leer.';
+$wb['error_ssl_organisation_unit_empty'] = 'SSL-Organisationseinheit ist leer.';
+$wb['error_ssl_country_empty'] = 'SSL-Land ist leer.';
+$wb['error_ssl_cert_empty'] = 'SSL-Zertifikatfeld ist leer';
+$wb['ssl_state_error_regex'] = 'Ungültiges SSL-Bundesland. Erlaubte Zeichen sind: a-z, 0-9 and .,-_&äöüÄÖÜ';
+$wb['ssl_locality_error_regex'] = 'Ungültiger SSL-Ort. Erlaubte Zeichen sind: a-z, 0-9 and .,-_&äöüÄÖÜ';
+$wb['ssl_organisation_error_regex'] = 'Ungültige SSL-Firma. Erlaubte Zeichen sind: a-z, 0-9 and .,-_&äöüÄÖÜ';
+$wb['ssl_organistaion_unit_error_regex'] = 'Ungültige SSL-Organisationseinheit. Erlaubte Zeichen sind: a-z, 0-9 and .,-_&äöüÄÖÜ';
+$wb['ssl_country_error_regex'] = 'Ungültiges SSL-Land. Erlaubte Zeichen sind: A-Z';
+$wb['none_txt'] = 'Keine';
+$wb['save_certificate_txt'] = 'Zertifikat speichern ';
+$wb['create_certificate_txt'] = 'Zertifikat erstlellen';
+$wb['delete_certificate_txt'] = 'Zertifikat löschen';
+$wb['ssl_error_isemail'] = 'Bitte geben Sie eine gültige E-Mail-Adresse für die Generierung des SSL-Zertifikats ein';
+$wb['limit_xmppdomain_txt'] = 'Die maximale Anzahl von XMPP-Domains für Ihr Konto ist erreicht.';
 ?>
diff --git a/interface/web/mail/lib/lang/de_xmpp_domain_admin_list.lng b/interface/web/mail/lib/lang/de_xmpp_domain_admin_list.lng
index af643eab5aee3835de27ff78c851d0048052fefe..0c3f8f974c43414967c1d5320d071072a0f730a3 100644
--- a/interface/web/mail/lib/lang/de_xmpp_domain_admin_list.lng
+++ b/interface/web/mail/lib/lang/de_xmpp_domain_admin_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'XMPP Domain';
+$wb['list_head_txt'] = 'XMPP-Domain';
 $wb['server_id_txt'] = 'Server';
-$wb['domain_txt'] = 'Domain';
-$wb['add_new_record_txt'] = 'Add new Domain';
-$wb['active_txt'] = 'Active';
-$wb['sys_groupid_txt'] = 'Client';
+$wb['domain_txt'] = 'Domäne';
+$wb['add_new_record_txt'] = 'Neue Domäne hinzufügen';
+$wb['active_txt'] = 'Aktiv';
+$wb['sys_groupid_txt'] = 'Kunde';
 ?>
diff --git a/interface/web/mail/lib/lang/de_xmpp_domain_list.lng b/interface/web/mail/lib/lang/de_xmpp_domain_list.lng
index ebfebab7d50cc92cd87be46e8de665ba2bfb6f23..af23b58d6d15387900ebff7f523f1066fd3ae72c 100644
--- a/interface/web/mail/lib/lang/de_xmpp_domain_list.lng
+++ b/interface/web/mail/lib/lang/de_xmpp_domain_list.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['list_head_txt'] = 'XMPP Domain';
+$wb['list_head_txt'] = 'XMPP-Domäne';
 $wb['server_id_txt'] = 'Server';
-$wb['domain_txt'] = 'Domain';
-$wb['add_new_record_txt'] = 'Add new Domain';
-$wb['active_txt'] = 'Active';
+$wb['domain_txt'] = 'Domäne';
+$wb['add_new_record_txt'] = 'Neue Domäne hinzufügen';
+$wb['active_txt'] = 'Aktiv';
 ?>
diff --git a/interface/web/mail/lib/lang/de_xmpp_user.lng b/interface/web/mail/lib/lang/de_xmpp_user.lng
index 6ab739d98b9ad877f9f9de5f04530b7add424fd5..04d36881311f9e73a7824f7ff36bb0931cf44f94 100644
--- a/interface/web/mail/lib/lang/de_xmpp_user.lng
+++ b/interface/web/mail/lib/lang/de_xmpp_user.lng
@@ -1,15 +1,15 @@
 <?php
-$wb['list_head_txt'] = 'XMPP User Accounts';
-$wb['jid_txt'] = 'Jabber ID';
-$wb['active_txt'] = 'Active';
-$wb['cryptpwd_txt'] = 'Password';
-$wb['password_strength_txt'] = 'Password strength';
-$wb['error_no_pwd'] = 'Password is empty.';
-$wb['password_txt'] = 'Password';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
-$wb['no_domain_perm'] = 'You have no permission for this domain.';
-$wb['limit_xmpp_user_txt'] = 'The max. number of xmpp accounts for your account is reached.';
+$wb['list_head_txt'] = 'XMPP-Benutzerkonten';
+$wb['jid_txt'] = 'Jabber-ID';
+$wb['active_txt'] = 'Aktiv';
+$wb['cryptpwd_txt'] = 'Passwort';
+$wb['password_strength_txt'] = 'Passwortstärke';
+$wb['error_no_pwd'] = 'Passwort ist leer.';
+$wb['password_txt'] = 'Passwort';
+$wb['generate_password_txt'] = 'Generiere Passwort';
+$wb['repeat_password_txt'] = 'Wiederhole Passwort';
+$wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
+$wb['password_match_txt'] = 'Die Passwörter stimmen überein.';
+$wb['no_domain_perm'] = 'Sie haben keine Erlaubnis für diese Domain.';
+$wb['limit_xmpp_user_txt'] = 'Die maximale Anzahl von XMPP-Konten für Ihr Konto ist erreicht.';
 ?>
diff --git a/interface/web/mail/lib/lang/de_xmpp_user_list.lng b/interface/web/mail/lib/lang/de_xmpp_user_list.lng
index f2651cb62b0cfbe55156d943e91fd7e0c33ac515..4dda57417b16fcd0f2cf2a1f257dca9daef2f783 100644
--- a/interface/web/mail/lib/lang/de_xmpp_user_list.lng
+++ b/interface/web/mail/lib/lang/de_xmpp_user_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'XMPP User Accounts';
-$wb['jid_txt'] = 'Jabber ID';
-$wb['is_domain_admin_txt'] = 'Domain admin';
-$wb['is_muc_admin_txt'] = 'MUC admin';
-$wb['add_new_record_txt'] = 'Add new user';
-$wb['active_txt'] = 'Active';
+$wb['list_head_txt'] = 'XMPP-Benutzerkonten';
+$wb['jid_txt'] = 'Jabber-ID';
+$wb['is_domain_admin_txt'] = 'Domain-Administrator';
+$wb['is_muc_admin_txt'] = 'MUC-Admin';
+$wb['add_new_record_txt'] = 'Neuen Benutzer hinzufügen';
+$wb['active_txt'] = 'Aktiv';
 ?>
diff --git a/interface/web/mail/templates/backup_stats_list.htm b/interface/web/mail/templates/backup_stats_list.htm
index 285246c5e8f56d9e6fec546625b9828c3f85f0f6..a1c002146e61ec6f7cde7b2b46786213bff4b60f 100644
--- a/interface/web/mail/templates/backup_stats_list.htm
+++ b/interface/web/mail/templates/backup_stats_list.htm
@@ -31,12 +31,12 @@
 				</tbody>
 				<tfoot>
 					<tr>
-						<td colspan="5">
+						<td colspan="6">
 							<tmpl_var name="paging">
 						</td>
 					</tr>
 				</tfoot>
             </table>
 </div>
-        
+
     </div>
diff --git a/interface/web/mail/templates/mail_user_list.htm b/interface/web/mail/templates/mail_user_list.htm
index 7b28108a858e4f2817db5b72fb754d9c6e8e6c48..367c4e8c2cb56fcde3c10b406f650956bab7844f 100644
--- a/interface/web/mail/templates/mail_user_list.htm
+++ b/interface/web/mail/templates/mail_user_list.htm
@@ -82,13 +82,13 @@
                 </tmpl_loop>
                 <tmpl_unless name="records">
                     <tr class="tbl_row_noresults tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
-                        <td colspan="<tmpl_if name="enable_custom_login">9<tmpl_else>8</tmpl_if>">{tmpl_var name='globalsearch_noresults_text_txt'}</td>
+                        <td colspan="<tmpl_if name="enable_custom_login">10<tmpl_else>9</tmpl_if>">{tmpl_var name='globalsearch_noresults_text_txt'}</td>
                     </tr>
                 </tmpl_unless>
                 </tbody>
                 <tfoot>
                     <tr>
-                        <td colspan="<tmpl_if name="enable_custom_login">9<tmpl_else>8</tmpl_if>"><tmpl_var name="paging"></td>
+                        <td colspan="<tmpl_if name="enable_custom_login">10<tmpl_else>9</tmpl_if>"><tmpl_var name="paging"></td>
                     </tr>
                 </tfoot>
             </table>
diff --git a/interface/web/mailuser/lib/lang/de.lng b/interface/web/mailuser/lib/lang/de.lng
index b373d456a0dc876594c8267b3b23dafdd7f545fe..d851e0beac071e94233d52ca0f5662090f537eb6 100644
--- a/interface/web/mailuser/lib/lang/de.lng
+++ b/interface/web/mailuser/lib/lang/de.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['Email Account'] = 'E-Mail Konto';
+$wb['Email Account'] = 'E-Mail-Konto';
 $wb['Overview'] = 'Ãœbersicht';
 $wb['Password'] = 'Passwort';
 $wb['Autoresponder'] = 'Autoresponder';
 $wb['Send copy'] = 'Kopie senden an';
 $wb['Spamfilter'] = 'Spamfilter';
-$wb['Email Filters'] = 'E-Mailfilter';
+$wb['Email Filters'] = 'E-Mail-Filter';
 ?>
diff --git a/interface/web/mailuser/lib/lang/de_index.lng b/interface/web/mailuser/lib/lang/de_index.lng
index 522ddbc8db8e1f7840532d16463e00900dce1747..93bea6ca6ec8cacd76b392da2af39b0720a7056b 100644
--- a/interface/web/mailuser/lib/lang/de_index.lng
+++ b/interface/web/mailuser/lib/lang/de_index.lng
@@ -1,11 +1,11 @@
 <?php
-$wb['page_head_txt'] = 'E-Mail Konten Einstellungen';
-$wb['page_desc_txt'] = 'Hier können Sie die Einstellungen des E-Mail Kontos ändern.';
-$wb['email_txt'] = 'E-Mail Adresse';
+$wb['page_head_txt'] = 'E-Mail-Konten-Einstellungen';
+$wb['page_desc_txt'] = 'Hier können Sie die Einstellungen des E-Mail-Kontos ändern.';
+$wb['email_txt'] = 'E-Mail-Adresse';
 $wb['login_txt'] = 'Login';
-$wb['server_address_txt'] = 'E-Mailserver Adresse';
+$wb['server_address_txt'] = 'E-Mailserver-Adresse';
 $wb['cc_txt'] = 'Kopie senden an (CC)';
-$wb['quota_txt'] = 'E-Mailkonto Beschränkung';
+$wb['quota_txt'] = 'Speicherbeschränkung des E-Mail-Kontos';
 $wb['unlimited_txt'] = 'Unlimitiert';
 $wb['mb_txt'] = 'MB';
 $wb['none_txt'] = 'Niemanden';
diff --git a/interface/web/mailuser/lib/lang/de_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/de_mail_user_autoresponder.lng
index af164c475d2ce2f35195a211b8ea001f1a3a4d7a..8aa15fd7623627e4ae487820254991b3e2b3e4ad 100644
--- a/interface/web/mailuser/lib/lang/de_mail_user_autoresponder.lng
+++ b/interface/web/mailuser/lib/lang/de_mail_user_autoresponder.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['mailbox_autoresponder_txt'] = 'Autoresponder';
-$wb['autoresponder_subject'] = 'Out of office Antwort';
+$wb['autoresponder_subject'] = 'Out-of-Office Antwort';
 $wb['autoresponder_text_txt'] = 'Text';
 $wb['autoresponder_txt'] = 'Aktiv';
 $wb['autoresponder_start_date_txt'] = 'Start am';
diff --git a/interface/web/mailuser/lib/lang/de_mail_user_cc.lng b/interface/web/mailuser/lib/lang/de_mail_user_cc.lng
index 6810752d4d68c78ea1bd0e6a3c0b6f9a953bae86..b4954daa992cf297f6cf7960ad9f620b4dea782b 100644
--- a/interface/web/mailuser/lib/lang/de_mail_user_cc.lng
+++ b/interface/web/mailuser/lib/lang/de_mail_user_cc.lng
@@ -1,11 +1,11 @@
 <?php
-$wb['mailbox_cc_txt'] = 'Kopie an E-Mail Adresse senden';
+$wb['mailbox_cc_txt'] = 'Kopie an E-Mail-Adresse senden';
 $wb['cc_txt'] = 'Kopie senden an';
 $wb['email_txt'] = 'E-Mail';
-$wb['cc_error_isemail'] = 'E-Mail Adresse ungültig im -Kopie senden an- Feld';
-$wb['email_is_cc_error'] = 'E-Mail Adresse und ';
+$wb['cc_error_isemail'] = 'E-Mail-Adresse ungültig im -Kopie senden an- Feld';
+$wb['email_is_cc_error'] = 'E-Mail-Adresse und ';
 $wb['name_optional_txt'] = '(optional)';
 $wb['cc_note_txt'] = '(Mehrere E-Mail-Adressen mit Kommas trennen)';
-$wb['forward_in_lda_txt'] = 'Copy during delivery';
-$wb['tooltip_forward_in_lda_txt'] = 'Controls if mail copy is forwarded before or during delivery to mailbox.';
+$wb['forward_in_lda_txt'] = 'Kopie während der Zustellung';
+$wb['tooltip_forward_in_lda_txt'] = 'Steuert, ob die Kopie der E-Mail vor oder während der Zustellung an das Postfach weitergeleitet wird.';
 ?>
diff --git a/interface/web/mailuser/lib/lang/de_mail_user_filter.lng b/interface/web/mailuser/lib/lang/de_mail_user_filter.lng
index 73e98770fdf32f05b01dc20a413aeb4ec56547bf..e150c250c500232d8c6a89f121576d62032e90cd 100644
--- a/interface/web/mailuser/lib/lang/de_mail_user_filter.lng
+++ b/interface/web/mailuser/lib/lang/de_mail_user_filter.lng
@@ -7,8 +7,8 @@ $wb['rulename_error_empty'] = 'Name ist leer.';
 $wb['searchterm_is_empty'] = 'Suchbegriff ist leer.';
 $wb['source_txt'] = 'Quelle';
 $wb['target_error_regex'] = 'Das Ziel darf nur die folgenden Zeichen enthalten: a-z, 0-9, -, ., _, &, /, und {space}';
-$wb['limit_mailfilter_txt'] = 'Die max. Anzahl an E-Mailfiltern ist erreicht.';
-$wb['mailbox_filter_txt'] = 'E-Mailfilter';
+$wb['limit_mailfilter_txt'] = 'Die max. Anzahl an E-Mail-Filtern ist erreicht.';
+$wb['mailbox_filter_txt'] = 'E-Mail-Filter';
 $wb['subject_txt'] = 'Betreff';
 $wb['from_txt'] = 'Von';
 $wb['to_txt'] = 'An';
@@ -17,9 +17,9 @@ $wb['is_txt'] = 'Ist';
 $wb['begins_with_txt'] = 'Startet mit';
 $wb['ends_with_txt'] = 'Endet mit';
 $wb['move_to_txt'] = 'Verschieben nach';
-$wb['regex_txt'] = 'Matches Regex';
+$wb['regex_txt'] = 'Stimmt mit Regex überein';
 $wb['delete_txt'] = 'Löschen';
 $wb['header_txt'] = 'Header';
-$wb['size_over_txt'] = 'Email size over (KB)';
-$wb['size_under_txt'] = 'Email size under (KB)';
+$wb['size_over_txt'] = 'Größe der E-Mail über (KB)';
+$wb['size_under_txt'] = 'Größe der E-Mail unter (KB)';
 ?>
diff --git a/interface/web/mailuser/lib/lang/de_mail_user_filter_list.lng b/interface/web/mailuser/lib/lang/de_mail_user_filter_list.lng
index 9abd40d7e35ec39ca65d1b63d0f5db5888697d17..35be5d34c9247992c497259750c3952f1453c917 100644
--- a/interface/web/mailuser/lib/lang/de_mail_user_filter_list.lng
+++ b/interface/web/mailuser/lib/lang/de_mail_user_filter_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'E-Mailfilter Regeln';
+$wb['list_head_txt'] = 'E-Mail-Filterregeln';
 $wb['rulename_txt'] = 'Name';
 $wb['add_new_record_txt'] = 'Neuen Filter hinzufügen';
 $wb['page_txt'] = 'Seite';
 $wb['page_of_txt'] = 'von';
-$wb['delete_confirmation'] = 'Möchten Sie die E-Mailfilter Regel wirklich löschen?';
+$wb['delete_confirmation'] = 'Möchten Sie die E-Mail-Filterregel wirklich löschen?';
 ?>
diff --git a/interface/web/mailuser/lib/lang/de_mail_user_password.lng b/interface/web/mailuser/lib/lang/de_mail_user_password.lng
index cf97177b61b7fb3c3374eb86946b51256cee1c7d..f1aea9200731b61f3572512cf8f327701c07e56a 100644
--- a/interface/web/mailuser/lib/lang/de_mail_user_password.lng
+++ b/interface/web/mailuser/lib/lang/de_mail_user_password.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['mailbox_password_txt'] = 'E-Mailkonto Passwort';
+$wb['mailbox_password_txt'] = 'E-Mail-Konto-Passwort';
 $wb['password_txt'] = 'Passwort';
 $wb['password_strength_txt'] = 'Passwortkomplexität';
 $wb['email_txt'] = 'E-Mail';
@@ -7,5 +7,5 @@ $wb['generate_password_txt'] = 'Passwort erzeugen';
 $wb['repeat_password_txt'] = 'Passwort wiederholen';
 $wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
 $wb['password_match_txt'] = 'Die Passwörter stimmen überein.';
-$wb['password_click_to_set_txt'] = 'Click to set';
+$wb['password_click_to_set_txt'] = 'Klicken Sie zum Einstellen';
 ?>
diff --git a/interface/web/mailuser/lib/lang/de_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/de_mail_user_spamfilter.lng
index d444899a8f8a86013861a657aa28e7628013be3a..ab1dd87fde42585710b2567a9f9d191e259751c9 100644
--- a/interface/web/mailuser/lib/lang/de_mail_user_spamfilter.lng
+++ b/interface/web/mailuser/lib/lang/de_mail_user_spamfilter.lng
@@ -2,6 +2,6 @@
 $wb['mailbox_spamfilter_txt'] = 'Spamfilter';
 $wb['spamfilter_txt'] = 'Spamfilter';
 $wb['email_txt'] = 'E-Mail';
-$wb['inherit_policy'] = '- Inherit domain setting -';
+$wb['inherit_policy'] = '- Vererbung der Domäneneinstellung -';
 $wb['policy_txt'] = 'Richtlinie';
 ?>
diff --git a/interface/web/mailuser/templates/mail_user_filter_list.htm b/interface/web/mailuser/templates/mail_user_filter_list.htm
index b81793b63189926c8b1f3a25b1f2a06d9b96acce..8ec5641cbf7fde3dfc115eb3089836fcf04a2b62 100644
--- a/interface/web/mailuser/templates/mail_user_filter_list.htm
+++ b/interface/web/mailuser/templates/mail_user_filter_list.htm
@@ -21,7 +21,7 @@
                 <tr>
                     <td><input class="form-control" type="text" name="search_rulename" value="{tmpl_var name='search_rulename'}" /></td>
                     <td class="text-right">
-                        <button type="button" class="btn btn-default formbutton-default formbutton-narrow" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" data-submit-form="pageForm" data-form-action="mail/mail_user_edit.php"><span class="icon icon-filter"></span></button>
+                        <button type="button" class="btn btn-default formbutton-default formbutton-narrow" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" data-submit-form="pageForm" data-form-action="mailuser/mail_user_filter_list.php"><span class="icon icon-filter"></span></button>
                     </td>
                 </tr>
                 </thead>
diff --git a/interface/web/monitor/lib/lang/de.lng b/interface/web/monitor/lib/lang/de.lng
index 629df19fdd5b3a61ba6411b2969ba1d3f9cedf72..652c7b412ec00663630baffcc8d0ba072c22607b 100644
--- a/interface/web/monitor/lib/lang/de.lng
+++ b/interface/web/monitor/lib/lang/de.lng
@@ -22,27 +22,27 @@ $wb['minutes'] = 'Minuten';
 $wb['Overview'] = 'Ãœbersicht zeigen';
 $wb['System State (All Servers)'] = 'Systemstatus (Alle Server)';
 $wb['Hardware-Information'] = 'Hardwareinformationen';
-$wb['CPU info'] = 'CPU Informationen';
+$wb['CPU info'] = 'CPU-Informationen';
 $wb['Server State'] = 'Serverstatus';
 $wb['Update State'] = 'Updatestatus anzeigen';
-$wb['RAID state'] = 'RAID Status anzeigen';
+$wb['RAID state'] = 'RAID-Status anzeigen';
 $wb['Server load'] = 'Serverauslastung anzeigen';
 $wb['Disk usage'] = 'Festplattenbelegung anzeigen';
 $wb['Memory usage'] = 'Speicherauslastung anzeigen';
 $wb['Services'] = 'Dienste anzeigen';
-$wb['Mail-Queue'] = 'E-Mail Warteschlange anzeigen';
-$wb['Mail-Log'] = 'E-Mail Protokoll anzeigen';
-$wb['Mail warn-Log'] = 'E-Mail Warn Protokoll anzeigen';
-$wb['Mail err-Log'] = 'E-Mail Fehler Protokoll anzeigen';
-$wb['System-Log'] = 'System Protokoll anzeigen';
-$wb['Freshclam-Log'] = 'Freshclam Protokoll anzeigen';
+$wb['Mail-Queue'] = 'E-Mail-Warteschlange anzeigen';
+$wb['Mail-Log'] = 'E-Mail-Protokoll anzeigen';
+$wb['Mail warn-Log'] = 'E-Mail Warn-Protokoll anzeigen';
+$wb['Mail err-Log'] = 'E-Mail-Fehler-Protokoll anzeigen';
+$wb['System-Log'] = 'System-Protokoll anzeigen';
+$wb['Freshclam-Log'] = 'Freshclam-Protokoll anzeigen';
 $wb['Let\'s Encrypt log'] = 'Let\'s Encrypt log';
-$wb['Clamav-Log'] = 'ClamAV Protokoll anzeigen';
-$wb['ISPConfig-Log'] = 'ISPConfig Protokoll anzeigen';
-$wb['RKHunter-Log'] = 'RKHunter Protokoll anzeigen';
+$wb['Clamav-Log'] = 'ClamAV-Protokoll anzeigen';
+$wb['ISPConfig-Log'] = 'ISPConfig-Protokoll anzeigen';
+$wb['RKHunter-Log'] = 'RKHunter-Protokoll anzeigen';
 $wb['Jobqueue'] = 'Jobwarteschlange anzeigen';
 $wb['Data Log History'] = 'Datalog-History anzeigen';
-$wb['ISPC Cron-Log'] = 'Cron Protokoll anzeigen';
+$wb['ISPC Cron-Log'] = 'Cron-Protokoll anzeigen';
 $wb['no_data_updates_txt'] = 'Derzeit stehen keine Daten über Updates zur Verfügung. Bitte später erneut überprüfen.';
 $wb['no_data_raid_txt'] = 'Derzeit stehen keine Daten über RAID zur Verfügung. Bitte später erneut überprüfen.';
 $wb['no_data_rkhunter_txt'] = 'Derzeit stehen keine Daten von RKHunter zur Verfügung. Bitte später erneut überprüfen.';
@@ -56,15 +56,15 @@ $wb['monitor_diskusage_used_txt'] = 'In Verwendung';
 $wb['monitor_diskusage_available_txt'] = 'verfügbar';
 $wb['monitor_diskusage_usage_txt'] = 'Verwendung in %';
 $wb['monitor_diskusage_mounted_txt'] = 'gemountet unter';
-$wb['monitor_logs_mail_txt'] = 'E-Mail Protokoll';
-$wb['monitor_logs_mailwarn_txt'] = 'E-Mail Warnung Protokoll';
-$wb['monitor_logs_mailerr_txt'] = 'E-Mail Fehler Protokoll';
-$wb['monitor_logs_messages_txt'] = 'Systemmeldungen Protokoll';
-$wb['monitor_logs_ispccron_txt'] = 'Cron Protokoll';
+$wb['monitor_logs_mail_txt'] = 'E-Mail-Protokoll';
+$wb['monitor_logs_mailwarn_txt'] = 'E-Mail-Warnung-Protokoll';
+$wb['monitor_logs_mailerr_txt'] = 'E-Mail-Fehler-Protokoll';
+$wb['monitor_logs_messages_txt'] = 'Systemmeldungen-Protokoll';
+$wb['monitor_logs_ispccron_txt'] = 'Cron-Protokoll';
 $wb['monitor_logs_letsencrypt_txt'] = 'Let\'s Encrypt - Log';
-$wb['monitor_logs_freshclam_txt'] = 'Freshclam Protokoll';
-$wb['monitor_logs_clamav_txt'] = 'ClamAV Protokoll';
-$wb['monitor_logs_ispc_txt'] = 'ISPConfig Protokoll';
+$wb['monitor_logs_freshclam_txt'] = 'Freshclam-Protokoll';
+$wb['monitor_logs_clamav_txt'] = 'ClamAV-Protokoll';
+$wb['monitor_logs_ispc_txt'] = 'ISPConfig-Protokoll';
 $wb['monitor_norkhunter_txt'] = 'RKHunter ist nicht installiert, deshalb gibt es keine Protokolldatei';
 $wb['monitor_serverstate_server_txt'] = 'Server';
 $wb['monitor_serverstate_kernel_txt'] = 'Kernel';
@@ -97,12 +97,12 @@ $wb['monitor_serverstate_loadhigh_txt'] = 'Der Server ist stark ausgelastet';
 $wb['monitor_serverstate_loaghigher_txt'] = 'Der Server ist stärker ausgelastet';
 $wb['monitor_serverstate_loadhighest_txt'] = 'Der Server ist höchst ausgelastet';
 $wb['monitor_serverstate_loadunknown_txt'] = 'Serverauslastung: ???';
-$wb['monitor_serverstate_mailqok_txt'] = 'Die E-Mail Wartenschlangenauslastung ist in Ordnung';
-$wb['monitor_serverstate_mailqheavy_txt'] = 'Die E-Mail Wartenschlange ist extrem ausgelastet';
-$wb['monitor_serverstate_mailqhigh_txt'] = 'Die E-Mail Wartenschlange ist stark ausgelastet';
-$wb['monitor_serverstate_mailqhigher_txt'] = 'Die E-Mail Wartenschlange ist stärker ausgelastet';
-$wb['monitor_serverstate_mailqhighest_txt'] = 'Die E-Mail Wartenschlange ist höchst ausgelastet';
-$wb['monitor_serverstate_mailqunknown_txt'] = 'E-Mail Wartenschlange: ???';
+$wb['monitor_serverstate_mailqok_txt'] = 'Die E-Mail-Wartenschlangenauslastung ist in Ordnung';
+$wb['monitor_serverstate_mailqheavy_txt'] = 'Die E-Mail-Wartenschlange ist extrem ausgelastet';
+$wb['monitor_serverstate_mailqhigh_txt'] = 'Die E-Mail-Wartenschlange ist stark ausgelastet';
+$wb['monitor_serverstate_mailqhigher_txt'] = 'Die E-Mail-Wartenschlange ist stärker ausgelastet';
+$wb['monitor_serverstate_mailqhighest_txt'] = 'Die E-Mail-Wartenschlange ist höchst ausgelastet';
+$wb['monitor_serverstate_mailqunknown_txt'] = 'E-Mail-Wartenschlange: ???';
 $wb['monitor_serverstate_raidok_txt'] = 'Das RAID ist in Ordnung';
 $wb['monitor_serverstate_raidresync_txt'] = 'Das RAID ist im RESYNC Modus';
 $wb['monitor_serverstate_raidfault_txt'] = 'Das RAID hat eine DEFEKTE Festplatte. Bitte schnellstmöglich ersetzen!';
@@ -111,13 +111,13 @@ $wb['monitor_serverstate_raidunknown_txt'] = 'RAID Status: ???';
 $wb['monitor_serverstate_servicesonline_txt'] = 'Alle benötigten Dienste sind online';
 $wb['monitor_serverstate_servicesoffline_txt'] = 'Einer oder mehrere benötigte Dienste sind offline';
 $wb['monitor_serverstate_servicesunknown_txt'] = 'Dienste: ???';
-$wb['monitor_serverstate_syslogok_txt'] = 'Das System Protokoll ist in Ordnung';
-$wb['monitor_serverstate_syslogwarning_txt'] = 'Es gibt Warnungen im System Protokoll';
-$wb['monitor_serverstate_syslogerror_txt'] = 'Es gibt Fehler im System Protokoll';
-$wb['monitor_serverstate_syslogunknown_txt'] = 'System Protokoll: ???';
+$wb['monitor_serverstate_syslogok_txt'] = 'Das System-Protokoll ist in Ordnung';
+$wb['monitor_serverstate_syslogwarning_txt'] = 'Es gibt Warnungen im System-Protokoll';
+$wb['monitor_serverstate_syslogerror_txt'] = 'Es gibt Fehler im System-Protokoll';
+$wb['monitor_serverstate_syslogunknown_txt'] = 'System-Protokoll: ???';
 $wb['monitor_serverstate_updatesok_txt'] = 'Ihr System ist aktuell';
 $wb['monitor_serverstate_updatesneeded_txt'] = 'Eine oder mehrere Komponenten benötigen ein Update';
-$wb['monitor_serverstate_updatesunknown_txt'] = 'System Update: ???';
+$wb['monitor_serverstate_updatesunknown_txt'] = 'System-Update: ???';
 $wb['monitor_services_online_txt'] = 'Online';
 $wb['monitor_services_offline_txt'] = 'Offline';
 $wb['monitor_services_web_txt'] = 'Web Server:';
@@ -132,38 +132,38 @@ $wb['monitor_settings_datafromdate_txt'] = 'Daten vom: ';
 $wb['monitor_settings_datetimeformat_txt'] = 'd.m.Y H:i';
 $wb['monitor_settings_refreshsq_txt'] = 'Aktualisierungsrate:';
 $wb['monitor_settings_server_txt'] = 'Server';
-$wb['monitor_title_cpuinfo_txt'] = 'CPU Informationen';
+$wb['monitor_title_cpuinfo_txt'] = 'CPU-Informationen';
 $wb['monitor_title_updatestate_txt'] = 'Updatestatus';
-$wb['monitor_title_mailq_txt'] = 'E-Mail Warteschlange';
-$wb['monitor_title_raidstate_txt'] = 'RAID Status';
-$wb['monitor_title_rkhunterlog_txt'] = 'RKHunter Protokoll';
+$wb['monitor_title_mailq_txt'] = 'E-Mail-Warteschlange';
+$wb['monitor_title_raidstate_txt'] = 'RAID-Status';
+$wb['monitor_title_rkhunterlog_txt'] = 'RKHunter-Protokoll';
 $wb['monitor_updates_nosupport_txt'] = 'Ihre Distribution wird für die Überwachung nicht unterstützt';
-$wb['monitor_title_fail2ban_txt'] = 'Fail2Ban Protokoll';
-$wb['monitor_title_mongodb_txt'] = 'MongoDB Protokoll';
-$wb['monitor_nosupportedraid1_txt'] = 'At the moment, we support mdadm or mpt-status for monitoring the RAID.<br>We cant find any of them at your server.<br><br>This means we can not support your RAID yet.';
-$wb['monitor_serverstate_beancounterok_txt'] = 'The beancounter is ok';
-$wb['monitor_serverstate_beancounterinfo_txt'] = 'There are vew failure in the beancounter';
-$wb['monitor_serverstate_beancounterwarning_txt'] = 'There are some failure in the beancounter';
-$wb['monitor_serverstate_beancountercritical_txt'] = 'There are many failure in the beancounter';
-$wb['monitor_serverstate_beancountererror_txt'] = 'There are too much failure in the beancounter';
-$wb['monitor_title_beancounter_txt'] = 'OpenVz VE BeanCounter';
-$wb['monitor_beancounter_nosupport_txt'] = 'This server is not a OpenVz VE and has no beancounter information';
-$wb['monitor_title_iptables_txt'] = 'IPTables Regeln';
-$wb['fail2ban-Log'] = 'Fail2ban Protokoll anzeigen';
-$wb['MongoDB-Log'] = 'MongoDB Protokoll anzeigen';
+$wb['monitor_title_fail2ban_txt'] = 'Fail2Ban-Protokoll';
+$wb['monitor_title_mongodb_txt'] = 'MongoDB-Protokoll';
+$wb['monitor_nosupportedraid1_txt'] = 'Im Moment unterstützen wir nur mdadm, mpt-status, tw_cli, hpacucli, megacli(64) und arcconf zur Überwachung des RAID.<br>Wir können keine von ihnen auf Ihrem Server finden.<br><br>Das bedeutet, dass wir Ihr RAID noch nicht unterstützen.';
+$wb['monitor_serverstate_beancounterok_txt'] = 'Der Beancounter ist Okay';
+$wb['monitor_serverstate_beancounterinfo_txt'] = 'Es gibt nur wenige Fehler im Beancounter';
+$wb['monitor_serverstate_beancounterwarning_txt'] = 'Es gibt einige Fehler im Beancounter';
+$wb['monitor_serverstate_beancountercritical_txt'] = 'Es gibt viele Fehler im Beancounter';
+$wb['monitor_serverstate_beancountererror_txt'] = 'Es gibt zu viele Fehler im Bbeancounter';
+$wb['monitor_title_beancounter_txt'] = 'OpenVz-Vz-BeanCounter';
+$wb['monitor_beancounter_nosupport_txt'] = 'Dieser Server ist kein OpenVz VE und hat keine Beancounter-Informationen';
+$wb['monitor_title_iptables_txt'] = 'IPTables-Regeln';
+$wb['fail2ban-Log'] = 'Fail2ban-Protokoll anzeigen';
+$wb['MongoDB-Log'] = 'MongoDB-Protokoll anzeigen';
 $wb['IPTables'] = 'IPTables anzeigen';
-$wb['OpenVz VE BeanCounter'] = 'OpenVz VE BeanCounter anzeigen';
+$wb['OpenVz VE BeanCounter'] = 'OpenVz-VE-BeanCounter anzeigen';
 $wb['Monit'] = 'Monit anzeigen';
 $wb['no_monit_url_defined_txt'] = 'Keine Monit-URL definiert.';
 $wb['no_permissions_to_view_monit_txt'] = 'Sie haben nicht die Berechtigung, auf Monit zuzugreifen.';
 $wb['Munin'] = 'Munin anzeigen';
 $wb['no_munin_url_defined_txt'] = 'Keine Munin-URL definiert.';
 $wb['no_permissions_to_view_munin_txt'] = 'Sie haben nicht die Berechtigung, auf Munin zuzugreifen.';
-$wb['no_data_database_size_txt'] = 'Derzeit stehen keine Daten über die Speicherverbrauch der Datenbanken zur Verfügung. Bitte später erneut Ãrüfen..';
-$wb['monitor_database_name_txt'] = 'Database';
-$wb['monitor_database_size_txt'] = 'Size';
-$wb['monitor_database_client_txt'] = 'Client';
+$wb['no_data_database_size_txt'] = 'Derzeit stehen keine Daten über die Speicherverbrauch der Datenbanken zur Verfügung. Bitte später erneut überprüfen...';
+$wb['monitor_database_name_txt'] = 'Datenbank';
+$wb['monitor_database_size_txt'] = 'Größe';
+$wb['monitor_database_client_txt'] = 'Kunde';
 $wb['monitor_database_domain_txt'] = 'Domain';
-$wb['Database size'] = 'Database size';
-$wb['MySQL Database size'] = 'MySQL Database size';
+$wb['Database size'] = 'Datenbankgröße';
+$wb['MySQL Database size'] = 'MySQL-Datenbankgröße';
 ?>
diff --git a/interface/web/sites/lib/lang/de_web_domain.lng b/interface/web/sites/lib/lang/de_web_domain.lng
index 7c41fe99e19b1dfbe45f578c4eb8857d46ebdcf5..9ed17cbf6f7e45313018bbf51b514423130bdfbf 100644
--- a/interface/web/sites/lib/lang/de_web_domain.lng
+++ b/interface/web/sites/lib/lang/de_web_domain.lng
@@ -37,10 +37,10 @@ $wb['client_txt'] = 'Kunde';
 $wb['limit_web_domain_txt'] = 'Die maximale Anzahl an Webdomains für Ihr Konto wurde erreicht.';
 $wb['limit_web_aliasdomain_txt'] = 'Die maximale Anzahl an Aliasdomains für Ihr Konto wurde erreicht.';
 $wb['limit_web_subdomain_txt'] = 'Die maximale Anzahl an Subdomains für Ihr Konto wurde erreicht.';
-$wb['apache_directives_txt'] = 'Apache Direktiven';
+$wb['apache_directives_txt'] = 'Apache-Direktiven';
 $wb['domain_error_empty'] = 'Domain ist leer.';
 $wb['domain_error_unique'] = 'Domain muss eindeutig sein';
-$wb['domain_error_regex'] = 'Domain Name ungültig.';
+$wb['domain_error_regex'] = 'Domainname ungültig.';
 $wb['domain_error_autosub'] = 'Es existiert bereits eine Subdomain mit diesen Einstellungen.';
 $wb['hd_quota_error_empty'] = 'Speicherplatzbeschränkung ist leer.';
 $wb['traffic_quota_error_empty'] = 'Transfervolumenbeschränkung ist leer.';
@@ -50,10 +50,10 @@ $wb['error_ssl_locality_empty'] = 'Ort (SSL) ist leer.';
 $wb['error_ssl_organisation_empty'] = 'Organisation (SSL) ist leer.';
 $wb['error_ssl_organisation_unit_empty'] = 'Abteilung (SSL) ist leer.';
 $wb['error_ssl_country_empty'] = 'Land (SSL) ist leer.';
-$wb['subdomain_txt'] = 'Auto Subdomain';
+$wb['subdomain_txt'] = 'Auto-Subdomain';
 $wb['client_group_id_txt'] = 'Kunde';
 $wb['stats_password_txt'] = 'Webstatistik Passwort';
-$wb['ssl_domain_txt'] = 'SSL Domain';
+$wb['ssl_domain_txt'] = 'SSL-Domain';
 $wb['allow_override_txt'] = 'Allow Override';
 $wb['limit_web_quota_free_txt'] = 'Max. mögliche Speicherplatzbeschränkung';
 $wb['ssl_state_error_regex'] = 'Ungültiges SSL-Bundesland. Gültige Zeichen sind: a-z, 0-9 und .,-_&äöüÄÖÜ';
@@ -99,7 +99,7 @@ $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers muß ein
 $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers muß eine positive ganze Zahl sein.';
 $wb['hd_quota_error_regex'] = 'Speicherplatzbeschränkung ist ungültig.';
 $wb['traffic_quota_error_regex'] = 'Transfervolumenbeschränkung ist ungültig.';
-$wb['server_php_id_txt'] = 'PHP Version';
+$wb['server_php_id_txt'] = 'PHP-Version';
 $wb['pm_txt'] = 'PHP-FPM FastCGI Prozess Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
@@ -132,10 +132,10 @@ $wb['backup_excludes_note_txt'] = '(Mehrere Verzeichnisse mit Kommas trennen. Be
 $wb['backup_excludes_error_regex'] = 'Die auszuschließenden Verzeichnisse enthalten ungültige Zeichen.';
 $wb['invalid_custom_php_ini_settings_txt'] = 'Unzulässige php.ini-Einstellungen';
 $wb['invalid_system_user_or_group_txt'] = 'Invalid system user or group';
-$wb['apache_directive_blocked_error'] = 'Die Apache Direktive wurde durch die Sicherheitsrichtline blockiert:';
-$wb['http_port_txt'] = 'HTTP Port';
-$wb['https_port_txt'] = 'HTTPS Port';
-$wb['http_port_error_regex'] = 'HTTP Port invalid.';
-$wb['https_port_error_regex'] = 'HTTPS Port invalid.';
-$wb['nginx_directive_blocked_error'] = 'Nginx directive blocked by security settings:';
+$wb['apache_directive_blocked_error'] = 'Die Apache-Direktive wurde durch die Sicherheitsrichtline blockiert:';
+$wb['http_port_txt'] = 'HTTP-Port';
+$wb['https_port_txt'] = 'HTTPS-Port';
+$wb['http_port_error_regex'] = 'HTTP-Port ungültig.';
+$wb['https_port_error_regex'] = 'HTTPS-Port ungültig.';
+$wb['nginx_directive_blocked_error'] = 'Nginx-Direktive wurde durch die Sicherheitsrichtline blockiert:';
 ?>
diff --git a/interface/web/sites/lib/lang/de_web_subdomain.lng b/interface/web/sites/lib/lang/de_web_subdomain.lng
index 030d43a9057beffce262f655c617fe4742bb8270..60073a6fc238f55cb95c97f269f0e459886a257b 100644
--- a/interface/web/sites/lib/lang/de_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/de_web_subdomain.lng
@@ -4,10 +4,10 @@ $wb['ssl_locality_txt'] = 'Ort';
 $wb['ssl_organisation_txt'] = 'Firma';
 $wb['ssl_organisation_unit_txt'] = 'Abteilung';
 $wb['ssl_country_txt'] = 'Land';
-$wb['ssl_request_txt'] = 'SSL Anfrage';
-$wb['ssl_cert_txt'] = 'SSL Zertifikat';
-$wb['ssl_bundle_txt'] = 'SSL Bundle';
-$wb['ssl_action_txt'] = 'SSL Aktion';
+$wb['ssl_request_txt'] = 'SSL-Anfrage';
+$wb['ssl_cert_txt'] = 'SSL-Zertifikat';
+$wb['ssl_bundle_txt'] = 'SSL-Bundle';
+$wb['ssl_action_txt'] = 'SSL-Aktion';
 $wb['server_id_txt'] = 'Server';
 $wb['domain_txt'] = 'Domain';
 $wb['type_txt'] = 'Typ';
@@ -38,7 +38,7 @@ $wb['limit_web_subdomain_txt'] = 'Die max. Anzahl an Web-Subdomains für Ihr Kon
 $wb['apache_directives_txt'] = 'Apache-Direktiven';
 $wb['domain_error_empty'] = 'Domain ist leer.';
 $wb['domain_error_unique'] = 'Domain muss eindeutig sein.';
-$wb['domain_error_regex'] = 'Domain-Name ist ungültig.';
+$wb['domain_error_regex'] = 'Domainname ist ungültig.';
 $wb['domain_error_wildcard'] = 'Wildcard Subdomains sind nicht erlaubt.';
 $wb['host_txt'] = 'Host';
 $wb['redirect_error_regex'] = 'Ungültiger Redirect-Pfad. Gültige Pfade sind beispielsweise: /test/ oder https://www.domain.tld/test/';
@@ -47,8 +47,8 @@ $wb['no_flag_txt'] = 'Kein Flag';
 $wb['proxy_directives_txt'] = 'Proxy-Direktiven';
 $wb['available_proxy_directive_snippets_txt'] = 'Verfügbare Proxy Direktiven Schnipsel:';
 $wb['error_proxy_requires_url'] = 'Weiterleitungstyp \\"proxy\\" erfordert eine URL als Weiterleitungspfad.';
-$wb['http_port_txt'] = 'HTTP Port';
-$wb['https_port_txt'] = 'HTTPS Port';
-$wb['http_port_error_regex'] = 'HTTP Port ungültig.';
-$wb['https_port_error_regex'] = 'HTTPS Port ungültig.';
+$wb['http_port_txt'] = 'HTTP-Port';
+$wb['https_port_txt'] = 'HTTPS-Port';
+$wb['http_port_error_regex'] = 'HTTP-Port ungültig.';
+$wb['https_port_error_regex'] = 'HTTPS-Port ungültig.';
 ?>
diff --git a/interface/web/sites/lib/lang/de_web_vhost_domain_list.lng b/interface/web/sites/lib/lang/de_web_vhost_domain_list.lng
index 9d48c3897fe3be74a4454482b1546a22860c509d..9aa418cc8e0155bf005cb80738e7985d22936c4c 100644
--- a/interface/web/sites/lib/lang/de_web_vhost_domain_list.lng
+++ b/interface/web/sites/lib/lang/de_web_vhost_domain_list.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['list_head_txt'] = 'Domains';
-$wb['domain_id_txt'] = 'Domain ID';
+$wb['domain_id_txt'] = 'Domain-ID';
 $wb['active_txt'] = 'Aktiv';
 $wb['server_id_txt'] = 'Server';
 $wb['domain_txt'] = 'Domain';
diff --git a/interface/web/sites/lib/lang/de_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/de_web_vhost_subdomain.lng
index ac615eb4ad86473d7d379652fd4fc3fb55085f0f..5694e3c8614a8afe8124ba733da4b8530aff44fe 100644
--- a/interface/web/sites/lib/lang/de_web_vhost_subdomain.lng
+++ b/interface/web/sites/lib/lang/de_web_vhost_subdomain.lng
@@ -129,7 +129,7 @@ $wb['backup_excludes_txt'] = 'Auszuschließende Verzeichnisse';
 $wb['backup_excludes_note_txt'] = '(Mehrere Verzeichnisse mit Kommas trennen. Beispiel: web/cache/*,web/backup)';
 $wb['backup_excludes_error_regex'] = 'Die auszuschließenden Verzeichnisse enthalten ungültige Zeichen.';
 $wb['subdomain_error_empty'] = 'The subdommain field is empty or contains invalid characters.';
-$wb['http_port_txt'] = 'HTTP Port';
-$wb['https_port_txt'] = 'HTTPS Port';
-$wb['http_port_error_regex'] = 'HTTP Port invalid.';
-$wb['https_port_error_regex'] = 'HTTPS Port invalid.';
+$wb['http_port_txt'] = 'HTTP-Port';
+$wb['https_port_txt'] = 'HTTPS-Port';
+$wb['http_port_error_regex'] = 'HTTP-Port ungültig.';
+$wb['https_port_error_regex'] = 'HTTPS-Port ungültig.';
diff --git a/interface/web/sites/templates/backup_stats_list.htm b/interface/web/sites/templates/backup_stats_list.htm
index 294160842349eb1ca435141d89fa5df540803298..487ea195494f9532ae8d210478c533126accab2f 100644
--- a/interface/web/sites/templates/backup_stats_list.htm
+++ b/interface/web/sites/templates/backup_stats_list.htm
@@ -31,12 +31,12 @@
 				</tbody>
 				<tfoot>
 					<tr>
-						<td colspan="5">
+						<td colspan="6">
 							<tmpl_var name="paging">
 						</td>
 					</tr>
 				</tfoot>
             </table>
 </div>
-        
+
     </div>
diff --git a/interface/web/sites/templates/user_quota_stats_list.htm b/interface/web/sites/templates/user_quota_stats_list.htm
index c7265c011162df173656ca9adb759153bbbcee28..7201ac3ec50fd05b2268cbcce6a9f3d1f2a2f6e5 100644
--- a/interface/web/sites/templates/user_quota_stats_list.htm
+++ b/interface/web/sites/templates/user_quota_stats_list.htm
@@ -47,16 +47,16 @@
                     </tmpl_loop>
                     <tmpl_unless name="records">
                         <tr class="tbl_row_noresults tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
-                            <td colspan="7">{tmpl_var name='globalsearch_noresults_text_txt'}</td>
+                            <td colspan="8">{tmpl_var name='globalsearch_noresults_text_txt'}</td>
                         </tr>
                     </tmpl_unless>
                 </tbody>
                 <tfoot>
                     <tr>
-                        <td colspan="7"><tmpl_var name="paging"></td>
+                        <td colspan="8"><tmpl_var name="paging"></td>
                     </tr>
                 </tfoot>
             </table>
 </div>
-        
+
     </div>
diff --git a/interface/web/sites/templates/web_vhost_domain_edit.htm b/interface/web/sites/templates/web_vhost_domain_edit.htm
index 356e03e2dc608ed9fbb6a2baa45e49c4c7c2362f..c3c004bc00c21c6f935514740fee26690996ebfe 100644
--- a/interface/web/sites/templates/web_vhost_domain_edit.htm
+++ b/interface/web/sites/templates/web_vhost_domain_edit.htm
@@ -278,7 +278,11 @@
 
         <input type="hidden" name="id" value="{tmpl_var name='id'}">
 
-        <div class="clear"><div class="right">
+        <div class="clear">
+          <tmpl_if name='id'><tmpl_if name='show_delete_on_forms' op="==" value="y">
+            <a class="btn btn-default formbutton-danger formbutton-narrow" href="javascript: ISPConfig.confirm_action('sites/web_vhost_domain_del.php?id={tmpl_var name='id'}&_csrf_id={tmpl_var name='_csrf_id'}&_csrf_key={tmpl_var name='_csrf_key'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span class="icon icon-delete"></span></a>
+          </tmpl_if></tmpl_if>
+          <div class="right">
             <button id="dom-edit-submit" class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}">{tmpl_var name='btn_save_txt'}</button>
             <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="sites/web_vhost_domain_list.php">{tmpl_var name='btn_cancel_txt'}</button>
         </div></div>
diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php
index be9f0911c73ab6228f0f94c069d3b2a5a7068826..81d65f2d84f72210c64a4cf230667de21917973f 100644
--- a/interface/web/sites/web_vhost_domain_edit.php
+++ b/interface/web/sites/web_vhost_domain_edit.php
@@ -843,6 +843,13 @@ class page_action extends tform_actions {
 			$app->tpl->setVar('is_pagespeed_enabled', ($web_config['nginx_enable_pagespeed']));
 		}
 
+               $csrf_token = $app->auth->csrf_token_get('web_vhost_domain_del');
+               $app->tpl->setVar('_csrf_id', $csrf_token['csrf_id']);
+               $app->tpl->setVar('_csrf_key', $csrf_token['csrf_key']);
+
+               $global_config = $app->getconf->get_global_config();
+               $app->tpl->setVar('show_delete_on_forms', $global_config['misc']['show_delete_on_forms']);
+
 		$app->tpl->setVar('app_module', 'sites');
 
 		parent::onShowEnd();
diff --git a/interface/web/tools/lib/lang/de_import_ispconfig.lng b/interface/web/tools/lib/lang/de_import_ispconfig.lng
index d8ae6cf1a7b3270abd977a50274b9d6ba9f93a61..b7a491da655a02f3ac31cca081cdc81e7f8aaa7b 100644
--- a/interface/web/tools/lib/lang/de_import_ispconfig.lng
+++ b/interface/web/tools/lib/lang/de_import_ispconfig.lng
@@ -1,23 +1,23 @@
 <?php
-$wb['head_txt'] = 'Importiere E-Mail Konfiguration aus ISPConfig 3';
+$wb['head_txt'] = 'Importiere E-Mail-Konfiguration aus ISPConfig 3';
 $wb['legend_txt'] = 'Verbindungsdetails vom entfernten Server';
-$wb['legend2_txt'] = 'Importiere E-Mail Domain';
+$wb['legend2_txt'] = 'Importiere E-Mail-Domain';
 $wb['resync_sites_txt'] = 'Webseiten';
-$wb['resync_ftp_txt'] = 'FTP Benutzer';
-$wb['resync_shell_txt'] = 'Shell Benutzer';
+$wb['resync_ftp_txt'] = 'FTP-Benutzer';
+$wb['resync_shell_txt'] = 'Shell-Benutzer';
 $wb['resync_cron_txt'] = 'Cronjobs';
 $wb['resync_db_txt'] = 'Datenbanken';
-$wb['resync_mailbox_txt'] = 'E-Mail Konten';
-$wb['resync_dns_txt'] = 'DNS Einträge';
+$wb['resync_mailbox_txt'] = 'E-Mail-Konten';
+$wb['resync_dns_txt'] = 'DNS-Einträge';
 $wb['btn_start_txt'] = 'Starte Importieren';
 $wb['btn_connect_txt'] = 'Zum entfernten Server verbinden';
 $wb['btn_cancel_txt'] = 'Abbrechen';
 $wb['client_group_id_txt'] = 'Lokaler Kunde';
-$wb['mail_domain_txt'] = 'Entfernte E-Mail Domain';
-$wb['import_mailbox_txt'] = 'E-Mail Konto importieren';
-$wb['import_aliasdomain_txt'] = 'Alias Domain importieren';
-$wb['import_alias_txt'] = 'E-Mail Alias importieren';
+$wb['mail_domain_txt'] = 'Entfernte E-Mail-Domain';
+$wb['import_mailbox_txt'] = 'E-Mail-Konto importieren';
+$wb['import_aliasdomain_txt'] = 'Alias-Domain importieren';
+$wb['import_alias_txt'] = 'E-Mail-Alias importieren';
 $wb['import_forward_txt'] = 'Weiterleitungen importieren';
-$wb['import_user_filter_txt'] = 'Benutzer Filter importieren';
+$wb['import_user_filter_txt'] = 'Benutzer-Filter importieren';
 $wb['import_spamfilter_txt'] = 'Spamfilter importieren';
 ?>
diff --git a/interface/web/tools/lib/lang/de_import_vpopmail.lng b/interface/web/tools/lib/lang/de_import_vpopmail.lng
index 66fe56da1c7b170aaafa907796c2e5902387fc28..26741130c2fff015754d2ccc0b2344b9a62b2e24 100644
--- a/interface/web/tools/lib/lang/de_import_vpopmail.lng
+++ b/interface/web/tools/lib/lang/de_import_vpopmail.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['head_txt'] = 'Import email configuration from Vpopmail';
-$wb['legend_txt'] = 'Remote database server connection details';
-$wb['btn_start_txt'] = 'Start Import';
-$wb['btn_connect_txt'] = 'Connect to remote server';
-$wb['btn_cancel_txt'] = 'Cancel';
+$wb['head_txt'] = 'E-Mail-Konfiguration aus Vpopmail importieren';
+$wb['legend_txt'] = 'Verbindungsdetails des entfernten Datenbankservers';
+$wb['btn_start_txt'] = 'Import starten';
+$wb['btn_connect_txt'] = 'Verbindung zum entfernten Server herstellen';
+$wb['btn_cancel_txt'] = 'Abbrechen';
 ?>
diff --git a/interface/web/tools/lib/lang/de_index.lng b/interface/web/tools/lib/lang/de_index.lng
index 8cde04515ecb9600722f4222cc0ee9de0df76db3..29167401df6dca4216e1d6f1f0cf9385aded966e 100644
--- a/interface/web/tools/lib/lang/de_index.lng
+++ b/interface/web/tools/lib/lang/de_index.lng
@@ -1,4 +1,4 @@
 <?php
-$wb['page_head_txt'] = 'ISPConfig Einstellungen';
+$wb['page_head_txt'] = 'ISPConfig-Einstellungen';
 $wb['page_desc_txt'] = 'Benutzereinstellungen ändern';
 ?>
diff --git a/interface/web/tools/lib/lang/de_resync.lng b/interface/web/tools/lib/lang/de_resync.lng
index 5a9a60e15fb91c684e1b228b339fe151a03abf16..94b6a26278baf4948a40df1b4ac93f85be62adf6 100644
--- a/interface/web/tools/lib/lang/de_resync.lng
+++ b/interface/web/tools/lib/lang/de_resync.lng
@@ -4,15 +4,15 @@ $wb['legend_txt'] = 'Resync';
 $wb['resync_all_txt'] = 'Alle Dienste';
 $wb['resync_sites_txt'] = 'Webseiten';
 $wb['resync_ftp_txt'] = 'FTP-Benutzer';
-$wb['resync_webdav_txt'] = 'WebDAV Benutzer';
-$wb['resync_shell_txt'] = 'Shell Benutzer';
+$wb['resync_webdav_txt'] = 'WebDAV-Benutzer';
+$wb['resync_shell_txt'] = 'Shell-Benutzer';
 $wb['resync_cron_txt'] = 'Cronjobs';
-$wb['resync_db_txt'] = 'Kunden Datenbankeinstellungen';
+$wb['resync_db_txt'] = 'Kunden-Datenbankeinstellungen';
 $wb['resync_mailbox_txt'] = 'Mailkonten';
 $wb['resync_mail_txt'] = 'Maildomains';
 $wb['resync_mailfilter_txt'] = 'Mailfilter';
 $wb['resync_mailinglist_txt'] = 'Mailinglist';
-$wb['resync_dns_txt'] = 'DNS Einträge';
+$wb['resync_dns_txt'] = 'DNS-Einträge';
 $wb['resync_vserver_txt'] = 'vServer';
 $wb['resync_client_txt'] = 'Kunden und Reseller';
 $wb['all_active_txt'] = 'Alle aktiven Server';
@@ -24,30 +24,30 @@ $wb['all_active_db_txt'] = 'Alle aktive Datenbank-Server';
 $wb['all_active_vserver_txt'] = 'Alle aktive vServer';
 $wb['do_sites_txt'] = 'Resynced Webseiten';
 $wb['do_ftp_txt'] = 'Resynced FTP-Benutzer';
-$wb['do_webdav_txt'] = 'Resynced WebDav Benutzer';
-$wb['do_shell_txt'] = 'Resynced Shell Benutzer';
+$wb['do_webdav_txt'] = 'Resynced WebDav-Benutzer';
+$wb['do_shell_txt'] = 'Resynced Shell-Benutzer';
 $wb['do_cron_txt'] = 'Resynced Cronjob';
-$wb['do_db_user_txt'] = 'Resynced Datenbank Benutzer';
+$wb['do_db_user_txt'] = 'Resynced Datenbank-Benutzer';
 $wb['do_db_txt'] = 'Resynced Datenbank';
 $wb['do_mail_txt'] = 'Resynced Maildomain';
 $wb['do_mailbox_txt'] = 'Resynced Mailkonto';
 $wb['do_mail_alias_txt'] = 'Resynced Alias';
-$wb['do_mail_access_txt'] = 'Resynced Mail Access';
-$wb['do_mail_contentfilter_txt'] = 'Resynced Content Filter';
-$wb['do_mail_userfilter_txt'] = 'Resynced Mail User Filter';
+$wb['do_mail_access_txt'] = 'Resynced Mail-Access';
+$wb['do_mail_contentfilter_txt'] = 'Resynced Content-Filter';
+$wb['do_mail_userfilter_txt'] = 'Resynced Mail-Benutzer-Filter';
 $wb['do_mailinglist_txt'] = 'Resynced Mailinglist';
-$wb['do_dns_txt'] = 'Resynced DNS Zone';
+$wb['do_dns_txt'] = 'Resynced DNS-Zonen';
 $wb['do_vserver_txt'] = 'Resynced vServer';
 $wb['do_clients_txt'] = 'Resynced Kunden und Reseller';
 $wb['no_results_txt'] = 'Keine Daten vorhanden';
 $wb['btn_start_txt'] = 'Start';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['do_mail_spamfilter_policy_txt'] = 'Resynced Spamfilter Policies';
+$wb['btn_cancel_txt'] = 'Abbrechen';
+$wb['do_mail_spamfilter_policy_txt'] = 'Resynced Spamfilter-Richtlinien';
 $wb['do_mail_spamfilter_txt'] = 'Resynced Spamfilter';
 $wb['do_mailget_txt'] = 'Resynced Fetchmail';
-$wb['resync_mailget_txt'] = 'E-Mail Sammeldienst';
-$wb['resync_mailtransport_txt'] = 'E-Mail Transport';
-$wb['resync_mailrelay_txt'] = 'E-Mail Relay';
+$wb['resync_mailget_txt'] = 'E-Mail-Sammeldienst';
+$wb['resync_mailtransport_txt'] = 'E-Mail-Transport';
+$wb['resync_mailrelay_txt'] = 'E-Mail-Relay';
 $wb['do_mailtransport_txt'] = 'Resynced Mailtransport';
 $wb['do_mailrelay_txt'] = 'Resynced Mailrelay';
 ?>
diff --git a/interface/web/tools/lib/lang/de_tpl_default.lng b/interface/web/tools/lib/lang/de_tpl_default.lng
index 45de148b39202bf0eb7f6929fd70b0a1d0c1d38f..fa2985a2a754d0f0f5987a56f3a60b0882cac34a 100644
--- a/interface/web/tools/lib/lang/de_tpl_default.lng
+++ b/interface/web/tools/lib/lang/de_tpl_default.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['no_settings_txt'] = 'Es gibt keine Einstellmöglichkeiten für das Standard Design.';
+$wb['no_settings_txt'] = 'Es gibt keine Einstellmöglichkeiten für das Standarddesign.';
 $wb['btn_start_txt'] = 'Speichern';
 $wb['btn_cancel_txt'] = 'Zurück';
-$wb['list_head_txt'] = 'Standard Design Einstellungen';
-$wb['list_desc_txt'] = 'Spezielle Optionen des standard Designs ändern';
+$wb['list_head_txt'] = 'Standarddesign Einstellungen';
+$wb['list_desc_txt'] = 'Spezielle Optionen des Standarddesigns ändern';
 ?>
diff --git a/interface/web/tools/lib/lang/de_usersettings.lng b/interface/web/tools/lib/lang/de_usersettings.lng
index e66f2db650f617d2eabd537f70bc02afd8b32e65..a2de90f397d72e88c9d647684b1be28e92fcdf3d 100644
--- a/interface/web/tools/lib/lang/de_usersettings.lng
+++ b/interface/web/tools/lib/lang/de_usersettings.lng
@@ -12,5 +12,5 @@ $wb['password_match_txt'] = 'Die Passwörter stimmen überein.';
 $wb['language_txt'] = 'Sprache';
 $wb['startmodule_txt'] = 'Startmodul';
 $wb['app_theme_txt'] = 'Design';
-$wb['otp_auth_txt'] = 'Two Factor Authentication';
+$wb['otp_auth_txt'] = 'Zwei-Faktor-Authentifizierung';
 ?>
diff --git a/server/lib/classes/backup.inc.php b/server/lib/classes/backup.inc.php
index 7f072aacf1e1f79201eebecae19368e016bbbfc8..07ecdf11d0349d670e333a5879367e26f2e78f44 100644
--- a/server/lib/classes/backup.inc.php
+++ b/server/lib/classes/backup.inc.php
@@ -632,7 +632,14 @@ class backup
         elseif(file_exists($backup_dir.'/'.$filename) && file_exists($domain['document_root'].'/backup/') && !stristr($backup_dir.'/'.$filename, '..') && !stristr($backup_dir.'/'.$filename, 'etc')) {
             $success = copy($backup_dir.'/'.$filename, $domain['document_root'].'/backup/'.$filename);
         }
+        if (file_exists($domain['document_root'].'/backup') && fileowner($domain['document_root'].'/backup') === 0) {
+            // Fix old web backup dir permissions from before #6628
+            chown($domain['document_root'].'/backup', $domain['system_user']);
+            chgrp($domain['document_root'].'/backup', $domain['system_group']);
+            $app->log('Fixed old directory permissions from root:root to '.$domain['system_user'].':'.$domain['system_group'].' for backup dir '.$domain['document_root'].'/backup/', LOGLEVEL_DEBUG);
+        }
         if (file_exists($domain['document_root'].'/backup/'.$filename)) {
+            // Change backup file permissions
             chgrp($domain['document_root'].'/backup/'.$filename, $domain['system_group']);
             chown($domain['document_root'].'/backup/'.$filename, $domain['system_user']);
             chmod($domain['document_root'].'/backup/'.$filename,0600);
diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php
index 5f97ce6454d365b4fb8edf5e9aa20200421debec..c30e83bcc694e8d665aa5cddc918e8ac27348588 100644
--- a/server/plugins-available/apache2_plugin.inc.php
+++ b/server/plugins-available/apache2_plugin.inc.php
@@ -717,7 +717,7 @@ class apache2_plugin {
 		if(!is_dir($data['new']['document_root'].'/cgi-bin')) $app->system->mkdirpath($data['new']['document_root'].'/cgi-bin');
 		if(!is_dir($data['new']['document_root'].'/tmp')) $app->system->mkdirpath($data['new']['document_root'].'/tmp', 0770);
 		if(!is_dir($data['new']['document_root'].'/webdav')) $app->system->mkdirpath($data['new']['document_root'].'/webdav');
-		if(!is_dir($data['new']['document_root'].'/backup')) $app->system->mkdirpath($data['new']['document_root'].'/backup');
+		if(!is_dir($data['new']['document_root'].'/backup')) $app->system->mkdirpath($data['new']['document_root'].'/backup', 0755, $username, $groupname);
 
 		if(!is_dir($data['new']['document_root'].'/.ssh')) {
 			$app->system->mkdirpath($data['new']['document_root'].'/.ssh');
diff --git a/server/plugins-available/bind_plugin.inc.php b/server/plugins-available/bind_plugin.inc.php
index 452ef1b9ae62727ca697c65921f1cc4089bc4b9e..9be9278269d70b1c5bc7ededa5daae2ac0a73934 100644
--- a/server/plugins-available/bind_plugin.inc.php
+++ b/server/plugins-available/bind_plugin.inc.php
@@ -352,7 +352,7 @@ class bind_plugin {
 				$loglevel = @($dns_config['disable_bind_log'] === 'y') ? LOGLEVEL_DEBUG : LOGLEVEL_WARN;
 				$app->log("Writing BIND domain file failed: ".$filename." ".implode(' ', $out), $loglevel);
 				if(is_array($out) && !empty($out)){
-					$app->log('Reason for Bind restart failure: '.implode("\n", $out), $loglevel);
+					$app->log('Reason for Bind zone check failure: '.implode("\n", $out), $loglevel);
 					$app->dbmaster->datalogError(implode("\n", $out));
 				}
 				if ($old_zonefile != '') {
@@ -402,7 +402,7 @@ class bind_plugin {
  		}
 
 		//* Restart bind nameserver if update_acl is not empty, otherwise reload it
-		if($data['new']['update_acl'] != '') {
+               if(!empty($data['new']['update_acl'])) {
 			$app->services->restartServiceDelayed('bind', 'restart');
 		} else {
 			$app->services->restartServiceDelayed('bind', 'reload');
@@ -505,7 +505,10 @@ class bind_plugin {
 		$data["new"] = $tmp;
 		$data["old"] = $tmp;
 		$this->action = 'update';
-		$this->soa_update($event_name, $data);
+
+		if (isset($data['new']['active']) && $data['new']['active'] == 'Y') {
+			$this->soa_update($event_name, $data);
+		}
 
 	}
 
@@ -525,11 +528,15 @@ class bind_plugin {
 		global $app, $conf;
 
 		//* Get the data of the soa and call soa_update
+               //* In a singel server setup the record in dns_soa will already be gone ... so this will give an empty array.
 		$tmp = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = ?", $data['old']['zone']);
 		$data["new"] = $tmp;
 		$data["old"] = $tmp;
 		$this->action = 'update';
-		$this->soa_update($event_name, $data);
+
+		if (isset($data['new']['active']) && $data['new']['active'] == 'Y') {
+			$this->soa_update($event_name, $data);
+		}
 
 	}
 
diff --git a/server/plugins-available/cron_jailkit_plugin.inc.php b/server/plugins-available/cron_jailkit_plugin.inc.php
index 08f039b3710de060a8ff0a0a212833b9087c46d2..ea3cb2d04ff27431e4bd89a5960fcda0ac0383f7 100644
--- a/server/plugins-available/cron_jailkit_plugin.inc.php
+++ b/server/plugins-available/cron_jailkit_plugin.inc.php
@@ -229,7 +229,7 @@ class cron_jailkit_plugin {
 
 	function _setup_jailkit_chroot()
 	{
-		global $app;
+		global $app, $conf;
 
 		if (isset($this->jailkit_config) && isset($this->jailkit_config['jailkit_hardlinks'])) {
 			if ($this->jailkit_config['jailkit_hardlinks'] == 'yes') {
@@ -293,7 +293,7 @@ class cron_jailkit_plugin {
 			$programs = $this->jailkit_config['jailkit_chroot_app_programs'] . ' '
 				  . $this->jailkit_config['jailkit_chroot_cron_programs'];
 
-			if ($update_hash == $parent_domain['last_jailkit_hash']) {
+			if ($update_hash == $this->parent_domain['last_jailkit_hash']) {
 				return;
 			}
 
diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php
index 5ab2bcba331aa6ebd41221caba0785c98bcc47b0..c4ab7c2665b899d80c111a6be21ffd8fe0e20352 100644
--- a/server/plugins-available/nginx_plugin.inc.php
+++ b/server/plugins-available/nginx_plugin.inc.php
@@ -561,7 +561,7 @@ class nginx_plugin {
 		if(!is_dir($data['new']['document_root'].'/ssl')) $app->system->mkdirpath($data['new']['document_root'].'/ssl');
 		if(!is_dir($data['new']['document_root'].'/cgi-bin')) $app->system->mkdirpath($data['new']['document_root'].'/cgi-bin');
 		if(!is_dir($data['new']['document_root'].'/tmp')) $app->system->mkdirpath($data['new']['document_root'].'/tmp');
-		if(!is_dir($data['new']['document_root'].'/backup')) $app->system->mkdirpath($data['new']['document_root'].'/backup');
+		if(!is_dir($data['new']['document_root'].'/backup')) $app->system->mkdirpath($data['new']['document_root'].'/backup', 0755, $username, $groupname);
 
 		if(!is_dir($data['new']['document_root'].'/.ssh')) {
 			$app->system->mkdirpath($data['new']['document_root'].'/.ssh');
diff --git a/server/plugins-available/rspamd_plugin.inc.php b/server/plugins-available/rspamd_plugin.inc.php
index c3a60d0bb9d6afdcada299c25beabe1eaa26e7c7..0e40d3b71f1245eb2e1aa781c6ac604b5b93e094 100644
--- a/server/plugins-available/rspamd_plugin.inc.php
+++ b/server/plugins-available/rspamd_plugin.inc.php
@@ -282,74 +282,76 @@ class rspamd_plugin {
 				$app->system->mkdirpath($this->users_config_dir);
 			}
 
-			if((!$this->isValidEmail($app->functions->idn_encode($email_address))) || !isset($data['new']['policy_id']) || intval($data['new']['policy_id']) == 0 && $type == 'spamfilter_user') {
-				if(is_file($settings_file)) {
-					unlink($settings_file);
-				}
-			} else {
-
-				$app->load('tpl');
-
-				$tpl = new tpl();
-				if (file_exists($conf['rootpath']."/conf-custom/install/rspamd_users.inc.conf.master")) {
-					$tpl->newTemplate($conf['rootpath']."/conf-custom/install/rspamd_users.inc.conf.master");
+			if ($type == 'spamfilter_user'){
+				if((!$this->isValidEmail($app->functions->idn_encode($email_address))) || !isset($data['new']['policy_id']) || intval($data['new']['policy_id']) == 0) {
+					if(is_file($settings_file)) {
+						unlink($settings_file);
+					}
 				} else {
-					$tpl->newTemplate("rspamd_users.inc.conf.master");
-				}
 
-				$tpl->setVar('record_identifier', 'ispc_' . $type . '_' . $entry_id);
-				$tpl->setVar('priority', $settings_priority);
+					$app->load('tpl');
 
-				if($type === 'spamfilter_user') {
-					if($data[$use_data]['local'] === 'Y') {
-						$tpl->setVar('to_email', $app->functions->idn_encode($email_address));
+					$tpl = new tpl();
+					if (file_exists($conf['rootpath']."/conf-custom/install/rspamd_users.inc.conf.master")) {
+						$tpl->newTemplate($conf['rootpath']."/conf-custom/install/rspamd_users.inc.conf.master");
 					} else {
-						$tpl->setVar('from_email', $app->functions->idn_encode($email_address));
+						$tpl->newTemplate("rspamd_users.inc.conf.master");
 					}
-					// unneded? $spamfilter appears unused
-					$spamfilter = $data[$use_data];
-				} else {
-					$tpl->setVar('to_email', $app->functions->idn_encode($email_address));
 
-					// need to get matching spamfilter user if any
-					// unneded? $spamfilter appears unused
-					$spamfilter = $app->db->queryOneRecord('SELECT * FROM spamfilter_users WHERE `email` = ?', $email_address);
-				}
+					$tpl->setVar('record_identifier', 'ispc_' . $type . '_' . $entry_id);
+					$tpl->setVar('priority', $settings_priority);
+
+					if($type === 'spamfilter_user') {
+						if($data[$use_data]['local'] === 'Y') {
+							$tpl->setVar('to_email', $app->functions->idn_encode($email_address));
+						} else {
+							$tpl->setVar('from_email', $app->functions->idn_encode($email_address));
+						}
+						// unneded? $spamfilter appears unused
+						$spamfilter = $data[$use_data];
+					} else {
+						$tpl->setVar('to_email', $app->functions->idn_encode($email_address));
 
-				if(!isset($policy['rspamd_spam_tag_level'])) {
-					$policy['rspamd_spam_tag_level'] = 6.0;
-				}
-				if(!isset($policy['rspamd_spam_tag_method'])) {
-					$policy['rspamd_spam_tag_method'] = 'add_header';
-				}
-				if(!isset($policy['rspamd_spam_kill_level'])) {
-					$policy['rspamd_spam_kill_level'] = 15.0;
-				}
-				if(!isset($policy['rspamd_virus_kill_level'])) {
-					$policy['rspamd_virus_kill_level'] = floatval($policy['rspamd_spam_kill_level']) + 1000;
-				}
+						// need to get matching spamfilter user if any
+						// unneded? $spamfilter appears unused
+						$spamfilter = $app->db->queryOneRecord('SELECT * FROM spamfilter_users WHERE `email` = ?', $email_address);
+					}
 
-				$tpl->setVar('rspamd_spam_tag_level', floatval($policy['rspamd_spam_tag_level']));
-				$tpl->setVar('rspamd_spam_tag_method', $policy['rspamd_spam_tag_method']);
-				$tpl->setVar('rspamd_spam_kill_level', floatval($policy['rspamd_spam_kill_level']));
-				$tpl->setVar('rspamd_virus_kill_level', floatval($policy['rspamd_spam_kill_level']) + 1000);
+					if(!isset($policy['rspamd_spam_tag_level'])) {
+						$policy['rspamd_spam_tag_level'] = 6.0;
+					}
+					if(!isset($policy['rspamd_spam_tag_method'])) {
+						$policy['rspamd_spam_tag_method'] = 'add_header';
+					}
+					if(!isset($policy['rspamd_spam_kill_level'])) {
+						$policy['rspamd_spam_kill_level'] = 15.0;
+					}
+					if(!isset($policy['rspamd_virus_kill_level'])) {
+						$policy['rspamd_virus_kill_level'] = floatval($policy['rspamd_spam_kill_level']) + 1000;
+					}
 
-				if(isset($policy['spam_lover']) && $policy['spam_lover'] == 'Y') {
-					$tpl->setVar('spam_lover', true);
-				}
-				if(isset($policy['virus_lover']) && $policy['virus_lover'] == 'Y') {
-					$tpl->setVar('virus_lover', true);
-				}
+					$tpl->setVar('rspamd_spam_tag_level', floatval($policy['rspamd_spam_tag_level']));
+					$tpl->setVar('rspamd_spam_tag_method', $policy['rspamd_spam_tag_method']);
+					$tpl->setVar('rspamd_spam_kill_level', floatval($policy['rspamd_spam_kill_level']));
+					$tpl->setVar('rspamd_virus_kill_level', floatval($policy['rspamd_spam_kill_level']) + 1000);
 
-				$tpl->setVar('greylisting', $greylisting);
+					if(isset($policy['spam_lover']) && $policy['spam_lover'] == 'Y') {
+						$tpl->setVar('spam_lover', true);
+					}
+					if(isset($policy['virus_lover']) && $policy['virus_lover'] == 'Y') {
+						$tpl->setVar('virus_lover', true);
+					}
 
-				if(isset($policy['rspamd_spam_greylisting_level'])) {
-					$tpl->setVar('greylisting_level', floatval($policy['rspamd_spam_greylisting_level']));
-				} else {
-					$tpl->setVar('greylisting_level', 0.1);
-				}
+					$tpl->setVar('greylisting', $greylisting);
 
-				$app->system->file_put_contents($settings_file, $tpl->grab());
+					if(isset($policy['rspamd_spam_greylisting_level'])) {
+						$tpl->setVar('greylisting_level', floatval($policy['rspamd_spam_greylisting_level']));
+					} else {
+						$tpl->setVar('greylisting_level', 0.1);
+					}
+
+					$app->system->file_put_contents($settings_file, $tpl->grab());
+				}
 			}
 		}