diff --git a/install/dist/conf/centos70.conf.php b/install/dist/conf/centos70.conf.php
index 84b90b732a25209fbead179a09aed4deba76b4a5..ec59c754cb3c93ead89f61738982bd9f4ba5756f 100644
--- a/install/dist/conf/centos70.conf.php
+++ b/install/dist/conf/centos70.conf.php
@@ -43,6 +43,7 @@ $conf['init_scripts'] = '/etc/init.d';
 $conf['runlevel'] = '/etc';
 $conf['shells'] = '/etc/shells';
 $conf['pam'] = '/etc/pam.d';
+$conf['default_php'] = "5.4";
 
 //* Services provided by this server, this selection will be overridden by the expert mode
 $conf['services']['mail'] = true;
diff --git a/install/dist/conf/centos72.conf.php b/install/dist/conf/centos72.conf.php
index 9f2c84140c47e168ff69b37501b90cd871cb0686..a00b9b53e023de33e1bed3d0bb01027171a3b772 100644
--- a/install/dist/conf/centos72.conf.php
+++ b/install/dist/conf/centos72.conf.php
@@ -43,6 +43,7 @@ $conf['init_scripts'] = '/etc/init.d';
 $conf['runlevel'] = '/etc';
 $conf['shells'] = '/etc/shells';
 $conf['pam'] = '/etc/pam.d';
+$conf['default_php'] = "5.4";
 
 //* Services provided by this server, this selection will be overridden by the expert mode
 $conf['services']['mail'] = true;
diff --git a/install/dist/conf/centos80.conf.php b/install/dist/conf/centos80.conf.php
index b69e578d40e089368bf17d0c33b0086c3a1fd314..9e702b0b7442ad7526a63864a5a75892b410e3c4 100644
--- a/install/dist/conf/centos80.conf.php
+++ b/install/dist/conf/centos80.conf.php
@@ -43,6 +43,7 @@ $conf['init_scripts'] = '/etc/init.d';
 $conf['runlevel'] = '/etc';
 $conf['shells'] = '/etc/shells';
 $conf['pam'] = '/etc/pam.d';
+$conf['default_php'] = "7.2";
 
 //* Services provided by this server, this selection will be overridden by the expert mode
 $conf['services']['mail'] = true;
diff --git a/install/dist/conf/debian100.conf.php b/install/dist/conf/debian100.conf.php
index c98a2677ec2f1f89f4294a4d5118df77c43bcfe7..b23bbbf32c3a64a8fc949e4a347ee5c8555b1b7d 100644
--- a/install/dist/conf/debian100.conf.php
+++ b/install/dist/conf/debian100.conf.php
@@ -43,6 +43,7 @@ $conf['init_scripts'] = '/etc/init.d';
 $conf['runlevel'] = '/etc';
 $conf['shells'] = '/etc/shells';
 $conf['pam'] = '/etc/pam.d';
+$conf['default_php'] = "7.3";
 
 //* Services provided by this server, this selection will be overridden by the expert mode
 $conf['services']['mail'] = true;
diff --git a/install/dist/conf/debian110.conf.php b/install/dist/conf/debian110.conf.php
index 8b81c8680c0b015ece0ae42ef96647aa4591c1dc..a1754722e56f773f20dbd3cb61391bc74e7be659 100644
--- a/install/dist/conf/debian110.conf.php
+++ b/install/dist/conf/debian110.conf.php
@@ -43,6 +43,7 @@ $conf['init_scripts'] = '/etc/init.d';
 $conf['runlevel'] = '/etc';
 $conf['shells'] = '/etc/shells';
 $conf['pam'] = '/etc/pam.d';
+$conf['default_php'] = "7.4";
 
 //* Services provided by this server, this selection will be overridden by the expert mode
 $conf['services']['mail'] = true;
diff --git a/install/dist/conf/debian90.conf.php b/install/dist/conf/debian90.conf.php
index 906fda1c0e09eecbb0f1a223a9aea7a13b07433a..64e22fea285a6a014027c531cdc9ca9b152d97ee 100644
--- a/install/dist/conf/debian90.conf.php
+++ b/install/dist/conf/debian90.conf.php
@@ -43,6 +43,7 @@ $conf['init_scripts'] = '/etc/init.d';
 $conf['runlevel'] = '/etc';
 $conf['shells'] = '/etc/shells';
 $conf['pam'] = '/etc/pam.d';
+$conf['default_php'] = "7.0";
 
 //* Services provided by this server, this selection will be overridden by the expert mode
 $conf['services']['mail'] = true;
diff --git a/install/dist/conf/debiantesting.conf.php b/install/dist/conf/debiantesting.conf.php
index 03f2612377330d50b7f5614693008d8982b5fcd0..e2fa04f8ab9bf5b6b63ce234d941b65af3e32c91 100644
--- a/install/dist/conf/debiantesting.conf.php
+++ b/install/dist/conf/debiantesting.conf.php
@@ -32,7 +32,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 //* Main
 $conf['language'] = 'en';
-$conf['distname'] = 'debian110';
+$conf['distname'] = 'debian120';
 $conf['hostname'] = 'server1.domain.tld'; // Full hostname
 $conf['ispconfig_install_dir'] = '/usr/local/ispconfig';
 $conf['ispconfig_config_dir'] = '/usr/local/ispconfig';
@@ -43,6 +43,7 @@ $conf['init_scripts'] = '/etc/init.d';
 $conf['runlevel'] = '/etc';
 $conf['shells'] = '/etc/shells';
 $conf['pam'] = '/etc/pam.d';
+$conf['default_php'] = "8.1";
 
 //* Services provided by this server, this selection will be overridden by the expert mode
 $conf['services']['mail'] = true;
diff --git a/install/dist/conf/ubuntu1604.conf.php b/install/dist/conf/ubuntu1604.conf.php
index b7c68c7bbf9c78eded96adfda2977ed1d53cd6fe..3758eeff30619b46dfdaef8eb8ae1e152a695238 100644
--- a/install/dist/conf/ubuntu1604.conf.php
+++ b/install/dist/conf/ubuntu1604.conf.php
@@ -43,6 +43,7 @@ $conf['init_scripts'] = '/etc/init.d';
 $conf['runlevel'] = '/etc';
 $conf['shells'] = '/etc/shells';
 $conf['pam'] = '/etc/pam.d';
+$conf['default_php'] = "7.0";
 
 //* Services provided by this server, this selection will be overridden by the expert mode
 $conf['services']['mail'] = true;
diff --git a/install/dist/conf/ubuntu1804.conf.php b/install/dist/conf/ubuntu1804.conf.php
index 319930698b81d4c5708b530afc7bfac462c312f8..6dc51a13c77a776389002b1ed4485372b462eb31 100644
--- a/install/dist/conf/ubuntu1804.conf.php
+++ b/install/dist/conf/ubuntu1804.conf.php
@@ -43,6 +43,7 @@ $conf['init_scripts'] = '/etc/init.d';
 $conf['runlevel'] = '/etc';
 $conf['shells'] = '/etc/shells';
 $conf['pam'] = '/etc/pam.d';
+$conf['default_php'] = "7.2";
 
 //* Services provided by this server, this selection will be overridden by the expert mode
 $conf['services']['mail'] = true;
diff --git a/install/dist/conf/ubuntu2004.conf.php b/install/dist/conf/ubuntu2004.conf.php
index 546e2f57d7df7c472d9c0c2862d8a45fcbdb48f9..2cde7e3200f0366aabe5fffd1d0f453dac7a8e94 100644
--- a/install/dist/conf/ubuntu2004.conf.php
+++ b/install/dist/conf/ubuntu2004.conf.php
@@ -43,6 +43,7 @@ $conf['init_scripts'] = '/etc/init.d';
 $conf['runlevel'] = '/etc';
 $conf['shells'] = '/etc/shells';
 $conf['pam'] = '/etc/pam.d';
+$conf['default_php'] = "7.4";
 
 //* Services provided by this server, this selection will be overridden by the expert mode
 $conf['services']['mail'] = true;
diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index 05312093120cce474839bce6775a40393bb8cc05..6a2fe64c133bbec6c737fb6c4c807f2db6a1e4c5 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -246,10 +246,15 @@ class installer_base {
 
 	//** Check prerequisites
 	public function check_prerequisites() {
+		global $conf;
+		
 		$msg = '';
 
-		if(version_compare(phpversion(), '5.4', '<')) $msg .= "PHP Version 5.4 or newer is required. The currently used PHP version is ".phpversion().".\n";
-		if(version_compare(phpversion(), '8.2', '>=')) $msg .= "PHP Version 8.2+ is not supported yet. Change PHP version back to the default version of the OS. The currently used PHP version is ".phpversion().".\n";
+		if ($conf['default_php'] != '') {
+			if(version_compare(phpversion('tidy'), $conf['default_php'], '==')) $msg .= "Your PHP version is not the OS default. Change the PHP version back to the default version of the OS. The currently used PHP version is " . phpversion() . "The default version for your OS is PHP " . $conf['default_php'] . ".\n";
+		}
+		if(version_compare(phpversion(), '5.4', '<')) $msg .= "PHP Version 5.4 or newer is required. The currently used PHP version is " . phpversion() . ".\n";
+		//if(version_compare(phpversion(), '8.2', '>=')) $msg .= "PHP Version 8.2+ is not supported yet. Change the PHP version back to the default version of the OS. The currently used PHP version is " . phpversion() . ".\n";
 		if(!function_exists('curl_init')) $msg .= "PHP Curl Module is missing.\n";
 		if(!function_exists('mysqli_connect')) $msg .= "PHP MySQLi Module is nmissing.\n";
 		if(!function_exists('mb_detect_encoding')) $msg .= "PHP Multibyte Module (MB) is missing.\n";
@@ -1068,6 +1073,14 @@ class installer_base {
 		return true;
 	}
 
+	public function get_postfix_version() {
+		//* Get postfix version
+		exec('postconf -d mail_version 2>&1', $out);
+		$postfix_version = preg_replace('/.*=\s*/', '', $out[0]);
+		unset($out);
+		return $postfix_version;
+	}
+
 	public function configure_postfix($options = '') {
 		global $conf,$autoinstall;
 		$cf = $conf['postfix'];
@@ -1077,10 +1090,7 @@ class installer_base {
 			$this->error("The postfix configuration directory '$config_dir' does not exist.");
 		}
 
-		//* Get postfix version
-		exec('postconf -d mail_version 2>&1', $out);
-		$postfix_version = preg_replace('/.*=\s*/', '', $out[0]);
-		unset($out);
+		$postfix_version = $this->get_postfix_version();
 
 		//* Install virtual mappings
 		foreach (glob('tpl/mysql-virtual_*.master') as $filename) {
@@ -1479,8 +1489,7 @@ class installer_base {
 
 		$config_dir = $conf['postfix']['config_dir'];
 		$quoted_config_dir = preg_quote($config_dir, '|');
-		$postfix_version = `postconf -d mail_version 2>/dev/null`;
-		$postfix_version = preg_replace( '/mail_version\s*=\s*(.*)\s*/', '$1', $postfix_version );
+		$postfix_version = $this->get_postfix_version();
 
 		//* Configure master.cf and add a line for deliver
 		if(!$this->get_postfix_service('dovecot', 'unix')) {
@@ -1722,6 +1731,7 @@ class installer_base {
 						break;
 					}
 				}
+				$postfix_version = $this->get_postfix_version();
 				# postfix < 3.3 needs this when using reject_unverified_recipient:
 				if(version_compare($postfix_version, 3.3, '<')) {
 					$postconf_commands[] = "enable_original_recipient = yes";
diff --git a/install/update.php b/install/update.php
index 35a68cccb6b70a4fc9d977431ca5d52f67fee3b1..37a0919999ed6dc4e398d94335f4fc1ce4122520 100644
--- a/install/update.php
+++ b/install/update.php
@@ -369,7 +369,7 @@ $conf['services']['db'] = check_service_config_state('db_server', true); /* Will
 unset($current_svc_config);
 
 //** Write new decisions into DB
-$sql = "UPDATE ?? SET mail_server = '{$conf['services']['mail']}', web_server = '{$conf['services']['web']}', dns_server = '{$conf['services']['dns']}', file_server = '{$conf['services']['file']}', db_server = '{$conf['services']['db']}', vserver_server = '{$conf['services']['vserver']}', proxy_server = '{$conf['services']['proxy']}', firewall_server = '$firewall_server_enabled', xmpp_server = '$xmpp_server_enabled' WHERE server_id = ?";
+$sql = "UPDATE ?? SET mail_server = '{$conf['services']['mail']}', web_server = '{$conf['services']['web']}', dns_server = '{$conf['services']['dns']}', file_server = '{$conf['services']['file']}', db_server = '{$conf['services']['db']}', vserver_server = '{$conf['services']['vserver']}', proxy_server = '{$conf['services']['proxy']}', firewall_server = '{$conf['services']['firewall']}', xmpp_server = '{$conf['services']['xmpp']}' WHERE server_id = ?";
 $inst->db->query($sql, $conf['mysql']['database'].'.server', $conf['server_id']);
 if($conf['mysql']['master_slave_setup'] == 'y') {
 	$inst->dbmaster->query($sql, $conf['mysql']['master_database'].'.server', $conf['server_id']);
diff --git a/interface/web/client/client_edit.php b/interface/web/client/client_edit.php
index 598c307c8cf16e49f10b6c6f6faddd99816da127..e0b74595fcc51016d6d66a5f7fdaa021a8894581 100644
--- a/interface/web/client/client_edit.php
+++ b/interface/web/client/client_edit.php
@@ -61,7 +61,7 @@ class page_action extends tform_actions {
 			$client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]);
 			$client = $app->db->queryOneRecord("SELECT limit_client FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id);
 
-			// Check if the user may add another website.
+			// Check if the user may add another.
 			if($client["limit_client"] >= 0) {
 				$tmp = $app->db->queryOneRecord("SELECT count(client_id) as number FROM client WHERE sys_groupid = ?", $client_group_id);
 				if($tmp["number"] >= $client["limit_client"]) {
@@ -84,7 +84,7 @@ class page_action extends tform_actions {
 			$client_group_id = $_SESSION["s"]["user"]["default_group"];
 			$client = $app->db->queryOneRecord("SELECT limit_client FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id);
 
-			// Check if the user may add another website.
+			// Check if the user may add another.
 			if($client["limit_client"] >= 0) {
 				$tmp = $app->db->queryOneRecord("SELECT count(client_id) as number FROM client WHERE sys_groupid = ?", $client_group_id);
 				if($tmp["number"] >= $client["limit_client"]) {
diff --git a/interface/web/client/reseller_edit.php b/interface/web/client/reseller_edit.php
index 7cbd6687bc40eefad4f0beaf174cad996595ea17..10da3b78e152a20b8c4dd973790f42d2f4e6b80c 100644
--- a/interface/web/client/reseller_edit.php
+++ b/interface/web/client/reseller_edit.php
@@ -63,7 +63,7 @@ class page_action extends tform_actions {
 			$client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]);
 			$client = $app->db->queryOneRecord("SELECT limit_client FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id);
 
-			// Check if the user may add another website.
+			// Check if the user may add another.
 			if($client["limit_client"] >= 0) {
 				$tmp = $app->db->queryOneRecord("SELECT count(client_id) as number FROM client WHERE sys_groupid = ?", $client_group_id);
 				if($tmp["number"] >= $client["limit_client"]) {
@@ -86,7 +86,7 @@ class page_action extends tform_actions {
 			$client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]);
 			$client = $app->db->queryOneRecord("SELECT limit_client FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id);
 
-			// Check if the user may add another website.
+			// Check if the user may add another.
 			if($client["limit_client"] >= 0) {
 				$tmp = $app->db->queryOneRecord("SELECT count(client_id) as number FROM client WHERE sys_groupid = ?", $client_group_id);
 				if($tmp["number"] >= $client["limit_client"]) {
diff --git a/interface/web/dns/dns_edit_base.php b/interface/web/dns/dns_edit_base.php
index 61c08f6576a9f6eff032b249728d2a0e2210d56e..3d15ec1d8636402fef136de05394826f618b531f 100644
--- a/interface/web/dns/dns_edit_base.php
+++ b/interface/web/dns/dns_edit_base.php
@@ -41,6 +41,10 @@ $app->load('tform_actions');
 class dns_page_action extends tform_actions {
 
 	protected function checkDuplicate() {
+                global $app;
+		// If a CNAME RR is present at a node, no other data should be present
+                $tmp = $app->db->queryOneRecord("SELECT count(dns_rr.id) as number FROM dns_rr LEFT JOIN dns_soa ON dns_rr.zone = dns_soa.id WHERE (type = 'CNAME' AND ( name = replace(?, concat('.', dns_soa.origin), '') or name = ? or name = concat(?,'.',dns_soa.origin) ) AND zone = ? and dns_rr.id != ?)", $this->dataRecord["name"], $this->dataRecord["name"], $this->dataRecord["name"], $this->dataRecord["zone"], $this->id);
+                if($tmp['number'] > 0) return true;
 		return false;
 	}
 
diff --git a/interface/web/dns/dns_soa_edit.php b/interface/web/dns/dns_soa_edit.php
index e17571e73612e8db511c303479aa3c87aed0ae8c..309a84236abc9dffa8b6943a3da54aeec5dae2ba 100644
--- a/interface/web/dns/dns_soa_edit.php
+++ b/interface/web/dns/dns_soa_edit.php
@@ -79,6 +79,16 @@ class page_action extends tform_actions {
 		parent::onShowNew();
 	}
 
+	function onShowEdit() {
+		global $app, $conf;
+
+		parent::onShowEdit();
+
+		if(isset($this->dataRecord)) {
+			$app->tform->formDef['title'] = $app->lng('DNS Zone') . ' ' . $this->dataRecord['origin'];
+		}
+	}
+
 	function onShowEnd() {
 		global $app, $conf;
 
diff --git a/interface/web/dns/lib/lang/nl_dns_slave.lng b/interface/web/dns/lib/lang/nl_dns_slave.lng
index 2cf4d13922dd5bb9ac1d36942c318e478b79fb53..f2f944042f5962785cd41d6c414f2aee73864d5e 100644
--- a/interface/web/dns/lib/lang/nl_dns_slave.lng
+++ b/interface/web/dns/lib/lang/nl_dns_slave.lng
@@ -3,7 +3,7 @@ $wb['server_id_txt'] = 'Server';
 $wb['origin_txt'] = 'DNS Zone';
 $wb['ns_txt'] = 'NS';
 $wb['active_txt'] = 'Actief';
-$wb['limit_dns_slave_zone_txt'] = 'Het max. aan secundary DNS records voor uw account is bereikt.';
+$wb['limit_dns_slave_zone_txt'] = 'Het max. aan secundary DNS zones voor uw account is bereikt.';
 $wb['client_txt'] = 'Klant';
 $wb['xfer_txt'] = 'Sta zone transfers toe naar <br />deze IPs (komma gescheiden waarden)';
 $wb['server_id_error_empty'] = 'Geen server geselecteerd';
@@ -11,7 +11,7 @@ $wb['origin_error_empty'] = 'Zone is niet ingvuld.';
 $wb['origin_error_unique'] = 'Er is al een record for deze zone.';
 $wb['origin_error_regex'] = 'Zone heeft een ongeldig formaat.';
 $wb['ns_error_regex'] = 'NS heeft een ongeldig formaat.';
-$wb['eg_domain_tld'] = 'e.g. domain.tld.';
-$wb['ipv4_form_txt'] = 'Separate multiple IPs with commas';
+$wb['eg_domain_tld'] = 'bijvoorbeeld domein.tld.';
+$wb['ipv4_form_txt'] = 'Scheid meerdere IPs met een komma';
 $wb['secondary_zone_txt'] = 'Secondary DNS Zone';
 ?>
diff --git a/interface/web/login/lib/lang/nl.lng b/interface/web/login/lib/lang/nl.lng
index 453aae6fac9bdc7ef6646a2fcd9e6db23c2f67f7..638ccc2313e085b216202b12531a96a1268d470f 100644
--- a/interface/web/login/lib/lang/nl.lng
+++ b/interface/web/login/lib/lang/nl.lng
@@ -7,7 +7,7 @@ $wb['pass_reset_txt'] = 'Een nieuw wachtwoord zal worden gegenereerd en per e-ma
 $wb['pw_reset'] = 'Het wachtwoord is gereset en is verzonden naar uw e-mailadres.';
 $wb['pw_error'] = 'Gebruikersnaam of e-mailadres komt niet overeen.';
 $wb['pw_error_noinput'] = 'Voer a.u.b. een e-mailadres en gebruikersnaam in.';
-$wb['pw_reset_error_smtp_connection'] = 'There was a connection problem when trying to send an email pertaining to your password reset request.';
+$wb['pw_reset_error_smtp_connection'] = 'Het versturen van een email met uw nieuwe wachtwoord is mislukt.';
 $wb['pw_reset_mail_msg'] = 'Het wachtwoord  dat toegang biedt tot uw ISPConfig 3 control panel account is gereset. Het nieuwe wachtwoord is: ';
 $wb['pw_reset_mail_title'] = 'ISPConfig 3 Control panel wachtwoord is gereset.';
 $wb['user_regex_error'] = 'Gebruikersnaam bevat karakters die niet zijn toegestaan of is langer dan 64 karakters.';
@@ -21,17 +21,17 @@ $wb['login_txt'] = 'Inloggen';
 $wb['pw_reset_txt'] = 'Wachtwoord herstellen';
 $wb['pw_button_txt'] = 'Wachtwoord versturen';
 $wb['email_txt'] = 'Email';
-$wb['theme_not_compatible'] = 'The chosen theme is not compatible with the current ISPConfig version. Please check for a new version of the theme.<br />The default theme as been activated automatically.';
-$wb['back_txt'] = 'Back';
-$wb['email_error'] = 'Email contains unallowed characters or has a invalid format.';
-$wb['stay_logged_in_txt'] = 'Keep me logged in';
-$wb['lost_password_function_disabled_txt'] = 'The lost password function is not available for this user.';
-$wb['pw_reset_act'] = 'You have been sent an activation link. Please visit the link to confirm your password request.';
-$wb['pw_reset_act_mail_title'] = 'Confirm ISPConfig 3 Control panel password reset';
-$wb['pw_reset_act_mail_msg'] = 'Please confirm that your want to reset your ISPConfig 3 control panel account password by visiting the following activation link: ';
-$wb['lost_password_function_wait_txt'] = 'You cannot request a new password, yet. Please wait a few minutes.';
-$wb['lost_password_function_expired_txt'] = 'This activation link has expired. Please request a new one.';
-$wb['lost_password_function_denied_txt'] = 'This activation link is not valid.';
+$wb['theme_not_compatible'] = 'De gekozen vormgeving is niet geschikt voor de huidige ISPConfig versie. Controleer of er een update beschikbaar is.<br />De standaard vormgeving is automatisch geactiveerd.';
+$wb['back_txt'] = 'Terug';
+$wb['email_error'] = 'Email bevat ongeldige tekens of heeft een vereerde opbouw.';
+$wb['stay_logged_in_txt'] = 'Blijf ingelogd';
+$wb['lost_password_function_disabled_txt'] = 'De Wachtwoord vergeten functie is niet beschikbaar voor deze gebruiker.';
+$wb['pw_reset_act'] = 'Er is een wachtwoord reset link verstuurd. Volg de link in die mail om uw verzoek te bevestigen.';
+$wb['pw_reset_act_mail_title'] = 'ISPConfig 3 Control panel wachtwoord herstel';
+$wb['pw_reset_act_mail_msg'] = 'Er is een nieuw wachtwoord aangevraag voor uw account. Bevestig via de volgende link dat dit de bedoeling is. Als u dit niet was kunt u dit beter niet doen. ';
+$wb['lost_password_function_wait_txt'] = 'U kunt op dit moment geen nieuw wachtwoord aanvragen, probeer het later nog eens.';
+$wb['lost_password_function_expired_txt'] = 'De wachtwoordherstel link is verlopen. U kunt een nieuwe aanvragen.';
+$wb['lost_password_function_denied_txt'] = 'Deze link is niet (meer) geldig.';
 $wb['otp_code_txt'] = 'Twee-factor authenticatie';
 $wb['otp_code_desc_txt'] = 'Enter the code you got from your authenticator app or via email.';
 $wb['otp_code_placeholder_txt'] = 'OTP code';
@@ -41,4 +41,5 @@ $wb['otp_code_email_template_txt'] = 'Uw eenmalige login code is %s' . PHP_EOL .
 $wb['otp_code_resend_txt'] = 'Aanvragen nieuwe code';
 $wb['otp_code_email_sent_failed_txt'] = 'Verzenden van email naar %s is mislukt.';
 $wb['otp_code_email_sent_wait_txt'] = 'Please wait, re-sending the code is only possible after %s seconds.';
+
 ?>
diff --git a/interface/web/mail/form/mail_mailinglist.tform.php b/interface/web/mail/form/mail_mailinglist.tform.php
index 295bd8d5710fc33c1736656500ef322eeee6186f..7834b005de880427ddf883e204c2b74d99b57aee 100644
--- a/interface/web/mail/form/mail_mailinglist.tform.php
+++ b/interface/web/mail/form/mail_mailinglist.tform.php
@@ -103,6 +103,10 @@ $form["tabs"]['mailinglist'] = array (
 					'errmsg'=> 'listname_error_empty'),
 				1 => array ( 'type' => 'UNIQUE',
 					'errmsg'=> 'listname_error_unique'),
+				2 => array (
+					'type'	=> 'REGEX',
+					'regex' => '/^[_a-z0-9][\w\.\-_\+@]{1,255}$/',
+					'errmsg'=> 'listname_error_regex'),
 			),
 			'filters'   => array(
 					0 => array( 'event' => 'SAVE',
diff --git a/interface/web/mail/lib/lang/ar_mail_mailinglist.lng b/interface/web/mail/lib/lang/ar_mail_mailinglist.lng
index 5e16270b9c996ddc5ad888c4ddac693c924fe1fc..4b11277e1f240e04267b90287198950e7f28de50 100644
--- a/interface/web/mail/lib/lang/ar_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/ar_mail_mailinglist.lng
@@ -2,6 +2,7 @@
 $wb['limit_mailmailinglist_txt'] = 'Limit reached';
 $wb['domain_error_empty'] = 'Domain is empty.';
 $wb['listname_error_empty'] = 'Listname is empty.';
+$wb['listname_error_regex'] = 'The list name is invalid. The minimum length is 2 characters (allowed are: [a-z 1-9 - _]).';
 $wb['domain_error_regex'] = 'Invalid domain name.';
 $wb['email_in_use_txt'] = 'Email is in use';
 $wb['no_domain_perm'] = 'You have no permission for this domain.';
diff --git a/interface/web/mail/lib/lang/bg_mail_mailinglist.lng b/interface/web/mail/lib/lang/bg_mail_mailinglist.lng
index 74db3ed6f22d1626ab953d7325ac73c3d5faa28a..a2ccf282c7515c0eff891e42d8e5e8bc03d0cc8d 100644
--- a/interface/web/mail/lib/lang/bg_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/bg_mail_mailinglist.lng
@@ -2,6 +2,7 @@
 $wb['limit_mailmailinglist_txt'] = 'Достигнат лимит';
 $wb['domain_error_empty'] = 'Полето с домейн е празно.';
 $wb['listname_error_empty'] = 'Listname is empty.';
+$wb['listname_error_regex'] = 'The list name is invalid. The minimum length is 2 characters (allowed are: [a-z 1-9 - _]).';
 $wb['domain_error_regex'] = 'Invalid domain name.';
 $wb['email_in_use_txt'] = 'Имейла се изполва';
 $wb['no_domain_perm'] = 'Ти нямаш права за този домейн.';
diff --git a/interface/web/mail/lib/lang/br_mail_mailinglist.lng b/interface/web/mail/lib/lang/br_mail_mailinglist.lng
index 035eb6456bfaf3e2cdde946d994895749adf405f..6a113f4e63d0663b8c0fefe9acc426c6846ca592 100644
--- a/interface/web/mail/lib/lang/br_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/br_mail_mailinglist.lng
@@ -3,6 +3,7 @@ $wb['mailinglist_txt'] = 'Lista de email';
 $wb['limit_mailmailinglist_txt'] = 'O limite foi alcançado.';
 $wb['domain_error_empty'] = 'O domínio está vazio.';
 $wb['listname_error_empty'] = 'O nome da lista está vazio.';
+$wb['listname_error_regex'] = 'The list name is invalid. The minimum length is 2 characters (allowed are: [a-z 1-9 - _]).';
 $wb['domain_error_regex'] = 'O domínio é inválido.';
 $wb['email_in_use_txt'] = 'O email já está em uso.';
 $wb['no_domain_perm'] = 'Você não tem permissão para este domínio.';
diff --git a/interface/web/mail/lib/lang/ca_mail_mailinglist.lng b/interface/web/mail/lib/lang/ca_mail_mailinglist.lng
index 919e7079e579bb97da3af9f10d2a9700baf25e92..fbdc5307a6afc6080c981825986aebcb04945c94 100644
--- a/interface/web/mail/lib/lang/ca_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/ca_mail_mailinglist.lng
@@ -2,6 +2,7 @@
 $wb['limit_mailmailinglist_txt'] = 'Limite atteinte';
 $wb['domain_error_empty'] = 'Le domain est vide.';
 $wb['listname_error_empty'] = 'Le nom de la liste est vide.';
+$wb['listname_error_regex'] = 'The list name is invalid. The minimum length is 2 characters (allowed are: [a-z 1-9 - _]).';
 $wb['domain_error_regex'] = 'Nom de domaine invalide.';
 $wb['email_in_use_txt'] = 'L\'email est en cours d\'utilisation';
 $wb['no_domain_perm'] = 'Vous n\'avez pas la permission pour ce domain.';
diff --git a/interface/web/mail/lib/lang/cz_mail_mailinglist.lng b/interface/web/mail/lib/lang/cz_mail_mailinglist.lng
index e553c95bdea6d47f38f44890c478b2e0e8337fe6..f67d11251bfadbda8a95e476ae5a5cfd22791049 100644
--- a/interface/web/mail/lib/lang/cz_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/cz_mail_mailinglist.lng
@@ -2,6 +2,7 @@
 $wb['limit_mailmailinglist_txt'] = 'Omezení limitu dosaženo';
 $wb['domain_error_empty'] = 'Doména je prázdná.';
 $wb['listname_error_empty'] = 'Název seznamu je prázdný.';
+$wb['listname_error_regex'] = 'The list name is invalid. The minimum length is 2 characters (allowed are: [a-z 1-9 - _]).';
 $wb['domain_error_regex'] = 'Neplatný název domény.';
 $wb['email_in_use_txt'] = 'E-mail je již používán';
 $wb['no_domain_perm'] = 'Nemáte oprávnění pro tuto doménu.';
diff --git a/interface/web/mail/lib/lang/de_mail_mailinglist.lng b/interface/web/mail/lib/lang/de_mail_mailinglist.lng
index 1d143b690c4197d8cd370d638eecc5c4103259be..e09153f44b4d386cf600eb83623c5a5b5e2df126 100644
--- a/interface/web/mail/lib/lang/de_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/de_mail_mailinglist.lng
@@ -3,6 +3,7 @@ $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['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['no_domain_perm'] = 'Sie haben keine Rechte für diese Domain.';
 $wb['password_strength_txt'] = 'Passwortkomplexität';
diff --git a/interface/web/mail/lib/lang/dk_mail_mailinglist.lng b/interface/web/mail/lib/lang/dk_mail_mailinglist.lng
index 0868d38e6ead51467bb6ca1f055e8e1d07793f71..4c69c44617cfc67e143186532fb2e0163f726a5d 100644
--- a/interface/web/mail/lib/lang/dk_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/dk_mail_mailinglist.lng
@@ -3,6 +3,7 @@ $wb['mailinglist_txt'] = 'Mailing list';
 $wb['limit_mailmailinglist_txt'] = 'Begrænsninger nået';
 $wb['domain_error_empty'] = 'Domæne er tom.';
 $wb['listname_error_empty'] = 'Listenavn er tom.';
+$wb['listname_error_regex'] = 'The list name is invalid. The minimum length is 2 characters (allowed are: [a-z 1-9 - _]).';
 $wb['domain_error_regex'] = 'Ugyldigt domæne name.';
 $wb['email_in_use_txt'] = 'E-mail er i brug';
 $wb['no_domain_perm'] = 'Du har ikke tilladelse til dette domæne.';
diff --git a/interface/web/mail/lib/lang/el_mail_mailinglist.lng b/interface/web/mail/lib/lang/el_mail_mailinglist.lng
index 5f5e0ffc7b9daf54edaa8473af3fd4000cf67e17..ec7e96afba41293a48cf4b1f6cee739ceea04a01 100644
--- a/interface/web/mail/lib/lang/el_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/el_mail_mailinglist.lng
@@ -2,6 +2,7 @@
 $wb['limit_mailmailinglist_txt'] = 'Το όριο ξεπεράστηκε.';
 $wb['domain_error_empty'] = 'Το Domain είναι άδειο.';
 $wb['listname_error_empty'] = 'Η λίστα είναι άδεια.';
+$wb['listname_error_regex'] = 'The list name is invalid. The minimum length is 2 characters (allowed are: [a-z 1-9 - _]).';
 $wb['domain_error_regex'] = 'Το όνομα domain δεν είναι έγκυρο/';
 $wb['email_in_use_txt'] = 'Το email χρησιμοποιείται ήδη.';
 $wb['no_domain_perm'] = 'Δεν έχετε δικαιώματα σε αυτό το domain.';
diff --git a/interface/web/mail/lib/lang/en_mail_mailinglist.lng b/interface/web/mail/lib/lang/en_mail_mailinglist.lng
index c21a6a8cbcd3197052b5a5045ab63e188c0303af..47be58d1dbad615b0a6288a34729aeb960fe150c 100644
--- a/interface/web/mail/lib/lang/en_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/en_mail_mailinglist.lng
@@ -3,6 +3,7 @@ $wb['mailinglist_txt'] = 'Mailing list';
 $wb['limit_mailmailinglist_txt'] = 'Limit reached';
 $wb['domain_error_empty'] = 'Domain is empty.';
 $wb['listname_error_empty'] = 'Listname is empty.';
+$wb['listname_error_regex'] = 'The list name is invalid. The minimum length is 2 characters (allowed are: [a-z 1-9 - _]).';
 $wb['domain_error_regex'] = 'Invalid domain name.';
 $wb['email_in_use_txt'] = 'Email is in use';
 $wb['no_domain_perm'] = 'You have no permission for this domain.';
@@ -19,4 +20,4 @@ $wb['password_mismatch_txt'] = 'The passwords do not match.';
 $wb['password_match_txt'] = 'The passwords do match.';
 $wb['listname_error_unique'] = 'There is already a mailinglist with name on the server. Please choose a different listname.';
 $wb['email_error_isemail'] = 'Email address is invalid.';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/mail/lib/lang/es_mail_mailinglist.lng b/interface/web/mail/lib/lang/es_mail_mailinglist.lng
index 5a41780dfaa597f845300e374b36f8e2f025c81b..9bdb29fccde206c89d12d78bd2357516cfd248dd 100644
--- a/interface/web/mail/lib/lang/es_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/es_mail_mailinglist.lng
@@ -9,6 +9,7 @@ $wb['email_txt'] = 'Correo';
 $wb['generate_password_txt'] = 'Generar contraseña';
 $wb['limit_mailmailinglist_txt'] = 'Límite alcanzado';
 $wb['listname_error_empty'] = 'Nombre de la lista vacío.';
+$wb['listname_error_regex'] = 'The list name is invalid. The minimum length is 2 characters (allowed are: [a-z 1-9 - _]).';
 $wb['listname_error_unique'] = 'Ya existe en el servidor un lista de correos con ese nombre. Por favor elija otro.';
 $wb['listname_txt'] = 'Nombre de lista';
 $wb['mailinglist_txt'] = 'Lista de correo';
diff --git a/interface/web/mail/lib/lang/fi_mail_mailinglist.lng b/interface/web/mail/lib/lang/fi_mail_mailinglist.lng
index 5e16270b9c996ddc5ad888c4ddac693c924fe1fc..4b11277e1f240e04267b90287198950e7f28de50 100644
--- a/interface/web/mail/lib/lang/fi_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/fi_mail_mailinglist.lng
@@ -2,6 +2,7 @@
 $wb['limit_mailmailinglist_txt'] = 'Limit reached';
 $wb['domain_error_empty'] = 'Domain is empty.';
 $wb['listname_error_empty'] = 'Listname is empty.';
+$wb['listname_error_regex'] = 'The list name is invalid. The minimum length is 2 characters (allowed are: [a-z 1-9 - _]).';
 $wb['domain_error_regex'] = 'Invalid domain name.';
 $wb['email_in_use_txt'] = 'Email is in use';
 $wb['no_domain_perm'] = 'You have no permission for this domain.';
diff --git a/interface/web/mail/lib/lang/fr_mail_mailinglist.lng b/interface/web/mail/lib/lang/fr_mail_mailinglist.lng
index 107b39817f9c456ac861d3a46a0089d25b572c82..69f824a75f367f2ee9945a73f2a37531a85e7ef7 100644
--- a/interface/web/mail/lib/lang/fr_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/fr_mail_mailinglist.lng
@@ -2,6 +2,7 @@
 $wb['limit_mailmailinglist_txt'] = 'Limite atteinte';
 $wb['domain_error_empty'] = 'Le domain est vide.';
 $wb['listname_error_empty'] = 'Le nom de la liste est vide.';
+$wb['listname_error_regex'] = 'The list name is invalid. The minimum length is 2 characters (allowed are: [a-z 1-9 - _]).';
 $wb['domain_error_regex'] = 'Nom de domaine invalide.';
 $wb['email_in_use_txt'] = 'L’email est en cours d’utilisation';
 $wb['no_domain_perm'] = 'Vous n’avez pas la permission pour ce domain.';
diff --git a/interface/web/mail/lib/lang/hr_mail_mailinglist.lng b/interface/web/mail/lib/lang/hr_mail_mailinglist.lng
index 04d3095e72343be61389646cdfe6f48f23fb031e..b8759689d893a55c3881b01ec8b6ec06a757763b 100644
--- a/interface/web/mail/lib/lang/hr_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/hr_mail_mailinglist.lng
@@ -2,6 +2,7 @@
 $wb['limit_mailmailinglist_txt'] = 'Iskorišten je maksimalan broj email lista.';
 $wb['domain_error_empty'] = 'Domena je prazna.';
 $wb['listname_error_empty'] = 'Naziv liste je prazan.';
+$wb['listname_error_regex'] = 'The list name is invalid. The minimum length is 2 characters (allowed are: [a-z 1-9 - _]).';
 $wb['domain_error_regex'] = 'Neispravan naziv domene.';
 $wb['email_in_use_txt'] = 'Email je u upotrebi';
 $wb['no_domain_perm'] = 'Nemate dozvole za ovu domenu.';
diff --git a/interface/web/mail/lib/lang/hu_mail_mailinglist.lng b/interface/web/mail/lib/lang/hu_mail_mailinglist.lng
index 5e16270b9c996ddc5ad888c4ddac693c924fe1fc..4b11277e1f240e04267b90287198950e7f28de50 100644
--- a/interface/web/mail/lib/lang/hu_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/hu_mail_mailinglist.lng
@@ -2,6 +2,7 @@
 $wb['limit_mailmailinglist_txt'] = 'Limit reached';
 $wb['domain_error_empty'] = 'Domain is empty.';
 $wb['listname_error_empty'] = 'Listname is empty.';
+$wb['listname_error_regex'] = 'The list name is invalid. The minimum length is 2 characters (allowed are: [a-z 1-9 - _]).';
 $wb['domain_error_regex'] = 'Invalid domain name.';
 $wb['email_in_use_txt'] = 'Email is in use';
 $wb['no_domain_perm'] = 'You have no permission for this domain.';
diff --git a/interface/web/mail/lib/lang/id_mail_mailinglist.lng b/interface/web/mail/lib/lang/id_mail_mailinglist.lng
index 5e16270b9c996ddc5ad888c4ddac693c924fe1fc..4b11277e1f240e04267b90287198950e7f28de50 100644
--- a/interface/web/mail/lib/lang/id_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/id_mail_mailinglist.lng
@@ -2,6 +2,7 @@
 $wb['limit_mailmailinglist_txt'] = 'Limit reached';
 $wb['domain_error_empty'] = 'Domain is empty.';
 $wb['listname_error_empty'] = 'Listname is empty.';
+$wb['listname_error_regex'] = 'The list name is invalid. The minimum length is 2 characters (allowed are: [a-z 1-9 - _]).';
 $wb['domain_error_regex'] = 'Invalid domain name.';
 $wb['email_in_use_txt'] = 'Email is in use';
 $wb['no_domain_perm'] = 'You have no permission for this domain.';
diff --git a/interface/web/mail/lib/lang/it_mail_mailinglist.lng b/interface/web/mail/lib/lang/it_mail_mailinglist.lng
index 37835237d865b5ab075906add885fa92dcecacba..d57101fcd4b17a29237295e1404cbbe3ef616835 100644
--- a/interface/web/mail/lib/lang/it_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/it_mail_mailinglist.lng
@@ -2,6 +2,7 @@
 $wb['limit_mailmailinglist_txt'] = 'Limite raggiunto';
 $wb['domain_error_empty'] = 'Dominio vuoto.';
 $wb['listname_error_empty'] = 'Listname vuoto.';
+$wb['listname_error_regex'] = 'The list name is invalid. The minimum length is 2 characters (allowed are: [a-z 1-9 - _]).';
 $wb['domain_error_regex'] = 'Nome dominio non valido.';
 $wb['email_in_use_txt'] = 'Email è già in uso';
 $wb['no_domain_perm'] = 'Non hai i diritti per questo dominio.';
diff --git a/interface/web/mail/lib/lang/ja_mail_mailinglist.lng b/interface/web/mail/lib/lang/ja_mail_mailinglist.lng
index 5e16270b9c996ddc5ad888c4ddac693c924fe1fc..4b11277e1f240e04267b90287198950e7f28de50 100644
--- a/interface/web/mail/lib/lang/ja_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/ja_mail_mailinglist.lng
@@ -2,6 +2,7 @@
 $wb['limit_mailmailinglist_txt'] = 'Limit reached';
 $wb['domain_error_empty'] = 'Domain is empty.';
 $wb['listname_error_empty'] = 'Listname is empty.';
+$wb['listname_error_regex'] = 'The list name is invalid. The minimum length is 2 characters (allowed are: [a-z 1-9 - _]).';
 $wb['domain_error_regex'] = 'Invalid domain name.';
 $wb['email_in_use_txt'] = 'Email is in use';
 $wb['no_domain_perm'] = 'You have no permission for this domain.';
diff --git a/interface/web/mail/lib/lang/nl_mail_mailinglist.lng b/interface/web/mail/lib/lang/nl_mail_mailinglist.lng
index 5e16270b9c996ddc5ad888c4ddac693c924fe1fc..4b11277e1f240e04267b90287198950e7f28de50 100644
--- a/interface/web/mail/lib/lang/nl_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/nl_mail_mailinglist.lng
@@ -2,6 +2,7 @@
 $wb['limit_mailmailinglist_txt'] = 'Limit reached';
 $wb['domain_error_empty'] = 'Domain is empty.';
 $wb['listname_error_empty'] = 'Listname is empty.';
+$wb['listname_error_regex'] = 'The list name is invalid. The minimum length is 2 characters (allowed are: [a-z 1-9 - _]).';
 $wb['domain_error_regex'] = 'Invalid domain name.';
 $wb['email_in_use_txt'] = 'Email is in use';
 $wb['no_domain_perm'] = 'You have no permission for this domain.';
diff --git a/interface/web/mail/lib/lang/pl_mail_mailinglist.lng b/interface/web/mail/lib/lang/pl_mail_mailinglist.lng
index f285b1eaea9164178d4092601d30d4390f27abd2..b6a7a6c693e397d219a99f526446cb80abb8a9c5 100644
--- a/interface/web/mail/lib/lang/pl_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/pl_mail_mailinglist.lng
@@ -2,6 +2,7 @@
 $wb['limit_mailmailinglist_txt'] = 'Limit przekroczony';
 $wb['domain_error_empty'] = 'Domena jest pusta.';
 $wb['listname_error_empty'] = 'Nazwa listy jest pusta.';
+$wb['listname_error_regex'] = 'The list name is invalid. The minimum length is 2 characters (allowed are: [a-z 1-9 - _]).';
 $wb['domain_error_regex'] = 'Nieprawidłowa nazwa domeny.';
 $wb['email_in_use_txt'] = 'Email jest już w użyciu';
 $wb['no_domain_perm'] = 'Nie masz uprawnień dla tej domeny.';
diff --git a/interface/web/mail/lib/lang/pt_mail_mailinglist.lng b/interface/web/mail/lib/lang/pt_mail_mailinglist.lng
index 5e16270b9c996ddc5ad888c4ddac693c924fe1fc..60b64a89297b5a2db282dd72d4c9b2826b5c8dec 100644
--- a/interface/web/mail/lib/lang/pt_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/pt_mail_mailinglist.lng
@@ -3,6 +3,7 @@ $wb['limit_mailmailinglist_txt'] = 'Limit reached';
 $wb['domain_error_empty'] = 'Domain is empty.';
 $wb['listname_error_empty'] = 'Listname is empty.';
 $wb['domain_error_regex'] = 'Invalid domain name.';
+$wb['listname_error_regex'] = 'The list name is invalid. The minimum length is 2 characters (allowed are: [a-z 1-9 - _]).';
 $wb['email_in_use_txt'] = 'Email is in use';
 $wb['no_domain_perm'] = 'You have no permission for this domain.';
 $wb['password_strength_txt'] = 'Password strength';
diff --git a/interface/web/mail/lib/lang/ro_mail_mailinglist.lng b/interface/web/mail/lib/lang/ro_mail_mailinglist.lng
index 5e16270b9c996ddc5ad888c4ddac693c924fe1fc..60b64a89297b5a2db282dd72d4c9b2826b5c8dec 100644
--- a/interface/web/mail/lib/lang/ro_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/ro_mail_mailinglist.lng
@@ -3,6 +3,7 @@ $wb['limit_mailmailinglist_txt'] = 'Limit reached';
 $wb['domain_error_empty'] = 'Domain is empty.';
 $wb['listname_error_empty'] = 'Listname is empty.';
 $wb['domain_error_regex'] = 'Invalid domain name.';
+$wb['listname_error_regex'] = 'The list name is invalid. The minimum length is 2 characters (allowed are: [a-z 1-9 - _]).';
 $wb['email_in_use_txt'] = 'Email is in use';
 $wb['no_domain_perm'] = 'You have no permission for this domain.';
 $wb['password_strength_txt'] = 'Password strength';
diff --git a/interface/web/mail/lib/lang/ru_mail_mailinglist.lng b/interface/web/mail/lib/lang/ru_mail_mailinglist.lng
index 30b78ff3cd6f5e63a01b8228b73853d3c22237d8..b615dfef05c8f6e5c546186755cb716e7619b4ff 100644
--- a/interface/web/mail/lib/lang/ru_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/ru_mail_mailinglist.lng
@@ -3,6 +3,7 @@ $wb['limit_mailmailinglist_txt'] = 'Лимит достигнут';
 $wb['domain_error_empty'] = 'Домен пустой.';
 $wb['listname_error_empty'] = 'Имя списка пустое.';
 $wb['domain_error_regex'] = 'Некорректное имя домена.';
+$wb['listname_error_regex'] = 'The list name is invalid. The minimum length is 2 characters (allowed are: [a-z 1-9 - _]).';
 $wb['email_in_use_txt'] = 'Этот адрес эл. почты уже используется';
 $wb['no_domain_perm'] = 'У вас нет прав доступа к этому домену.';
 $wb['password_strength_txt'] = 'Стойкость пароля';
diff --git a/interface/web/mail/lib/lang/se_mail_mailinglist.lng b/interface/web/mail/lib/lang/se_mail_mailinglist.lng
index ef65e449dd9ff200a8c0fa09da77f47757fbc8c2..a32e1935f09a90568c5ff1e4594cdaeb26629c2e 100644
--- a/interface/web/mail/lib/lang/se_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/se_mail_mailinglist.lng
@@ -3,6 +3,7 @@ $wb['limit_mailmailinglist_txt'] = 'Gränsen nådd';
 $wb['domain_error_empty'] = 'Domänfältet är tomt.';
 $wb['listname_error_empty'] = 'Listnamnfältet är tomt.';
 $wb['domain_error_regex'] = 'Ogiltigt domännamn.';
+$wb['listname_error_regex'] = 'The list name is invalid. The minimum length is 2 characters (allowed are: [a-z 1-9 - _]).';
 $wb['email_in_use_txt'] = 'Epostadressen används redan';
 $wb['no_domain_perm'] = 'Du har inte rättigheter för denna domän.';
 $wb['password_strength_txt'] = 'Lösenordsstyrka';
diff --git a/interface/web/mail/lib/lang/sk_mail_mailinglist.lng b/interface/web/mail/lib/lang/sk_mail_mailinglist.lng
index 5e16270b9c996ddc5ad888c4ddac693c924fe1fc..60b64a89297b5a2db282dd72d4c9b2826b5c8dec 100644
--- a/interface/web/mail/lib/lang/sk_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/sk_mail_mailinglist.lng
@@ -3,6 +3,7 @@ $wb['limit_mailmailinglist_txt'] = 'Limit reached';
 $wb['domain_error_empty'] = 'Domain is empty.';
 $wb['listname_error_empty'] = 'Listname is empty.';
 $wb['domain_error_regex'] = 'Invalid domain name.';
+$wb['listname_error_regex'] = 'The list name is invalid. The minimum length is 2 characters (allowed are: [a-z 1-9 - _]).';
 $wb['email_in_use_txt'] = 'Email is in use';
 $wb['no_domain_perm'] = 'You have no permission for this domain.';
 $wb['password_strength_txt'] = 'Password strength';
diff --git a/interface/web/mail/lib/lang/tr_mail_mailinglist.lng b/interface/web/mail/lib/lang/tr_mail_mailinglist.lng
index 4bd52db75e65b96c2fa8320e8408ee60e215e288..7c701b14db6b8afe4393a4d793063fe3936e29ee 100644
--- a/interface/web/mail/lib/lang/tr_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/tr_mail_mailinglist.lng
@@ -3,6 +3,7 @@ $wb['mailinglist_txt'] = 'E-posta Listesi';
 $wb['limit_mailmailinglist_txt'] = 'Sınıra ulaşıldı';
 $wb['domain_error_empty'] = 'Etki alanı boş olamaz.';
 $wb['listname_error_empty'] = 'Liste adı boş olamaz.';
+$wb['listname_error_regex'] = 'The list name is invalid. The minimum length is 2 characters (allowed are: [a-z 1-9 - _]).';
 $wb['domain_error_regex'] = 'Etki alanı geçersiz.';
 $wb['email_in_use_txt'] = 'E-posta kullanımda';
 $wb['no_domain_perm'] = 'Bu etki alanı için izniniz yok.';
diff --git a/interface/web/mail/mail_user_edit.php b/interface/web/mail/mail_user_edit.php
index d8730fa2ebe78c3885af10f785a276e016b7ecfe..1c2bc47313745483d9ac83f50b4fb3a346cae57a 100644
--- a/interface/web/mail/mail_user_edit.php
+++ b/interface/web/mail/mail_user_edit.php
@@ -67,6 +67,17 @@ class page_action extends tform_actions {
 		parent::onShowNew();
 	}
 
+	function onShowEdit() {
+		global $app, $conf;
+
+		parent::onShowEdit();
+
+		if(isset($this->dataRecord)) {
+			$app->tform->formDef['title'] = $app->lng('Mailbox') . ' ' . $this->dataRecord['email'];
+		}
+	}
+
+
 	function onShowEnd() {
 		global $app, $conf;
 
diff --git a/remoting_client/API-docs/dns_a_add.html b/remoting_client/API-docs/dns_a_add.html
index e7217bcdcfd4972e7c10213b07a0da9ea340de9f..9996bc0d622a4eb480f28c1cf93f351d2e0609c6 100644
--- a/remoting_client/API-docs/dns_a_add.html
+++ b/remoting_client/API-docs/dns_a_add.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_a_add(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span>);</h1>
+<h1>dns_a_add(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <p class="headgrp">Description: </p>
 <p class="margin"> Adds a dns IPv4 record if <em>type</em> is <em>a</em>.</p><br>
diff --git a/remoting_client/API-docs/dns_a_delete.html b/remoting_client/API-docs/dns_a_delete.html
index 8b30fdd6725aad9b22172ef72f8f6e6605ef4009..29e6d1c0f1f3982150ea5339fefcdd3133415496 100644
--- a/remoting_client/API-docs/dns_a_delete.html
+++ b/remoting_client/API-docs/dns_a_delete.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_a_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>);</h1>
+<h1>dns_a_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <p class="headgrp">Description: </p>
 <p class="margin"> Deletes target dns IPv4 resource record.</p><br>
diff --git a/remoting_client/API-docs/dns_a_update.html b/remoting_client/API-docs/dns_a_update.html
index ccacab408bd3b3171dfb01e33c21137e95ac7a3b..6fbd8888f3f07bbd18b9d6d2e5bc5b5e6628f528 100644
--- a/remoting_client/API-docs/dns_a_update.html
+++ b/remoting_client/API-docs/dns_a_update.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_a_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>);</h1>
+<h1>dns_a_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <b>Description: </b>
 <p class="margin"> Updates an IPv4 record if <em>type</em> is <em>a</em>.</p><br>
diff --git a/remoting_client/API-docs/dns_aaaa_add.html b/remoting_client/API-docs/dns_aaaa_add.html
index ea21b15361cd0fdbe02b547b2e1f2ceb58e69542..2fe003038306e04ab8aa70390066fc0b2736bea0 100644
--- a/remoting_client/API-docs/dns_aaaa_add.html
+++ b/remoting_client/API-docs/dns_aaaa_add.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_aaaa_add(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span>);</h1>
+<h1>dns_aaaa_add(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <p class="headgrp">Description: </p>
 <p class="margin"> Adds a dns IPv6 resource record if <em>type</em> is <em>aaaa</em>.</p><br>
diff --git a/remoting_client/API-docs/dns_aaaa_delete.html b/remoting_client/API-docs/dns_aaaa_delete.html
index 4a52e4da7fa7c1c66cd456e994a929b99ea080bc..21038c0d50dc6ddd952eb7135dfbac5aa960983c 100644
--- a/remoting_client/API-docs/dns_aaaa_delete.html
+++ b/remoting_client/API-docs/dns_aaaa_delete.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_aaaa_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>);</h1>
+<h1>dns_aaaa_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <p class="headgrp">Description: </p>
 <p class="margin"> Deletes target dns IPv6 resource record.</p><br>
diff --git a/remoting_client/API-docs/dns_aaaa_update.html b/remoting_client/API-docs/dns_aaaa_update.html
index 94b60f4df4601530b4d0ac3bd63e441ea9da8def..da1f85cd12e96698ee7923f2f396e010f8a10e8c 100644
--- a/remoting_client/API-docs/dns_aaaa_update.html
+++ b/remoting_client/API-docs/dns_aaaa_update.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_aaaa_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>);</h1>
+<h1>dns_aaaa_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <b>Description: </b>
 <p class="margin"> Updates a dns IPv6 resource record if <em>type</em> is <em>aaaa</em>.</p><br>
diff --git a/remoting_client/API-docs/dns_alias_add.html b/remoting_client/API-docs/dns_alias_add.html
index 4bea3dea6f2a2b2700cdfc01afad04aff5e657cb..178327b70b3d93f421e8a56c3ebfdf2e3295f994 100644
--- a/remoting_client/API-docs/dns_alias_add.html
+++ b/remoting_client/API-docs/dns_alias_add.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_alias_add(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span>);</h1>
+<h1>dns_alias_add(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <p class="headgrp">Description: </p>
 <p class="margin"> Adds a dns server side alias record if <em>type</em> is <em>alias</em>.</p><br>
diff --git a/remoting_client/API-docs/dns_alias_delete.html b/remoting_client/API-docs/dns_alias_delete.html
index 03baf684cbb17031a98c6ad62f9cce2622df4945..b610863922b6e0055e6416de3e44541fee8ccb7b 100644
--- a/remoting_client/API-docs/dns_alias_delete.html
+++ b/remoting_client/API-docs/dns_alias_delete.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_alias_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>);</h1>
+<h1>dns_alias_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <p class="headgrp">Description: </p>
 <p class="margin"> Deletes target dns alias resource record.</p><br>
diff --git a/remoting_client/API-docs/dns_alias_update.html b/remoting_client/API-docs/dns_alias_update.html
index 058654f2f7817bde1a885be060b5a5a6e0e06987..b935521cb11a0d6a50317ca01d309d96bda01f39 100644
--- a/remoting_client/API-docs/dns_alias_update.html
+++ b/remoting_client/API-docs/dns_alias_update.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_alias_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>);</h1>
+<h1>dns_alias_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <b>Description: </b>
 <p class="margin"> Updates a dns server side alias record if <em>type</em> is <em>alias</em>.</p><br>
diff --git a/remoting_client/API-docs/dns_cname_add.html b/remoting_client/API-docs/dns_cname_add.html
index afef2bd75c3d5aa409c127bb4a71a30adbd67945..2d8b244e6df7fccc4e3b4b54d023a2f29c6b803a 100644
--- a/remoting_client/API-docs/dns_cname_add.html
+++ b/remoting_client/API-docs/dns_cname_add.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_cname_add(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span>);</h1>
+<h1>dns_cname_add(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <p class="headgrp">Description: </p>
 <p class="margin"> Adds a dns canonical alias name record if <em>type</em> is <em>cname</em>.</p><br>
diff --git a/remoting_client/API-docs/dns_cname_delete.html b/remoting_client/API-docs/dns_cname_delete.html
index c4304a56c3dded194baeaa891e4b53c6c60b5e85..64bc826b4721d096980cac417152faf7cd5291ec 100644
--- a/remoting_client/API-docs/dns_cname_delete.html
+++ b/remoting_client/API-docs/dns_cname_delete.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_cname_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>);</h1>
+<h1>dns_cname_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <p class="headgrp">Description: </p>
 <p class="margin"> Deletes target dns cname resource record.</p><br>
diff --git a/remoting_client/API-docs/dns_cname_update.html b/remoting_client/API-docs/dns_cname_update.html
index f0666331045cc09c0115d7510a3bce1e056b5d0c..626201f5bd1fa1916a0a82f656cae22f74545896 100644
--- a/remoting_client/API-docs/dns_cname_update.html
+++ b/remoting_client/API-docs/dns_cname_update.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_cname_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>);</h1>
+<h1>dns_cname_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <b>Description: </b>
 <p class="margin"> Updates a dns canonical alias name record if <em>type</em> is <em>cname</em>.</p><br>
diff --git a/remoting_client/API-docs/dns_hinfo_add.html b/remoting_client/API-docs/dns_hinfo_add.html
index acd89b3d34f857cb8b9e6e6c2d1a16a57edec412..d89e75e8ebe2ce63ea04f07761085d2264c04009 100644
--- a/remoting_client/API-docs/dns_hinfo_add.html
+++ b/remoting_client/API-docs/dns_hinfo_add.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_hinfo_add(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span>);</h1>
+<h1>dns_hinfo_add(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <p class="headgrp">Description: </p>
 <p class="margin"> Adds a dns host information record if <em>type</em> is <em>hinfo</em>.</p><br>
diff --git a/remoting_client/API-docs/dns_hinfo_delete.html b/remoting_client/API-docs/dns_hinfo_delete.html
index 37f796ffafa45dd2fa403622b69399b78a9fdc7c..6cb87780af129bc7d43ee618c231a7c0f5cbe06d 100644
--- a/remoting_client/API-docs/dns_hinfo_delete.html
+++ b/remoting_client/API-docs/dns_hinfo_delete.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_hinfo_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>);</h1>
+<h1>dns_hinfo_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <p class="headgrp">Description: </p>
 <p class="margin"> Deletes target dns hinfo resource record.</p><br>
diff --git a/remoting_client/API-docs/dns_hinfo_update.html b/remoting_client/API-docs/dns_hinfo_update.html
index 463b25b84a71b26d4bdab6feff2ec2ea802448e4..81802e99e943a4306349c45b2560393446b6cd66 100644
--- a/remoting_client/API-docs/dns_hinfo_update.html
+++ b/remoting_client/API-docs/dns_hinfo_update.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_hinfo_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>);</h1>
+<h1>dns_hinfo_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <b>Description: </b>
 <p class="margin"> Updates a dns host information record if <em>type</em> is <em>hinfo</em>.</p><br>
diff --git a/remoting_client/API-docs/dns_mx_delete.html b/remoting_client/API-docs/dns_mx_delete.html
index 8bd8572b4eb3af272cad733d03f8ee44f4bd41e2..01a4ae11c0d8702c60795137f54d3d074fd11886 100644
--- a/remoting_client/API-docs/dns_mx_delete.html
+++ b/remoting_client/API-docs/dns_mx_delete.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_mx_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>);</h1>
+<h1>dns_mx_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <p class="headgrp">Description: </p>
 <p class="margin"> Deletes target dns mx resource record.</p><br>
diff --git a/remoting_client/API-docs/dns_mx_update.html b/remoting_client/API-docs/dns_mx_update.html
index d75a8343d3a42f79b8fb204e4af569d0f5775abb..e74a6d99865c50736d8354102e9059047c0a359a 100644
--- a/remoting_client/API-docs/dns_mx_update.html
+++ b/remoting_client/API-docs/dns_mx_update.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_mx_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>);</h1>
+<h1>dns_mx_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <b>Description: </b>
 <p class="margin"> Updates a dns mail exchanger record if <em>type</em> is <em>mx</em>.</p><br>
diff --git a/remoting_client/API-docs/dns_naptr_add.html b/remoting_client/API-docs/dns_naptr_add.html
index a8b5d966bf9306d8ded5cedc17d2161ef0c212ca..b9bc9e4d0cbdb32a69b4ec4643834716e9dc5971 100644
--- a/remoting_client/API-docs/dns_naptr_add.html
+++ b/remoting_client/API-docs/dns_naptr_add.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_naptr_add(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span>);</h1>
+<h1>dns_naptr_add(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <p class="headgrp">Description: </p>
 <p class="margin"> Adds a dns server location record if <em>type</em> is <em>naptr</em>.</p><br>
diff --git a/remoting_client/API-docs/dns_naptr_delete.html b/remoting_client/API-docs/dns_naptr_delete.html
index 376bd18aa28592619b7664144c2b79d965dae80c..5b06d1c145a3eff283adbb14121e4d40d8cf386e 100644
--- a/remoting_client/API-docs/dns_naptr_delete.html
+++ b/remoting_client/API-docs/dns_naptr_delete.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_naptr_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>);</h1>
+<h1>dns_naptr_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <p class="headgrp">Description: </p>
 <p class="margin"> Deletes target dns naptr resource record.</p><br>
diff --git a/remoting_client/API-docs/dns_naptr_update.html b/remoting_client/API-docs/dns_naptr_update.html
index 98c4f031833c66b720f1173cf983e48e9c712478..9abfcaab97dee1ce2a8d02be1926fc15231fe555 100644
--- a/remoting_client/API-docs/dns_naptr_update.html
+++ b/remoting_client/API-docs/dns_naptr_update.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_naptr_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>);</h1>
+<h1>dns_naptr_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <b>Description: </b>
 <p class="margin"> Updates a dns server location record if <em>type</em> is <em>naptr</em>.</p><br>
diff --git a/remoting_client/API-docs/dns_ns_add.html b/remoting_client/API-docs/dns_ns_add.html
index 8fd9564bbb4d2907b8e6939166a4c7d5f793598b..a3d7b4042d44e6565e8646ddb16b59854e7b1fbf 100644
--- a/remoting_client/API-docs/dns_ns_add.html
+++ b/remoting_client/API-docs/dns_ns_add.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_ns_add(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span>);</h1>
+<h1>dns_ns_add(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <p class="headgrp">Description: </p>
 <p class="margin"> Adds a dns authoritative nameserver record if <em>type</em> is <em>ns</em>.</p><br>
diff --git a/remoting_client/API-docs/dns_ns_delete.html b/remoting_client/API-docs/dns_ns_delete.html
index 0ee3eba72d6181c552832a54e1e9af3565fe8ea5..c59ba0933afe279bd077012084962d2298d1b757 100644
--- a/remoting_client/API-docs/dns_ns_delete.html
+++ b/remoting_client/API-docs/dns_ns_delete.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_ns_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>);</h1>
+<h1>dns_ns_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <p class="headgrp">Description: </p>
 <p class="margin"> Deletes target dns ns resource record.</p><br>
diff --git a/remoting_client/API-docs/dns_ns_update.html b/remoting_client/API-docs/dns_ns_update.html
index 32258a1504b7959c9a3b3c75e7975e43b77ac23f..e2aa90805c2a7adabd912680d851fb9918fe4555 100644
--- a/remoting_client/API-docs/dns_ns_update.html
+++ b/remoting_client/API-docs/dns_ns_update.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_ns_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>);</h1>
+<h1>dns_ns_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <b>Description: </b>
 <p class="margin"> Updates an authoritative nameserver record if <em>type</em> is <em>ns</em>.</p><br>
diff --git a/remoting_client/API-docs/dns_ptr_add.html b/remoting_client/API-docs/dns_ptr_add.html
index d2331660d2e36713151a883cd5a119e1101dfc5e..7b65759df941e36e5076b76eb8281c381d8190e8 100644
--- a/remoting_client/API-docs/dns_ptr_add.html
+++ b/remoting_client/API-docs/dns_ptr_add.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_ptr_add(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span>);</h1>
+<h1>dns_ptr_add(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <p class="headgrp">Description: </p>
 <p class="margin"> Adds a dns domain name pointer record if <em>type</em> is <em>ptr</em>.</p><br>
diff --git a/remoting_client/API-docs/dns_ptr_delete.html b/remoting_client/API-docs/dns_ptr_delete.html
index d455bab5f9232840f731dc323e15b6868b4b6a77..50092c0b6c1ec5f1b77463988074271a61f7696a 100644
--- a/remoting_client/API-docs/dns_ptr_delete.html
+++ b/remoting_client/API-docs/dns_ptr_delete.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_ptr_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>);</h1>
+<h1>dns_ptr_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <p class="headgrp">Description: </p>
 <p class="margin"> Deletes target dns ptr resource record.</p><br>
diff --git a/remoting_client/API-docs/dns_ptr_update.html b/remoting_client/API-docs/dns_ptr_update.html
index 25097708ae2a929ff927c75e849821caac60127e..e25cedf8536fa93fa4bc9893f637398e1799ee56 100644
--- a/remoting_client/API-docs/dns_ptr_update.html
+++ b/remoting_client/API-docs/dns_ptr_update.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_ptr_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>);</h1>
+<h1>dns_ptr_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <b>Description: </b>
 <p class="margin"> Updates a dns domain name pointer record if <em>type</em> is <em>ptr</em>.</p><br>
diff --git a/remoting_client/API-docs/dns_rp_add.html b/remoting_client/API-docs/dns_rp_add.html
index e20f5186c3c2efe925f56d6852176bb293f547af..327299f11d361cace8c17a96a03ac6e8b8d4755f 100644
--- a/remoting_client/API-docs/dns_rp_add.html
+++ b/remoting_client/API-docs/dns_rp_add.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_rp_add(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span>);</h1>
+<h1>dns_rp_add(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <p class="headgrp">Description: </p>
 <p class="margin"> Adds a dns responsible person record if <em>type</em> is <em>rp</em>.</p><br>
diff --git a/remoting_client/API-docs/dns_rp_delete.html b/remoting_client/API-docs/dns_rp_delete.html
index 0a656c62cc3fa2f6374a1d477c248d82d1ae56c0..5d7540fe4843d791c1cba0601bfc8eb629b2b261 100644
--- a/remoting_client/API-docs/dns_rp_delete.html
+++ b/remoting_client/API-docs/dns_rp_delete.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_rp_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>);</h1>
+<h1>dns_rp_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <p class="headgrp">Description: </p>
 <p class="margin"> Deletes target dns rp resource record.</p><br>
diff --git a/remoting_client/API-docs/dns_rp_update.html b/remoting_client/API-docs/dns_rp_update.html
index 1e7a92db1f305293cddffe069220f04bbbc1a188..926ef72fe0ef409166fb353ea7ed7c49bb8bef9f 100644
--- a/remoting_client/API-docs/dns_rp_update.html
+++ b/remoting_client/API-docs/dns_rp_update.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_rp_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>);</h1>
+<h1>dns_rp_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <b>Description: </b>
 <p class="margin"> Updates a dns responsible person record if <em>type</em> is <em>rp</em>.</p><br>
diff --git a/remoting_client/API-docs/dns_slave_delete.html b/remoting_client/API-docs/dns_slave_delete.html
index baaca8408e495c30d28c6305f9fe5c0b6392311e..de5023c1017aa9c6f7861f83f84571c8e94c140b 100644
--- a/remoting_client/API-docs/dns_slave_delete.html
+++ b/remoting_client/API-docs/dns_slave_delete.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_slave_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>);</h1>
+<h1>dns_slave_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <p class="headgrp">Description: </p>
 <p class="margin"> Deletes a dns slave zone.</p><br>
diff --git a/remoting_client/API-docs/dns_srv_add.html b/remoting_client/API-docs/dns_srv_add.html
index 5a2649cadbfb76f7610a8ac9b937c0904072dd3d..ca0d4e8b486eb7898337369ea1d0d091d77cf204 100644
--- a/remoting_client/API-docs/dns_srv_add.html
+++ b/remoting_client/API-docs/dns_srv_add.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_srv_add(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span>);</h1>
+<h1>dns_srv_add(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <p class="headgrp">Description: </p>
 <p class="margin"> Adds a dns server location record if <em>type</em> is <em>srv</em>.</p><br>
diff --git a/remoting_client/API-docs/dns_srv_delete.html b/remoting_client/API-docs/dns_srv_delete.html
index 420d9f746ae3708688e38746c5cc37be968b2ce7..ba69422f640ca225511f6637250ad38eb525c2e5 100644
--- a/remoting_client/API-docs/dns_srv_delete.html
+++ b/remoting_client/API-docs/dns_srv_delete.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_srv_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>);</h1>
+<h1>dns_srv_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <p class="headgrp">Description: </p>
 <p class="margin"> Deletes target dns srv resource record.</p><br>
diff --git a/remoting_client/API-docs/dns_srv_update.html b/remoting_client/API-docs/dns_srv_update.html
index 8a2a6107bfa1073034a5633791f0eb1542f7831f..264eb3c4cdb6d6e1e8e97f4643946e241271f9b6 100644
--- a/remoting_client/API-docs/dns_srv_update.html
+++ b/remoting_client/API-docs/dns_srv_update.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_srv_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>);</h1>
+<h1>dns_srv_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <b>Description: </b>
 <p class="margin"> Updates a dns server location record if <em>type</em> is <em>srv</em>.</p><br>
diff --git a/remoting_client/API-docs/dns_txt_add.html b/remoting_client/API-docs/dns_txt_add.html
index d99f79084659482ccbacbcca9d359dc395677324..da6b71af0fd3d2de12e09ac8f516151a93bc9923 100644
--- a/remoting_client/API-docs/dns_txt_add.html
+++ b/remoting_client/API-docs/dns_txt_add.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_txt_add(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span>);</h1>
+<h1>dns_txt_add(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$params</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <p class="headgrp">Description: </p>
 <p class="margin"> Adds a dns text string record if <em>type</em> is <em>txt</em>.</p><br>
diff --git a/remoting_client/API-docs/dns_txt_delete.html b/remoting_client/API-docs/dns_txt_delete.html
index fb809aadd212b17f041d4bb6457da82345187e1a..45562a0c62b4ff904a82ac099dfe993db4159f5b 100644
--- a/remoting_client/API-docs/dns_txt_delete.html
+++ b/remoting_client/API-docs/dns_txt_delete.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_txt_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>);</h1>
+<h1>dns_txt_delete(<span class="var">$session_id</span>, <span class="var">$primary_id</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <p class="headgrp">Description: </p>
 <p class="margin"> Deletes target dns txt resource record.</p><br>
diff --git a/remoting_client/API-docs/dns_txt_update.html b/remoting_client/API-docs/dns_txt_update.html
index 374bede8fb0bf4f203ff5030a9be233448b63dac..b93138bc5a8841761b0df0296deacedc268cedd5 100644
--- a/remoting_client/API-docs/dns_txt_update.html
+++ b/remoting_client/API-docs/dns_txt_update.html
@@ -12,7 +12,7 @@
 
 <body>
 <div style="padding:40px">
-<h1>dns_txt_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>);</h1>
+<h1>dns_txt_update(<span class="var">$session_id</span>, <span class="var">$client_id</span>, <span class="var">$primary_id</span>, <span class="var">$params</span>, <span class="var">$update_serial=false</span>);</h1>
 <br>
 <b>Description: </b>
 <p class="margin"> Updates a dns text string record if <em>type</em> is <em>txt</em>.</p><br>
diff --git a/server/lib/classes/cron.inc.php b/server/lib/classes/cron.inc.php
index 2c7f16170c32bb121e0b33280e15a9614712f488..d0e26c66f44d278eb5f33a712c47eefcbf4c1d80 100644
--- a/server/lib/classes/cron.inc.php
+++ b/server/lib/classes/cron.inc.php
@@ -204,7 +204,7 @@ class cron {
 		if($this->_bParsed == false) $this->_calcValidValues();
 
 		// get the field values for the given Date.
-		list($iMinute, $iHour, $iDay, $iWDay, $iMonth, $iYear) = explode(':', ISPConfigDateTime::to_string($vDate, 'custom:%M:%H:%d:%w:%m:%Y'));
+		list($iMinute, $iHour, $iDay, $iWDay, $iMonth, $iYear) = explode(':', ISPConfigDateTime::to_string($vDate, 'custom:i:G:j:w:n:Y'));
 
 		$bValid = false;
 		$iStartYear = $iYear;
@@ -244,7 +244,6 @@ class cron {
 			}
 
 			$ts = mktime($iHour, $iMinute, 0, $iMonth, $iDay, $iYear);
-			//print strftime('%d.%m.%Y (%A) %H:%M', $ts) . "\n";
 			//var_dump($iCurMinute, $iCurHour, $iCurDay, $iCurMonth, $iCurWDay, '--', $iNextMinute, $iNextHour, $iNextDay, $iNextMonth, $iNextWDay);
 			if(ISPConfigDateTime::last_day($iMonth, $iYear) >= $iDay && in_array($app->functions->intval(date('w', $ts)), $this->_aValidValues['weekday'], true) === true) {
 				$bValid = true;