diff --git a/install/dist/conf/opensuse110.conf.php b/install/dist/conf/opensuse110.conf.php
index 19b6d7af9e38f1b7987c52e658a2e25840e16372..e57d9be4674f265b1dd89c7170011b6811c5b912 100644
--- a/install/dist/conf/opensuse110.conf.php
+++ b/install/dist/conf/opensuse110.conf.php
@@ -97,7 +97,7 @@ $conf['web']['apps_vhost_user'] = 'ispapps';
 $conf['web']['apps_vhost_group'] = 'ispapps';
 
 //* Fastcgi
-$conf['fastcgi']['fastcgi_phpini_path'] = '/etc/php5/cgi/';
+$conf['fastcgi']['fastcgi_phpini_path'] = '/etc/php5/fastcgi/';
 $conf['fastcgi']['fastcgi_starter_path'] = '/srv/www/php-fcgi-scripts/[system_user]/';
 
 //* Postfix
diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php
index 4fbd4b555080e11192a19225c994aef0344fdd5b..ba1c285fa2260028cc0ec97967b0b32af6683e42 100644
--- a/install/dist/lib/fedora.lib.php
+++ b/install/dist/lib/fedora.lib.php
@@ -1043,9 +1043,8 @@ class installer_dist extends installer_base {
 		replaceLine('/etc/sudoers','Defaults    requiretty','#Defaults    requiretty',0,0);
 		
 		if(is_dir($install_dir.'/interface/invoices')) {
-			chmod($install_dir.'/interface/invoices', 0770);
-			chown($install_dir.'/interface/invoices', 'ispconfig');
-			chgrp($install_dir.'/interface/invoices', 'ispconfig');
+			exec('chmod -R 770 '.escapeshellarg($install_dir.'/interface/invoices'));
+			exec('chown -R ispconfig:ispconfig '.escapeshellarg($install_dir.'/interface/invoices'));
 		}
 		
 	}
diff --git a/install/dist/lib/gentoo.lib.php b/install/dist/lib/gentoo.lib.php
index deb03f30014eeff4edf4f1411934e816e1204279..5e5c93c2ae4a78b128fef7479279928d8296572d 100644
--- a/install/dist/lib/gentoo.lib.php
+++ b/install/dist/lib/gentoo.lib.php
@@ -874,9 +874,8 @@ class installer extends installer_base
 		}
 		
 		if(is_dir($install_dir.'/interface/invoices')) {
-			chmod($install_dir.'/interface/invoices', 0770);
-			chown($install_dir.'/interface/invoices', 'ispconfig');
-			chgrp($install_dir.'/interface/invoices', 'ispconfig');
+			exec('chmod -R 770 '.escapeshellarg($install_dir.'/interface/invoices'));
+			exec('chown -R ispconfig:ispconfig '.escapeshellarg($install_dir.'/interface/invoices'));
 		}
 		
 		// TODO: FIXME: add the www-data user to the ispconfig group. This is just for testing
diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php
index 8a46e3c3a87199dd253d25c4313db04cfd69dbcf..88f508a5c2d07349307d43ab51f30a83e99162c4 100644
--- a/install/dist/lib/opensuse.lib.php
+++ b/install/dist/lib/opensuse.lib.php
@@ -1084,9 +1084,8 @@ class installer_dist extends installer_base {
 		}
 		
 		if(is_dir($install_dir.'/interface/invoices')) {
-			chmod($install_dir.'/interface/invoices', 0770);
-			chown($install_dir.'/interface/invoices', 'ispconfig');
-			chgrp($install_dir.'/interface/invoices', 'ispconfig');
+			exec('chmod -R 770 '.escapeshellarg($install_dir.'/interface/invoices'));
+			exec('chown -R ispconfig:ispconfig '.escapeshellarg($install_dir.'/interface/invoices'));
 		}
 		
 		
diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index 4686aa3a09793cf030dfd491d382678ccfcb802c..94a176a78bda87cda83fade7172ba5735167b068 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -1784,9 +1784,8 @@ class installer_base {
 		}
 		
 		if(is_dir($install_dir.'/interface/invoices')) {
-			chmod($install_dir.'/interface/invoices', 0770);
-			chown($install_dir.'/interface/invoices', 'ispconfig');
-			chgrp($install_dir.'/interface/invoices', 'ispconfig');
+			exec('chmod -R 770 '.escapeshellarg($install_dir.'/interface/invoices'));
+			exec('chown -R ispconfig:ispconfig '.escapeshellarg($install_dir.'/interface/invoices'));
 		}
 
 		// TODO: FIXME: add the www-data user to the ispconfig group. This is just for testing
diff --git a/interface/lib/classes/validate_client.inc.php b/interface/lib/classes/validate_client.inc.php
index 97b9221822caacb2f07b90aa93052aa3d8c309ec..9b0546a600b7b814632f24f7e28e3b7a5cc33349 100644
--- a/interface/lib/classes/validate_client.inc.php
+++ b/interface/lib/classes/validate_client.inc.php
@@ -65,6 +65,36 @@ class validate_client {
 		}
 	}
 	
+	function username_collision($field_name, $field_value, $validator) {
+		global $app;
+		
+		if(isset($app->remoting_lib->primary_id)) {
+			$client_id = $app->remoting_lib->primary_id;
+		} else {
+			$client_id = $app->tform->primary_id;
+		}
+		
+		$app->uses('getconf');
+		$global_config = $app->getconf->get_global_config('sites');
+		
+		if((trim($field_value) == 'web' || preg_match('/^web[0-9]/',$field_value)) && 
+		  ($global_config['ftpuser_prefix'] == '[CLIENTNAME]' || 
+		   $global_config['ftpuser_prefix'] == '' ||
+		   $global_config['shelluser_prefix'] == '[CLIENTNAME]' ||
+		   $global_config['shelluser_prefix'] == '' )) {
+			$errmsg = $validator['errmsg'];
+			if(isset($app->tform->wordbook[$errmsg])) {
+				return $app->tform->wordbook[$errmsg]."<br>\r\n";
+			} else {
+				return $errmsg."<br>\r\n";
+			}
+		}
+		
+		
+		
+		
+	}
+	
 	
 	
 	
diff --git a/interface/lib/plugins/vm_openvz_plugin.inc.php b/interface/lib/plugins/vm_openvz_plugin.inc.php
index b1ce8e618d8ff0cbc6c3da484914f20a87c5a33b..42a653033b4ceec5057a0e33b7e8fdc28e6ef936 100644
--- a/interface/lib/plugins/vm_openvz_plugin.inc.php
+++ b/interface/lib/plugins/vm_openvz_plugin.inc.php
@@ -173,6 +173,7 @@ class vm_openvz_plugin {
 		$tpl->setVar('numfile',$vm_template['numfile']);
 		$tpl->setVar('avnumproc',$vm_template['avnumproc']);
 		$tpl->setVar('numiptent',$vm_template['numiptent']);
+		$tpl->setVar('swappages',$vm_template['swappages']);
 		
 		$diskspace = $vm['diskspace']*1048576;
 		$diskinodes = $vm['diskspace']*524288;
diff --git a/interface/web/client/client_edit.php b/interface/web/client/client_edit.php
index c5d7ba4556bc5f33a002ac739c788241b0fa335b..76616fc26f5b0b28b5e358ae6ea5c09f2d3fd42a 100644
--- a/interface/web/client/client_edit.php
+++ b/interface/web/client/client_edit.php
@@ -1,6 +1,6 @@
 <?php
 /*
-Copyright (c) 2005 - 2008, Till Brehm, projektfarm Gmbh
+Copyright (c) 2005 - 2012, Till Brehm, projektfarm Gmbh, ISPConfig UG
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without modification,
diff --git a/interface/web/client/client_message.php b/interface/web/client/client_message.php
new file mode 100644
index 0000000000000000000000000000000000000000..f555c9995515a4acf364325aff376d9cb5845a9a
--- /dev/null
+++ b/interface/web/client/client_message.php
@@ -0,0 +1,110 @@
+<?php
+/*
+Copyright (c) 2012, Till Brehm, ISPConfig UG
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of ISPConfig nor the names of its contributors
+      may be used to endorse or promote products derived from this software without
+      specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+
+//* Check permissions for module
+$app->auth->check_module_permissions('client');
+
+//* This function is not available in demo mode
+if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.');
+
+$app->uses('tpl');
+
+$app->tpl->newTemplate('form.tpl.htm');
+$app->tpl->setInclude('content_tpl', 'templates/client_message.htm');
+
+//* load language file 
+$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_client_message.lng';
+include($lng_file);
+$app->tpl->setVar($wb);
+
+$msg = '';
+$error = '';
+
+//* Save data
+if(isset($_POST) && count($_POST) > 1) {
+	
+	//* Check values
+	if(!preg_match("/^\w+[\w\.\-\+]*\w{0,}@\w+[\w.-]*\w+\.[a-zA-Z0-9\-]{2,30}$/i", $_POST['sender'])) $error .= $wb['sender_invalid_error'].'<br />';
+	if(empty($_POST['subject'])) $error .= $wb['subject_invalid_error'].'<br />';
+	if(empty($_POST['message'])) $error .= $wb['message_invalid_error'].'<br />';
+	
+	//* Send message
+	if($error == '') {
+		//* Select all clients and resellers
+		if($_SESSION["s"]["user"]["typ"] == 'admin'){
+			$sql = "SELECT * FROM client WHERE email != ''";
+		} else {
+			$client_id = intval($_SESSION['s']['user']['client_id']);
+			if($client_id == 0) die('Invalid Client ID.');
+			$sql = "SELECT * FROM client WHERE email != '' AND parent_client_id = '$client_id'";
+		}
+		
+		//* Get clients
+		$clients = $app->db->queryAllRecords($sql);
+		if(is_array($clients)) {
+			$msg = $wb['email_sent_to_txt'].' ';
+			foreach($clients as $client) {
+				
+				//* Parse cleint details into message
+				$message = $_POST['message'];
+				foreach($client as $key => $val) {
+					$message = str_replace('{'.$key.'}', $val, $message);
+				}
+				
+				//* Send the email
+				$app->functions->mail($client['email'], $_POST['subject'], $message, $_POST['sender']);
+				$msg .= $client['email'].', ';
+			}
+			$msg = substr($msg,0,-2);
+		}
+		
+	} else {
+		$app->tpl->setVar('sender',$_POST['sender']);
+		$app->tpl->setVar('subject',$_POST['subject']);
+		$app->tpl->setVar('message',$_POST['message']);
+	}
+}
+
+if($_SESSION["s"]["user"]["typ"] == 'admin'){
+	$app->tpl->setVar('form_legend_txt',$wb['form_legend_admin_txt']);
+} else {
+	$app->tpl->setVar('form_legend_txt',$wb['form_legend_client_txt']);
+}
+
+$app->tpl->setVar('okmsg',$msg);
+$app->tpl->setVar('error',$error);
+
+$app->tpl_defaults();
+$app->tpl->pparse();
+
+
+?>
diff --git a/interface/web/client/form/client.tform.php b/interface/web/client/form/client.tform.php
index 3fca605ef9c447f3c0ba7321c17eb7a7f53712b4..d29a54c8df3440eb73142c3a82b53598c1a88438 100644
--- a/interface/web/client/form/client.tform.php
+++ b/interface/web/client/form/client.tform.php
@@ -134,7 +134,11 @@ $form["tabs"]['address'] = array (
 														'class' => 'validate_client',
 														'function' => 'username_unique',
 														'errmsg'=> 'username_error_unique'),
-										2 => array (	'type'	=> 'REGEX',
+										2 => array (	'type'	=> 'CUSTOM',
+														'class' => 'validate_client',
+														'function' => 'username_collision',
+														'errmsg'=> 'username_error_collision'),
+										3 => array (	'type'	=> 'REGEX',
 														'regex' => '/^[\w\.\-\_]{0,64}$/',
 														'errmsg'=> 'username_error_regex'),
 										),
diff --git a/interface/web/client/form/reseller.tform.php b/interface/web/client/form/reseller.tform.php
index c60d136d979f95acfa027463e810debed98b031c..f78e98a783dbf0291458de16db30c2da3d9e36e6 100644
--- a/interface/web/client/form/reseller.tform.php
+++ b/interface/web/client/form/reseller.tform.php
@@ -126,7 +126,11 @@ $form["tabs"]['address'] = array (
 														'class' => 'validate_client',
 														'function' => 'username_unique',
 														'errmsg'=> 'username_error_unique'),
-										2 => array (	'type'	=> 'REGEX',
+										2 => array (	'type'	=> 'CUSTOM',
+														'class' => 'validate_client',
+														'function' => 'username_collision',
+														'errmsg'=> 'username_error_collision'),
+										3 => array (	'type'	=> 'REGEX',
 														'regex' => '/^[\w\.\-\_]{0,64}$/',
 														'errmsg'=> 'username_error_regex'),
 										),
diff --git a/interface/web/client/lib/lang/ar.lng b/interface/web/client/lib/lang/ar.lng
index 9d70b064a836abfa6f3f934b6b1fbfb6335cc803..44ad01a7d7f898dd525d614b5850cd3315296c57 100644
--- a/interface/web/client/lib/lang/ar.lng
+++ b/interface/web/client/lib/lang/ar.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Resellers';
 $wb['error_has_clients'] = 'This reseller has clients. Delete the clients of the reseller first.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/ar_client.lng b/interface/web/client/lib/lang/ar_client.lng
index f688fd5f7d0c2bc7e2fb01b07b1af3833e222fb6..cd252a060c48e7cce2365ca0dc5edef55bcda406 100644
--- a/interface/web/client/lib/lang/ar_client.lng
+++ b/interface/web/client/lib/lang/ar_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/ar_client_message.lng b/interface/web/client/lib/lang/ar_client_message.lng
new file mode 100644
index 0000000000000000000000000000000000000000..4f4ef3799f6380b3749c69d50ea7696b64041c5e
--- /dev/null
+++ b/interface/web/client/lib/lang/ar_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$wb["sender_invalid_error"] = 'Sender email invalid.';
+$wb["subject_invalid_error"] = 'Subject is empty.';
+$wb["message_invalid_error"] = 'Message is empty.';
+$wb["email_sent_to_txt"] = 'Email sent to:';
+?>
diff --git a/interface/web/client/lib/lang/ar_reseller.lng b/interface/web/client/lib/lang/ar_reseller.lng
index ea62daf721a76e25189f44f40bee4b81f055a86f..e097df03aea3f6b9e54f160024e18c9f33479b6a 100644
--- a/interface/web/client/lib/lang/ar_reseller.lng
+++ b/interface/web/client/lib/lang/ar_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/bg.lng b/interface/web/client/lib/lang/bg.lng
index 5f1f246ff752aa2d628dd33d3eadfd7f9a2d79ad..a1ad57d3b69c08156200e57ddbce3d96aa961810 100644
--- a/interface/web/client/lib/lang/bg.lng
+++ b/interface/web/client/lib/lang/bg.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Resellers';
 $wb['error_has_clients'] = 'This reseller has clients. Delete the clients of the reseller first.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/bg_client.lng b/interface/web/client/lib/lang/bg_client.lng
index 830109f18ef4b3f1b35a70ef90ae4dba6705cc5d..650511ed00272c2a85d675d8a3eb64e863587185 100644
--- a/interface/web/client/lib/lang/bg_client.lng
+++ b/interface/web/client/lib/lang/bg_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/bg_client_message.lng b/interface/web/client/lib/lang/bg_client_message.lng
new file mode 100644
index 0000000000000000000000000000000000000000..4f4ef3799f6380b3749c69d50ea7696b64041c5e
--- /dev/null
+++ b/interface/web/client/lib/lang/bg_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$wb["sender_invalid_error"] = 'Sender email invalid.';
+$wb["subject_invalid_error"] = 'Subject is empty.';
+$wb["message_invalid_error"] = 'Message is empty.';
+$wb["email_sent_to_txt"] = 'Email sent to:';
+?>
diff --git a/interface/web/client/lib/lang/bg_reseller.lng b/interface/web/client/lib/lang/bg_reseller.lng
index ea62daf721a76e25189f44f40bee4b81f055a86f..e097df03aea3f6b9e54f160024e18c9f33479b6a 100644
--- a/interface/web/client/lib/lang/bg_reseller.lng
+++ b/interface/web/client/lib/lang/bg_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/br.lng b/interface/web/client/lib/lang/br.lng
index c47aa91e6598eed17e1730db74d82bf680aaea84..886e81db290a5a110a70c3af0e76ad0c239d2001 100644
--- a/interface/web/client/lib/lang/br.lng
+++ b/interface/web/client/lib/lang/br.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Revendedores';
 $wb['error_has_clients'] = 'Este revendedor possui clientes. Você deve remover os clientes primeiro.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/br_client.lng b/interface/web/client/lib/lang/br_client.lng
index f900d5b8318d8c0e28b2f1f67154e5b5c8856e08..70b33a6ecf32cb0128c860c83eb8b7c2dc2f32f5 100644
--- a/interface/web/client/lib/lang/br_client.lng
+++ b/interface/web/client/lib/lang/br_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/br_client_message.lng b/interface/web/client/lib/lang/br_client_message.lng
new file mode 100644
index 0000000000000000000000000000000000000000..4f4ef3799f6380b3749c69d50ea7696b64041c5e
--- /dev/null
+++ b/interface/web/client/lib/lang/br_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$wb["sender_invalid_error"] = 'Sender email invalid.';
+$wb["subject_invalid_error"] = 'Subject is empty.';
+$wb["message_invalid_error"] = 'Message is empty.';
+$wb["email_sent_to_txt"] = 'Email sent to:';
+?>
diff --git a/interface/web/client/lib/lang/br_reseller.lng b/interface/web/client/lib/lang/br_reseller.lng
index 670d6756b5c36cbc39f4646aff980b80386cf9c9..3b47cc50bc2e6b74b49eb857263634608e996e8f 100644
--- a/interface/web/client/lib/lang/br_reseller.lng
+++ b/interface/web/client/lib/lang/br_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/cz.lng b/interface/web/client/lib/lang/cz.lng
index eeef0fcf6c9b38b6451ba2517bad74d11a16cc81..6cae801cb6d31530016fd4e54459af05926318bf 100644
--- a/interface/web/client/lib/lang/cz.lng
+++ b/interface/web/client/lib/lang/cz.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Distributoři';
 $wb['error_has_clients'] = 'Distributor má klienty. Nejdříve smažte tyto klienty.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/cz_client.lng b/interface/web/client/lib/lang/cz_client.lng
index b6a4d22e2f4fb2891d8f2a7f4cf9f64b4d58409f..df4a92778d20bb2db1aeec6229b40515ab7f84db 100644
--- a/interface/web/client/lib/lang/cz_client.lng
+++ b/interface/web/client/lib/lang/cz_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/cz_client_message.lng b/interface/web/client/lib/lang/cz_client_message.lng
new file mode 100644
index 0000000000000000000000000000000000000000..4f4ef3799f6380b3749c69d50ea7696b64041c5e
--- /dev/null
+++ b/interface/web/client/lib/lang/cz_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$wb["sender_invalid_error"] = 'Sender email invalid.';
+$wb["subject_invalid_error"] = 'Subject is empty.';
+$wb["message_invalid_error"] = 'Message is empty.';
+$wb["email_sent_to_txt"] = 'Email sent to:';
+?>
diff --git a/interface/web/client/lib/lang/cz_reseller.lng b/interface/web/client/lib/lang/cz_reseller.lng
index 75d4cf469e68b5f250564bacafde9f5f803b9d6d..90e6832cd9e8150836d8f7229e5d8384c24d3b6a 100644
--- a/interface/web/client/lib/lang/cz_reseller.lng
+++ b/interface/web/client/lib/lang/cz_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/de.lng b/interface/web/client/lib/lang/de.lng
index 89617e20afe5c630abdc13e4bf87592bb30971d6..60c9d057022f80a80d09c3e71d9ae4b4701eda50 100644
--- a/interface/web/client/lib/lang/de.lng
+++ b/interface/web/client/lib/lang/de.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Reseller';
 $wb['error_has_clients'] = 'Dieser Reseller besitzt Kunden. Bitte zuerst die Kunden löschen.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/de_client.lng b/interface/web/client/lib/lang/de_client.lng
index 587d0d5069fdeb01c6f1c96a74b9a0fc0df82e09..46c41a8c795adbd7fda142166b42596f67f512cf 100644
--- a/interface/web/client/lib/lang/de_client.lng
+++ b/interface/web/client/lib/lang/de_client.lng
@@ -106,6 +106,7 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 $wb['bank_account_number_txt'] = 'Kontonr.';
 $wb['bank_code_txt'] = 'BLZ';
 $wb['bank_name_txt'] = 'Bank';
diff --git a/interface/web/client/lib/lang/de_client_message.lng b/interface/web/client/lib/lang/de_client_message.lng
new file mode 100644
index 0000000000000000000000000000000000000000..4f4ef3799f6380b3749c69d50ea7696b64041c5e
--- /dev/null
+++ b/interface/web/client/lib/lang/de_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$wb["sender_invalid_error"] = 'Sender email invalid.';
+$wb["subject_invalid_error"] = 'Subject is empty.';
+$wb["message_invalid_error"] = 'Message is empty.';
+$wb["email_sent_to_txt"] = 'Email sent to:';
+?>
diff --git a/interface/web/client/lib/lang/de_reseller.lng b/interface/web/client/lib/lang/de_reseller.lng
index b34bd1cccda2aa078124bc84a23d0d3a6a4d8976..0664e88bf6d4de1e0aa303d14044b02901225733 100644
--- a/interface/web/client/lib/lang/de_reseller.lng
+++ b/interface/web/client/lib/lang/de_reseller.lng
@@ -106,6 +106,7 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 $wb["web_limits_txt"] = 'Web-Limits';
 $wb["email_limits_txt"] = 'Email-Limits';
 $wb["database_limits_txt"] = 'Datenbank-Limits';
diff --git a/interface/web/client/lib/lang/el.lng b/interface/web/client/lib/lang/el.lng
index cc2433aba0b0192848a22f01c6c974e2d0dc74a2..87294f68419377ac6b1d2e21ce0df733115234d7 100644
--- a/interface/web/client/lib/lang/el.lng
+++ b/interface/web/client/lib/lang/el.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Μεταπωλητές';
 $wb['error_has_clients'] = 'Ο Μεταπωλητής έχει πελάτες. Διαγράψτε πρώτα τους πελάτες.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/el_client.lng b/interface/web/client/lib/lang/el_client.lng
index 6df5a003178d1ca48de0e0638f717f21f7e23d5f..e0e1387a1a0ddd303aa52e2f3d9a018b72e9a013 100644
--- a/interface/web/client/lib/lang/el_client.lng
+++ b/interface/web/client/lib/lang/el_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Εξαναγκασμός προτύπ
 $wb['limit_openvz_vm_error_notint'] = 'Το όριο εικονικών server πρέπει να είναι αριθμός.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/el_client_message.lng b/interface/web/client/lib/lang/el_client_message.lng
new file mode 100644
index 0000000000000000000000000000000000000000..4f4ef3799f6380b3749c69d50ea7696b64041c5e
--- /dev/null
+++ b/interface/web/client/lib/lang/el_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$wb["sender_invalid_error"] = 'Sender email invalid.';
+$wb["subject_invalid_error"] = 'Subject is empty.';
+$wb["message_invalid_error"] = 'Message is empty.';
+$wb["email_sent_to_txt"] = 'Email sent to:';
+?>
diff --git a/interface/web/client/lib/lang/el_reseller.lng b/interface/web/client/lib/lang/el_reseller.lng
index 79e54efae0bad63c71043a86bc43e3c87fd87421..3403175557851929a4b37832aa6cf50d434505da 100644
--- a/interface/web/client/lib/lang/el_reseller.lng
+++ b/interface/web/client/lib/lang/el_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Εξαναγκασμός προτύπ
 $wb['limit_openvz_vm_error_notint'] = 'Το όριο εικονικών server πρέπει να είναι αριθμός.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/en.lng b/interface/web/client/lib/lang/en.lng
index 4b10b2b8e687a879d6f69aa92cbdc6693a9372d4..03e36b2ceb254a8df92a473cfb90fcbd7aa7f069 100644
--- a/interface/web/client/lib/lang/en.lng
+++ b/interface/web/client/lib/lang/en.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Resellers';
 $wb["error_has_clients"] = 'This reseller has clients. Delete the clients of the reseller first.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
\ No newline at end of file
diff --git a/interface/web/client/lib/lang/en_client.lng b/interface/web/client/lib/lang/en_client.lng
index d912744554f3169603b115445347518c0d6fa4f4..3a9f30e31df8e26272f428fd1b9c1fda030479bd 100644
--- a/interface/web/client/lib/lang/en_client.lng
+++ b/interface/web/client/lib/lang/en_client.lng
@@ -109,6 +109,7 @@ $wb["limit_openvz_vm_template_id_txt"] = 'Force virtual server template';
 $wb["limit_openvz_vm_error_notint"] = 'The virtual server limit must be a number.';
 $wb["web_php_options_notempty"] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb["ssh_chroot_notempty"] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb["username_error_collision"] = 'The username may not start with the word -web- or -web- followed by a number.';
 $wb["bank_account_number_txt"] = 'Bank account no.';
 $wb["bank_code_txt"] = 'Bank code';
 $wb["bank_name_txt"] = 'Bank name';
diff --git a/interface/web/client/lib/lang/en_client_message.lng b/interface/web/client/lib/lang/en_client_message.lng
new file mode 100644
index 0000000000000000000000000000000000000000..4f4ef3799f6380b3749c69d50ea7696b64041c5e
--- /dev/null
+++ b/interface/web/client/lib/lang/en_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$wb["sender_invalid_error"] = 'Sender email invalid.';
+$wb["subject_invalid_error"] = 'Subject is empty.';
+$wb["message_invalid_error"] = 'Message is empty.';
+$wb["email_sent_to_txt"] = 'Email sent to:';
+?>
diff --git a/interface/web/client/lib/lang/en_reseller.lng b/interface/web/client/lib/lang/en_reseller.lng
index df2ec24ace746415a6d8eb913ae072d0b0d33aad..4863a4eb09a62b917ab306def6ab9a82870092c9 100644
--- a/interface/web/client/lib/lang/en_reseller.lng
+++ b/interface/web/client/lib/lang/en_reseller.lng
@@ -108,6 +108,7 @@ $wb["limit_openvz_vm_template_id_txt"] = 'Force virtual server template';
 $wb["limit_openvz_vm_error_notint"] = 'The virtual server limit must be a number.';
 $wb["web_php_options_notempty"] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb["ssh_chroot_notempty"] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb["username_error_collision"] = 'The username may not start with the word -web- or -web- followed by a number.';
 $wb["web_limits_txt"] = 'Web Limits';
 $wb["email_limits_txt"] = 'Email Limits';
 $wb["database_limits_txt"] = 'Database Limits';
diff --git a/interface/web/client/lib/lang/es.lng b/interface/web/client/lib/lang/es.lng
index 9f72fe574b4f95a21fb204a2fe97d1090e95897b..8d77b9203f61e4b48c1e901cb731650cbc29f0b2 100644
--- a/interface/web/client/lib/lang/es.lng
+++ b/interface/web/client/lib/lang/es.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Revendedores';
 $wb['error_has_clients'] = 'This reseller has clients. Delete the clients of the reseller first.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/es_client.lng b/interface/web/client/lib/lang/es_client.lng
index 3c461a54addc0cedd1d0c3e89eceecb72c6b75cb..047e70a2dda94784307d028a892ed9760d3f1a22 100644
--- a/interface/web/client/lib/lang/es_client.lng
+++ b/interface/web/client/lib/lang/es_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/es_client_message.lng b/interface/web/client/lib/lang/es_client_message.lng
new file mode 100644
index 0000000000000000000000000000000000000000..4f4ef3799f6380b3749c69d50ea7696b64041c5e
--- /dev/null
+++ b/interface/web/client/lib/lang/es_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$wb["sender_invalid_error"] = 'Sender email invalid.';
+$wb["subject_invalid_error"] = 'Subject is empty.';
+$wb["message_invalid_error"] = 'Message is empty.';
+$wb["email_sent_to_txt"] = 'Email sent to:';
+?>
diff --git a/interface/web/client/lib/lang/es_reseller.lng b/interface/web/client/lib/lang/es_reseller.lng
index 23ea38e5e84a47c4ae834388afb562b221094ecb..412bafe02d34c0c1f8c0ea624cf906bafb89dd74 100644
--- a/interface/web/client/lib/lang/es_reseller.lng
+++ b/interface/web/client/lib/lang/es_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/fi.lng b/interface/web/client/lib/lang/fi.lng
index 538902414f0e7a8241a1075efd13263476a26820..243ac6db499e6a01df240cd7427c2fbc075ecc08 100755
--- a/interface/web/client/lib/lang/fi.lng
+++ b/interface/web/client/lib/lang/fi.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Jälleenmyyjät';
 $wb['error_has_clients'] = 'Tällä jälleenmyyjällä on asiakkaita, poista ne ensin.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/fi_client.lng b/interface/web/client/lib/lang/fi_client.lng
index 45fbefa3b2f4eb85b7d6ef74b379cb1c8beea3e3..30f111e94dd010e14abb6451dd40cd6ff454d0fc 100755
--- a/interface/web/client/lib/lang/fi_client.lng
+++ b/interface/web/client/lib/lang/fi_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/fi_client_message.lng b/interface/web/client/lib/lang/fi_client_message.lng
new file mode 100644
index 0000000000000000000000000000000000000000..4f4ef3799f6380b3749c69d50ea7696b64041c5e
--- /dev/null
+++ b/interface/web/client/lib/lang/fi_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$wb["sender_invalid_error"] = 'Sender email invalid.';
+$wb["subject_invalid_error"] = 'Subject is empty.';
+$wb["message_invalid_error"] = 'Message is empty.';
+$wb["email_sent_to_txt"] = 'Email sent to:';
+?>
diff --git a/interface/web/client/lib/lang/fi_reseller.lng b/interface/web/client/lib/lang/fi_reseller.lng
index bc4b368654cd68cbaa52bbcc16f5ebc9dc80aa9c..0bc176186dd3ebbafeb5864b2a13d6608cb77d83 100644
--- a/interface/web/client/lib/lang/fi_reseller.lng
+++ b/interface/web/client/lib/lang/fi_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/fr.lng b/interface/web/client/lib/lang/fr.lng
index 624247c7f0f13df3e4811a9c6e9312c1bea17569..a7e1738015c12f0a29908174aab821c57806476d 100644
--- a/interface/web/client/lib/lang/fr.lng
+++ b/interface/web/client/lib/lang/fr.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Revendeurs';
 $wb['error_has_clients'] = 'Ce revendeur a des clients. Effacez dabord les clients de ce revendeur.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/fr_client.lng b/interface/web/client/lib/lang/fr_client.lng
index 3254ca0efbf600f17b3d63834b4f661ece8d0b03..38e85f6cf75a5973e2a62719078315a84425383e 100644
--- a/interface/web/client/lib/lang/fr_client.lng
+++ b/interface/web/client/lib/lang/fr_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/fr_client_message.lng b/interface/web/client/lib/lang/fr_client_message.lng
new file mode 100644
index 0000000000000000000000000000000000000000..4f4ef3799f6380b3749c69d50ea7696b64041c5e
--- /dev/null
+++ b/interface/web/client/lib/lang/fr_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$wb["sender_invalid_error"] = 'Sender email invalid.';
+$wb["subject_invalid_error"] = 'Subject is empty.';
+$wb["message_invalid_error"] = 'Message is empty.';
+$wb["email_sent_to_txt"] = 'Email sent to:';
+?>
diff --git a/interface/web/client/lib/lang/fr_reseller.lng b/interface/web/client/lib/lang/fr_reseller.lng
index 40b3502cca864ed024b2dec117b032b1617a9b4a..d9387747f099f15ee639c39eec8cc97399643da7 100644
--- a/interface/web/client/lib/lang/fr_reseller.lng
+++ b/interface/web/client/lib/lang/fr_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/hr.lng b/interface/web/client/lib/lang/hr.lng
index 73850f43a32eb2f9ae5e9cc173a24bf38eaa98a3..f4126df215e68f06ed38b068b8f977f3ef666bca 100644
--- a/interface/web/client/lib/lang/hr.lng
+++ b/interface/web/client/lib/lang/hr.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Preprodavači';
 $wb['error_has_clients'] = 'Ovaj preprodavač ima klijente. Prvo morate obrisati klijente preprodavača.';
 $wb['add_additional_template_txt'] = 'Dodaj dodatni predložak';
 $wb['delete_additional_template_txt'] = 'Obriši dodatni predložak';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/hr_client.lng b/interface/web/client/lib/lang/hr_client.lng
index a635281957cf1ec448fd0743a190767ca0b1d6dd..2537d74c1407cf5bcca5f8ffd6f090bca38668ef 100644
--- a/interface/web/client/lib/lang/hr_client.lng
+++ b/interface/web/client/lib/lang/hr_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Primjeni predložak virtualnog servera
 $wb['limit_openvz_vm_error_notint'] = 'Broj virtualnih servera mora biti znamenka.';
 $wb['web_php_options_notempty'] = 'Nisu izabrane PHP opcije. Izaberite jednu PHP opciju.';
 $wb['ssh_chroot_notempty'] = 'Nisu izabrane SSH opcije. Izaberite jednu SSH opciju.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/hr_client_message.lng b/interface/web/client/lib/lang/hr_client_message.lng
new file mode 100644
index 0000000000000000000000000000000000000000..4f4ef3799f6380b3749c69d50ea7696b64041c5e
--- /dev/null
+++ b/interface/web/client/lib/lang/hr_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$wb["sender_invalid_error"] = 'Sender email invalid.';
+$wb["subject_invalid_error"] = 'Subject is empty.';
+$wb["message_invalid_error"] = 'Message is empty.';
+$wb["email_sent_to_txt"] = 'Email sent to:';
+?>
diff --git a/interface/web/client/lib/lang/hr_reseller.lng b/interface/web/client/lib/lang/hr_reseller.lng
index 3f932b16a92eea5f2c223e0d2d747b5dc12df4ae..241f3ce442e745cf19663df32661a9bfe29893da 100644
--- a/interface/web/client/lib/lang/hr_reseller.lng
+++ b/interface/web/client/lib/lang/hr_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Primjeni predložak virtualnog servera
 $wb['limit_openvz_vm_error_notint'] = 'Broj virtualnih servera mora biti znamenka.';
 $wb['web_php_options_notempty'] = 'Nisu izabrane PHP opcije. Izaberite jednu PHP opciju.';
 $wb['ssh_chroot_notempty'] = 'Nisu izabrane SSH opcije. Izaberite jednu SSH opciju.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/hu.lng b/interface/web/client/lib/lang/hu.lng
index ee5a41d3430d22ddebea92f2e3a757c087e19fd4..2ad20039aa019302e80531425093492f0468caf1 100644
--- a/interface/web/client/lib/lang/hu.lng
+++ b/interface/web/client/lib/lang/hu.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Viszonteladók';
 $wb['error_has_clients'] = 'This reseller has clients. Delete the clients of the reseller first.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/hu_client.lng b/interface/web/client/lib/lang/hu_client.lng
index 6bc3a8b8308864d0a5215d6ab2ae6c4268b0f375..f31ec8d278a6e6c8214b15de46e120d3475a6b50 100644
--- a/interface/web/client/lib/lang/hu_client.lng
+++ b/interface/web/client/lib/lang/hu_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/hu_client_message.lng b/interface/web/client/lib/lang/hu_client_message.lng
new file mode 100644
index 0000000000000000000000000000000000000000..4f4ef3799f6380b3749c69d50ea7696b64041c5e
--- /dev/null
+++ b/interface/web/client/lib/lang/hu_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$wb["sender_invalid_error"] = 'Sender email invalid.';
+$wb["subject_invalid_error"] = 'Subject is empty.';
+$wb["message_invalid_error"] = 'Message is empty.';
+$wb["email_sent_to_txt"] = 'Email sent to:';
+?>
diff --git a/interface/web/client/lib/lang/hu_reseller.lng b/interface/web/client/lib/lang/hu_reseller.lng
index b1d8e0135e0a287dd924b9a8a3e5cb48c3e0d247..6e129d28878f05fe9a5c23427504b00898ab5de0 100644
--- a/interface/web/client/lib/lang/hu_reseller.lng
+++ b/interface/web/client/lib/lang/hu_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/id.lng b/interface/web/client/lib/lang/id.lng
index 09bf4fb48e6730a71e007ba64c23dbc357f95f42..78c0101b83f1cf9f8a77d17bd11e1f60ed2a82da 100644
--- a/interface/web/client/lib/lang/id.lng
+++ b/interface/web/client/lib/lang/id.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Reseller';
 $wb['error_has_clients'] = 'Reseller ini memiliki klien. Hapus klien dari reseller terlebih dahulu.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/id_client.lng b/interface/web/client/lib/lang/id_client.lng
index 5465034e5548b23ac249ac9f3096817199fcc0b1..f85bb00113b844bdc2cbb4a90296f7f548a569c4 100644
--- a/interface/web/client/lib/lang/id_client.lng
+++ b/interface/web/client/lib/lang/id_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/id_client_message.lng b/interface/web/client/lib/lang/id_client_message.lng
new file mode 100644
index 0000000000000000000000000000000000000000..4f4ef3799f6380b3749c69d50ea7696b64041c5e
--- /dev/null
+++ b/interface/web/client/lib/lang/id_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$wb["sender_invalid_error"] = 'Sender email invalid.';
+$wb["subject_invalid_error"] = 'Subject is empty.';
+$wb["message_invalid_error"] = 'Message is empty.';
+$wb["email_sent_to_txt"] = 'Email sent to:';
+?>
diff --git a/interface/web/client/lib/lang/id_reseller.lng b/interface/web/client/lib/lang/id_reseller.lng
index 4ce86492bf4b55afeb881fe2796ca0c92064e672..b03aae63eb0dbc64216bd350712319b85bfc24c9 100644
--- a/interface/web/client/lib/lang/id_reseller.lng
+++ b/interface/web/client/lib/lang/id_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/it.lng b/interface/web/client/lib/lang/it.lng
index 44d29f733a4a8517d5baa2cb24986f47871071ed..9ea1419ebe15cfe6b3c1e10837dc84a7fdf8e3f2 100644
--- a/interface/web/client/lib/lang/it.lng
+++ b/interface/web/client/lib/lang/it.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Rivenditori';
 $wb['error_has_clients'] = 'Questo rivenditore ha dei clienti, bisogna cancellarli prima di procedere.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/it_client.lng b/interface/web/client/lib/lang/it_client.lng
index a0f5bba7fe2171c96c2b795f564ae71f96d4bdd1..1682d848efcaccfafbc3cde3598dcf1f64e7f889 100644
--- a/interface/web/client/lib/lang/it_client.lng
+++ b/interface/web/client/lib/lang/it_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/it_client_message.lng b/interface/web/client/lib/lang/it_client_message.lng
new file mode 100644
index 0000000000000000000000000000000000000000..4f4ef3799f6380b3749c69d50ea7696b64041c5e
--- /dev/null
+++ b/interface/web/client/lib/lang/it_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$wb["sender_invalid_error"] = 'Sender email invalid.';
+$wb["subject_invalid_error"] = 'Subject is empty.';
+$wb["message_invalid_error"] = 'Message is empty.';
+$wb["email_sent_to_txt"] = 'Email sent to:';
+?>
diff --git a/interface/web/client/lib/lang/it_reseller.lng b/interface/web/client/lib/lang/it_reseller.lng
index ea62daf721a76e25189f44f40bee4b81f055a86f..e097df03aea3f6b9e54f160024e18c9f33479b6a 100644
--- a/interface/web/client/lib/lang/it_reseller.lng
+++ b/interface/web/client/lib/lang/it_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/ja.lng b/interface/web/client/lib/lang/ja.lng
index 66ed95ed7d27aa95917b16125a68a35579694c8c..0eb9efe5217d695977d38eabfccf1111724c3fe2 100644
--- a/interface/web/client/lib/lang/ja.lng
+++ b/interface/web/client/lib/lang/ja.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'リセラー';
 $wb['error_has_clients'] = 'This reseller has clients. Delete the clients of the reseller first.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/ja_client.lng b/interface/web/client/lib/lang/ja_client.lng
index edf1a4fac69e1c35fd8c38b88c8ffc527546ffe9..e8f0c2ae1cf0379f256753a9958cc901aaef3723 100644
--- a/interface/web/client/lib/lang/ja_client.lng
+++ b/interface/web/client/lib/lang/ja_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/ja_client_message.lng b/interface/web/client/lib/lang/ja_client_message.lng
new file mode 100644
index 0000000000000000000000000000000000000000..4f4ef3799f6380b3749c69d50ea7696b64041c5e
--- /dev/null
+++ b/interface/web/client/lib/lang/ja_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$wb["sender_invalid_error"] = 'Sender email invalid.';
+$wb["subject_invalid_error"] = 'Subject is empty.';
+$wb["message_invalid_error"] = 'Message is empty.';
+$wb["email_sent_to_txt"] = 'Email sent to:';
+?>
diff --git a/interface/web/client/lib/lang/ja_reseller.lng b/interface/web/client/lib/lang/ja_reseller.lng
index b3b08a6a9b7efc7e42af21c4efb6972cc90e6dce..35543702aba94c53eedfbf3ab700b047cbca4b62 100644
--- a/interface/web/client/lib/lang/ja_reseller.lng
+++ b/interface/web/client/lib/lang/ja_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/nl.lng b/interface/web/client/lib/lang/nl.lng
index abfdc9184dded265f67991b4253310e2a55929f9..e344124b1b67a8872a756f035132671cc029de06 100644
--- a/interface/web/client/lib/lang/nl.lng
+++ b/interface/web/client/lib/lang/nl.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Resellers';
 $wb['error_has_clients'] = 'Deze reseller heeft klanten. Verwijder eerst de klanten van de reseller';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/nl_client.lng b/interface/web/client/lib/lang/nl_client.lng
index 35234e59b1a159b8f4a6fb91ac7a54a2b3f1f3cf..acbe70cdb33cb20d5042674a4621800e52500e48 100644
--- a/interface/web/client/lib/lang/nl_client.lng
+++ b/interface/web/client/lib/lang/nl_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/nl_client_message.lng b/interface/web/client/lib/lang/nl_client_message.lng
new file mode 100644
index 0000000000000000000000000000000000000000..4f4ef3799f6380b3749c69d50ea7696b64041c5e
--- /dev/null
+++ b/interface/web/client/lib/lang/nl_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$wb["sender_invalid_error"] = 'Sender email invalid.';
+$wb["subject_invalid_error"] = 'Subject is empty.';
+$wb["message_invalid_error"] = 'Message is empty.';
+$wb["email_sent_to_txt"] = 'Email sent to:';
+?>
diff --git a/interface/web/client/lib/lang/nl_reseller.lng b/interface/web/client/lib/lang/nl_reseller.lng
index 59913a16352b4799ae0f0fee6f65e20f8a48ba13..f9bd57ea6a973f66690ab8249a632efec04008c8 100644
--- a/interface/web/client/lib/lang/nl_reseller.lng
+++ b/interface/web/client/lib/lang/nl_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/pl.lng b/interface/web/client/lib/lang/pl.lng
index f0200d37841f20e54708d2c25c69103a1957af2e..ddecb90ff313697cd67860459964f09f44a664ab 100644
--- a/interface/web/client/lib/lang/pl.lng
+++ b/interface/web/client/lib/lang/pl.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Resellerzy';
 $wb['error_has_clients'] = 'Reseller posiada klientów. Usuń ich zanim usuniesz resellera.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/pl_client.lng b/interface/web/client/lib/lang/pl_client.lng
index b822079e4862d0a11e89948e1651aa8c0f487612..e2e3cabfb1a4d784a01a1a2e11667e8faa3f647e 100644
--- a/interface/web/client/lib/lang/pl_client.lng
+++ b/interface/web/client/lib/lang/pl_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/pl_client_message.lng b/interface/web/client/lib/lang/pl_client_message.lng
new file mode 100644
index 0000000000000000000000000000000000000000..4f4ef3799f6380b3749c69d50ea7696b64041c5e
--- /dev/null
+++ b/interface/web/client/lib/lang/pl_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$wb["sender_invalid_error"] = 'Sender email invalid.';
+$wb["subject_invalid_error"] = 'Subject is empty.';
+$wb["message_invalid_error"] = 'Message is empty.';
+$wb["email_sent_to_txt"] = 'Email sent to:';
+?>
diff --git a/interface/web/client/lib/lang/pl_reseller.lng b/interface/web/client/lib/lang/pl_reseller.lng
index e0631f2b9e47b4fac5df401b85f761638c29b95a..e4ab1fb268b017a291a7622eb7a1c764d08d47c6 100644
--- a/interface/web/client/lib/lang/pl_reseller.lng
+++ b/interface/web/client/lib/lang/pl_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/pt.lng b/interface/web/client/lib/lang/pt.lng
index 8ec6dd1dc0e83621bc98881552c8db757244a9cd..274c0f85609fd670370ed967bc5fa0f47b7a3a3e 100644
--- a/interface/web/client/lib/lang/pt.lng
+++ b/interface/web/client/lib/lang/pt.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Revendedores';
 $wb['error_has_clients'] = 'Este revendedor possui clientes. Deve remover os clientes primeiro.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/pt_client.lng b/interface/web/client/lib/lang/pt_client.lng
index bdc3f7eb8775ca8853640a0e5b0e8301f89f79c9..7cf9c96042e67a61813d4030d1fa3b5072b36f52 100644
--- a/interface/web/client/lib/lang/pt_client.lng
+++ b/interface/web/client/lib/lang/pt_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/pt_client_message.lng b/interface/web/client/lib/lang/pt_client_message.lng
new file mode 100644
index 0000000000000000000000000000000000000000..4f4ef3799f6380b3749c69d50ea7696b64041c5e
--- /dev/null
+++ b/interface/web/client/lib/lang/pt_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$wb["sender_invalid_error"] = 'Sender email invalid.';
+$wb["subject_invalid_error"] = 'Subject is empty.';
+$wb["message_invalid_error"] = 'Message is empty.';
+$wb["email_sent_to_txt"] = 'Email sent to:';
+?>
diff --git a/interface/web/client/lib/lang/pt_reseller.lng b/interface/web/client/lib/lang/pt_reseller.lng
index 83c9fa94f87cad5f7cb7a8f9b29e37c54f4f3d19..ac55686f696a56c0f2f8a74bb644cd17a33d8623 100644
--- a/interface/web/client/lib/lang/pt_reseller.lng
+++ b/interface/web/client/lib/lang/pt_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/ro.lng b/interface/web/client/lib/lang/ro.lng
index 9d70b064a836abfa6f3f934b6b1fbfb6335cc803..44ad01a7d7f898dd525d614b5850cd3315296c57 100644
--- a/interface/web/client/lib/lang/ro.lng
+++ b/interface/web/client/lib/lang/ro.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Resellers';
 $wb['error_has_clients'] = 'This reseller has clients. Delete the clients of the reseller first.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/ro_client.lng b/interface/web/client/lib/lang/ro_client.lng
index 1380813b1f77e874757d673efa5ae7bb84505d70..6712694f529bd2e86c4142815c63374a9f3d39ba 100644
--- a/interface/web/client/lib/lang/ro_client.lng
+++ b/interface/web/client/lib/lang/ro_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/ro_client_message.lng b/interface/web/client/lib/lang/ro_client_message.lng
new file mode 100644
index 0000000000000000000000000000000000000000..4f4ef3799f6380b3749c69d50ea7696b64041c5e
--- /dev/null
+++ b/interface/web/client/lib/lang/ro_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$wb["sender_invalid_error"] = 'Sender email invalid.';
+$wb["subject_invalid_error"] = 'Subject is empty.';
+$wb["message_invalid_error"] = 'Message is empty.';
+$wb["email_sent_to_txt"] = 'Email sent to:';
+?>
diff --git a/interface/web/client/lib/lang/ro_reseller.lng b/interface/web/client/lib/lang/ro_reseller.lng
index ea62daf721a76e25189f44f40bee4b81f055a86f..e097df03aea3f6b9e54f160024e18c9f33479b6a 100644
--- a/interface/web/client/lib/lang/ro_reseller.lng
+++ b/interface/web/client/lib/lang/ro_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/ru.lng b/interface/web/client/lib/lang/ru.lng
index ec39c062945834af8f62c191e600bc1a01b27dbe..d10a3cc05d016106811c1759163b5feb284b6885 100644
--- a/interface/web/client/lib/lang/ru.lng
+++ b/interface/web/client/lib/lang/ru.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Реселлеры';
 $wb['error_has_clients'] = 'У реселлера есть клиенты. Вначале удалите их.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/ru_client.lng b/interface/web/client/lib/lang/ru_client.lng
index ab7c44803cd3eb664993b591810327bb96d4ee23..c18f5b81a2fa90470b9b7c071e1f56318819f664 100644
--- a/interface/web/client/lib/lang/ru_client.lng
+++ b/interface/web/client/lib/lang/ru_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/ru_client_message.lng b/interface/web/client/lib/lang/ru_client_message.lng
new file mode 100644
index 0000000000000000000000000000000000000000..4f4ef3799f6380b3749c69d50ea7696b64041c5e
--- /dev/null
+++ b/interface/web/client/lib/lang/ru_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$wb["sender_invalid_error"] = 'Sender email invalid.';
+$wb["subject_invalid_error"] = 'Subject is empty.';
+$wb["message_invalid_error"] = 'Message is empty.';
+$wb["email_sent_to_txt"] = 'Email sent to:';
+?>
diff --git a/interface/web/client/lib/lang/ru_reseller.lng b/interface/web/client/lib/lang/ru_reseller.lng
index 3c36e5bc2dca8ca81fc80c9aac106476e6aa9b25..768a8bd8ce7a14cb854c4f0b7db5bd3b2b41d32e 100644
--- a/interface/web/client/lib/lang/ru_reseller.lng
+++ b/interface/web/client/lib/lang/ru_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/se.lng b/interface/web/client/lib/lang/se.lng
index 9d70b064a836abfa6f3f934b6b1fbfb6335cc803..44ad01a7d7f898dd525d614b5850cd3315296c57 100644
--- a/interface/web/client/lib/lang/se.lng
+++ b/interface/web/client/lib/lang/se.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Resellers';
 $wb['error_has_clients'] = 'This reseller has clients. Delete the clients of the reseller first.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/se_client.lng b/interface/web/client/lib/lang/se_client.lng
index bcefaddf21b91548809c26a8f75ec7131dfbadc2..214a56dab389d4aac4490e5829ea67248594753e 100644
--- a/interface/web/client/lib/lang/se_client.lng
+++ b/interface/web/client/lib/lang/se_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/se_client_message.lng b/interface/web/client/lib/lang/se_client_message.lng
new file mode 100644
index 0000000000000000000000000000000000000000..4f4ef3799f6380b3749c69d50ea7696b64041c5e
--- /dev/null
+++ b/interface/web/client/lib/lang/se_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$wb["sender_invalid_error"] = 'Sender email invalid.';
+$wb["subject_invalid_error"] = 'Subject is empty.';
+$wb["message_invalid_error"] = 'Message is empty.';
+$wb["email_sent_to_txt"] = 'Email sent to:';
+?>
diff --git a/interface/web/client/lib/lang/se_reseller.lng b/interface/web/client/lib/lang/se_reseller.lng
index ea62daf721a76e25189f44f40bee4b81f055a86f..e097df03aea3f6b9e54f160024e18c9f33479b6a 100644
--- a/interface/web/client/lib/lang/se_reseller.lng
+++ b/interface/web/client/lib/lang/se_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/sk.lng b/interface/web/client/lib/lang/sk.lng
index a6f182ee2e51878cf9d2eb94d6526997fa643148..2f7fe8fdce8c4d26755c5d24794d9fdcc3fe5046 100644
--- a/interface/web/client/lib/lang/sk.lng
+++ b/interface/web/client/lib/lang/sk.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Predajcovia';
 $wb['error_has_clients'] = 'This reseller has clients. Delete the clients of the reseller first.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/sk_client.lng b/interface/web/client/lib/lang/sk_client.lng
index 72cd85323181715492442ba4c0f152b68f331209..4c088f4c46e4819bc472cb61d4b58f7120b208c5 100644
--- a/interface/web/client/lib/lang/sk_client.lng
+++ b/interface/web/client/lib/lang/sk_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/sk_client_message.lng b/interface/web/client/lib/lang/sk_client_message.lng
new file mode 100644
index 0000000000000000000000000000000000000000..4f4ef3799f6380b3749c69d50ea7696b64041c5e
--- /dev/null
+++ b/interface/web/client/lib/lang/sk_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$wb["sender_invalid_error"] = 'Sender email invalid.';
+$wb["subject_invalid_error"] = 'Subject is empty.';
+$wb["message_invalid_error"] = 'Message is empty.';
+$wb["email_sent_to_txt"] = 'Email sent to:';
+?>
diff --git a/interface/web/client/lib/lang/sk_reseller.lng b/interface/web/client/lib/lang/sk_reseller.lng
index 2008e6c1c61a94144b5901b90f42beea9ac306b5..859158bf034833d67ad15c390ff257d710c7aa2a 100644
--- a/interface/web/client/lib/lang/sk_reseller.lng
+++ b/interface/web/client/lib/lang/sk_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/tr.lng b/interface/web/client/lib/lang/tr.lng
index 9caa4cb8c4a8552945c05a8e1af23c78df6d4e76..d336d75967016e8f779569204bd1fc541369c16a 100644
--- a/interface/web/client/lib/lang/tr.lng
+++ b/interface/web/client/lib/lang/tr.lng
@@ -12,4 +12,6 @@ $wb['Resellers'] = 'Resellerlar';
 $wb['error_has_clients'] = 'Bu reseller müşterilere sahip. Resellerı silmeden önce müşterilerini silmelisiniz.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
+$wb['Messaging'] = 'Messaging';
+$wb['Send Email'] = 'Send Email';
 ?>
diff --git a/interface/web/client/lib/lang/tr_client.lng b/interface/web/client/lib/lang/tr_client.lng
index 117eb4f4bebc4391188fae99f81c3b219bcc1779..8da9085607eeffe185c4d1319ae947e73f93789c 100644
--- a/interface/web/client/lib/lang/tr_client.lng
+++ b/interface/web/client/lib/lang/tr_client.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/lang/tr_client_message.lng b/interface/web/client/lib/lang/tr_client_message.lng
new file mode 100644
index 0000000000000000000000000000000000000000..4f4ef3799f6380b3749c69d50ea7696b64041c5e
--- /dev/null
+++ b/interface/web/client/lib/lang/tr_client_message.lng
@@ -0,0 +1,13 @@
+<?php
+$wb["btn_send_txt"] = 'Send email';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["sender_txt"] = 'Sender email address';
+$wb["subject_txt"] = 'Subject';
+$wb["message_txt"] = 'Message';
+$wb["form_legend_client_txt"] = 'Send email message to all clients.';
+$wb["form_legend_admin_txt"] = 'Send email message to all clients and resellers.';
+$wb["sender_invalid_error"] = 'Sender email invalid.';
+$wb["subject_invalid_error"] = 'Subject is empty.';
+$wb["message_invalid_error"] = 'Message is empty.';
+$wb["email_sent_to_txt"] = 'Email sent to:';
+?>
diff --git a/interface/web/client/lib/lang/tr_reseller.lng b/interface/web/client/lib/lang/tr_reseller.lng
index ba24fda9b88c684b626715d033b7e3d9b32c2a1e..5022db2d64269bff3b563f5e3f45141c7a8a578c 100644
--- a/interface/web/client/lib/lang/tr_reseller.lng
+++ b/interface/web/client/lib/lang/tr_reseller.lng
@@ -106,4 +106,5 @@ $wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
 $wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
+$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 ?>
diff --git a/interface/web/client/lib/module.conf.php b/interface/web/client/lib/module.conf.php
index f37461d0d9740fe6ded82fad3b8200d5caf15aa7..3e36a26e88782d011f0a389c98da3a4210f4702e 100644
--- a/interface/web/client/lib/module.conf.php
+++ b/interface/web/client/lib/module.conf.php
@@ -52,9 +52,19 @@ $items[] = array( 'title' 	=> "Add Reseller",
 $module["nav"][] = array(	'title'	=> 'Resellers',
 							'open' 	=> 1,
 							'items'	=> $items);
+
+unset($items);
 }
 
+$items[] = array( 'title' 	=> "Send email",
+				  'target' 	=> 'content',
+				  'link'	=> 'client/client_message.php',
+				  'html_id' => 'reseller_add');
 
+$module["nav"][] = array(	'title'	=> 'Messaging',
+							'open' 	=> 1,
+							'items'	=> $items);
 
+unset($items);
 
 ?>
\ No newline at end of file
diff --git a/interface/web/client/templates/client_message.htm b/interface/web/client/templates/client_message.htm
new file mode 100644
index 0000000000000000000000000000000000000000..cc2183ed4b9eba9552ce6a3399f2cf9cd3f1f16b
--- /dev/null
+++ b/interface/web/client/templates/client_message.htm
@@ -0,0 +1,31 @@
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="form_desc_txt"></p>
+
+<div class="panel panel_client">
+  <div class="pnl_formsarea">
+    <fieldset class="inlineLabels"><legend>{tmpl_var name='form_legend_txt'}</legend>
+      <tmpl_if name="okmsg">
+	<div id="OKMsg"><p><tmpl_var name="okmsg"></p></div>
+  </tmpl_if>
+  <tmpl_if name="error">
+	<div id="errorMsg"><h3>ERROR</h3><ol><tmpl_var name="error"></ol></div>
+  </tmpl_if>
+	  <div class="ctrlHolder">
+      	<label for="sender">{tmpl_var name='sender_txt'}</label>
+        <input name="sender" id="sender" value="{tmpl_var name='sender'}" style="width:500px" size="30" maxlength="255" type="text" class="textInput" />
+	  </div>
+	  <div class="ctrlHolder">
+      	<label for="subject">{tmpl_var name='subject_txt'}</label>
+        <input name="subject" id="subject" value="{tmpl_var name='subject'}" style="width:500px" size="30" maxlength="255" type="text" class="textInput" />
+	  </div>
+      <div class="ctrlHolder">
+      	<label for="message">{tmpl_var name='message_txt'}</label>
+        <textarea name="message" id="message" rows='' cols='' style="width:500px">{tmpl_var name='message'}</textarea>
+      </div>
+    </fieldset>
+    <div class="buttonHolder buttons">
+      <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_send_txt'}" onClick="submitForm('pageForm','client/client_message.php');"><span>{tmpl_var name='btn_send_txt'}</span></button>
+      <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('client/client_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+    </div>
+  </div>
+</div>
diff --git a/interface/web/dns/lib/lang/ar_dns_import.lng b/interface/web/dns/lib/lang/ar_dns_import.lng
index 536c62f78103cbe5a160d7965f10fe441f86ea09..201a755b36f55e19e247d075c463ced0fc45c030 100644
--- a/interface/web/dns/lib/lang/ar_dns_import.lng
+++ b/interface/web/dns/lib/lang/ar_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/bg_dns_import.lng b/interface/web/dns/lib/lang/bg_dns_import.lng
index 536c62f78103cbe5a160d7965f10fe441f86ea09..201a755b36f55e19e247d075c463ced0fc45c030 100644
--- a/interface/web/dns/lib/lang/bg_dns_import.lng
+++ b/interface/web/dns/lib/lang/bg_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/br_dns_import.lng b/interface/web/dns/lib/lang/br_dns_import.lng
index 536c62f78103cbe5a160d7965f10fe441f86ea09..201a755b36f55e19e247d075c463ced0fc45c030 100644
--- a/interface/web/dns/lib/lang/br_dns_import.lng
+++ b/interface/web/dns/lib/lang/br_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/cz_dns_import.lng b/interface/web/dns/lib/lang/cz_dns_import.lng
index 536c62f78103cbe5a160d7965f10fe441f86ea09..201a755b36f55e19e247d075c463ced0fc45c030 100644
--- a/interface/web/dns/lib/lang/cz_dns_import.lng
+++ b/interface/web/dns/lib/lang/cz_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/de_dns_import.lng b/interface/web/dns/lib/lang/de_dns_import.lng
index 536c62f78103cbe5a160d7965f10fe441f86ea09..201a755b36f55e19e247d075c463ced0fc45c030 100644
--- a/interface/web/dns/lib/lang/de_dns_import.lng
+++ b/interface/web/dns/lib/lang/de_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/el_dns_import.lng b/interface/web/dns/lib/lang/el_dns_import.lng
index 536c62f78103cbe5a160d7965f10fe441f86ea09..201a755b36f55e19e247d075c463ced0fc45c030 100644
--- a/interface/web/dns/lib/lang/el_dns_import.lng
+++ b/interface/web/dns/lib/lang/el_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/es_dns_import.lng b/interface/web/dns/lib/lang/es_dns_import.lng
index 536c62f78103cbe5a160d7965f10fe441f86ea09..201a755b36f55e19e247d075c463ced0fc45c030 100644
--- a/interface/web/dns/lib/lang/es_dns_import.lng
+++ b/interface/web/dns/lib/lang/es_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/fi_dns_import.lng b/interface/web/dns/lib/lang/fi_dns_import.lng
index 536c62f78103cbe5a160d7965f10fe441f86ea09..201a755b36f55e19e247d075c463ced0fc45c030 100644
--- a/interface/web/dns/lib/lang/fi_dns_import.lng
+++ b/interface/web/dns/lib/lang/fi_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/fr_dns_import.lng b/interface/web/dns/lib/lang/fr_dns_import.lng
index 536c62f78103cbe5a160d7965f10fe441f86ea09..201a755b36f55e19e247d075c463ced0fc45c030 100644
--- a/interface/web/dns/lib/lang/fr_dns_import.lng
+++ b/interface/web/dns/lib/lang/fr_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/hr_dns_import.lng b/interface/web/dns/lib/lang/hr_dns_import.lng
index 536c62f78103cbe5a160d7965f10fe441f86ea09..201a755b36f55e19e247d075c463ced0fc45c030 100644
--- a/interface/web/dns/lib/lang/hr_dns_import.lng
+++ b/interface/web/dns/lib/lang/hr_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/hu_dns_import.lng b/interface/web/dns/lib/lang/hu_dns_import.lng
index 536c62f78103cbe5a160d7965f10fe441f86ea09..201a755b36f55e19e247d075c463ced0fc45c030 100644
--- a/interface/web/dns/lib/lang/hu_dns_import.lng
+++ b/interface/web/dns/lib/lang/hu_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/id_dns_import.lng b/interface/web/dns/lib/lang/id_dns_import.lng
index 536c62f78103cbe5a160d7965f10fe441f86ea09..201a755b36f55e19e247d075c463ced0fc45c030 100644
--- a/interface/web/dns/lib/lang/id_dns_import.lng
+++ b/interface/web/dns/lib/lang/id_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/it_dns_import.lng b/interface/web/dns/lib/lang/it_dns_import.lng
index 536c62f78103cbe5a160d7965f10fe441f86ea09..201a755b36f55e19e247d075c463ced0fc45c030 100644
--- a/interface/web/dns/lib/lang/it_dns_import.lng
+++ b/interface/web/dns/lib/lang/it_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/ja_dns_import.lng b/interface/web/dns/lib/lang/ja_dns_import.lng
index 536c62f78103cbe5a160d7965f10fe441f86ea09..201a755b36f55e19e247d075c463ced0fc45c030 100644
--- a/interface/web/dns/lib/lang/ja_dns_import.lng
+++ b/interface/web/dns/lib/lang/ja_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/nl_dns_import.lng b/interface/web/dns/lib/lang/nl_dns_import.lng
index 536c62f78103cbe5a160d7965f10fe441f86ea09..201a755b36f55e19e247d075c463ced0fc45c030 100644
--- a/interface/web/dns/lib/lang/nl_dns_import.lng
+++ b/interface/web/dns/lib/lang/nl_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/pl_dns_import.lng b/interface/web/dns/lib/lang/pl_dns_import.lng
index 536c62f78103cbe5a160d7965f10fe441f86ea09..201a755b36f55e19e247d075c463ced0fc45c030 100644
--- a/interface/web/dns/lib/lang/pl_dns_import.lng
+++ b/interface/web/dns/lib/lang/pl_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/pt_dns_import.lng b/interface/web/dns/lib/lang/pt_dns_import.lng
index 536c62f78103cbe5a160d7965f10fe441f86ea09..201a755b36f55e19e247d075c463ced0fc45c030 100644
--- a/interface/web/dns/lib/lang/pt_dns_import.lng
+++ b/interface/web/dns/lib/lang/pt_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/ro_dns_import.lng b/interface/web/dns/lib/lang/ro_dns_import.lng
index 536c62f78103cbe5a160d7965f10fe441f86ea09..201a755b36f55e19e247d075c463ced0fc45c030 100644
--- a/interface/web/dns/lib/lang/ro_dns_import.lng
+++ b/interface/web/dns/lib/lang/ro_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/ru_dns_import.lng b/interface/web/dns/lib/lang/ru_dns_import.lng
index 536c62f78103cbe5a160d7965f10fe441f86ea09..201a755b36f55e19e247d075c463ced0fc45c030 100644
--- a/interface/web/dns/lib/lang/ru_dns_import.lng
+++ b/interface/web/dns/lib/lang/ru_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/se_dns_import.lng b/interface/web/dns/lib/lang/se_dns_import.lng
index 536c62f78103cbe5a160d7965f10fe441f86ea09..201a755b36f55e19e247d075c463ced0fc45c030 100644
--- a/interface/web/dns/lib/lang/se_dns_import.lng
+++ b/interface/web/dns/lib/lang/se_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/sk_dns_import.lng b/interface/web/dns/lib/lang/sk_dns_import.lng
index 536c62f78103cbe5a160d7965f10fe441f86ea09..201a755b36f55e19e247d075c463ced0fc45c030 100644
--- a/interface/web/dns/lib/lang/sk_dns_import.lng
+++ b/interface/web/dns/lib/lang/sk_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/tr_dns_import.lng b/interface/web/dns/lib/lang/tr_dns_import.lng
index 536c62f78103cbe5a160d7965f10fe441f86ea09..201a755b36f55e19e247d075c463ced0fc45c030 100644
--- a/interface/web/dns/lib/lang/tr_dns_import.lng
+++ b/interface/web/dns/lib/lang/tr_dns_import.lng
@@ -1,9 +1,8 @@
 <?php
-
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
-$wb["btn_save_txt"] = 'Import Zonefile';
-$wb["btn_cancel_txt"] = 'Cancel';
+$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_cancel_txt'] = 'Cancel';
 $wb['domain_txt'] = 'Domain';
 $wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
 $wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
@@ -11,4 +10,4 @@ $wb['zonefile_to_import_txt'] = 'Zone File';
 $wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
 $wb['title'] = 'Import Zone Files';
 $wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/list/dns_a.list.php b/interface/web/dns/list/dns_a.list.php
index 1f23439acbe468fe3d540c3fd7da3158a92c2af4..ec32eb8234fba5047dd5016ae17b40f6ccb5930c 100644
--- a/interface/web/dns/list/dns_a.list.php
+++ b/interface/web/dns/list/dns_a.list.php
@@ -55,7 +55,7 @@ $liste["item"][] = array(	'field'		=> "active",
 							'prefix'	=> "",
 							'suffix'	=> "",
 							'width'		=> "",
-							'value'		=> array('y' => "<div id=\"ir-Yes\" class=\"swap\"><span>Yes</span></div>",'n' => "<div class=\"swap\" id=\"ir-No\"><span>No</span></div>"));
+							'value'		=> array('Y' => "<div id=\"ir-Yes\" class=\"swap\"><span>Yes</span></div>",'N' => "<div class=\"swap\" id=\"ir-No\"><span>No</span></div>"));
 
 
 $liste["item"][] = array(	'field'		=> "server_id",
diff --git a/interface/web/dns/list/dns_slave.list.php b/interface/web/dns/list/dns_slave.list.php
index 5fa12e0a430e0dcc100fc498ad729e2037842220..aaa09e03439be00de6860c0a92100613ed9a7464 100644
--- a/interface/web/dns/list/dns_slave.list.php
+++ b/interface/web/dns/list/dns_slave.list.php
@@ -55,7 +55,7 @@ $liste["item"][] = array(	'field'		=> "active",
 							'prefix'	=> "",
 							'suffix'	=> "",
 							'width'		=> "",
-							'value'		=> array('y' => "<div id=\"ir-Yes\" class=\"swap\"><span>Yes</span></div>",'n' => "<div class=\"swap\" id=\"ir-No\"><span>No</span></div>"));
+							'value'		=> array('Y' => "<div id=\"ir-Yes\" class=\"swap\"><span>Yes</span></div>",'N' => "<div class=\"swap\" id=\"ir-No\"><span>No</span></div>"));
 
 
 $liste["item"][] = array(	'field'		=> "server_id",
diff --git a/interface/web/dns/templates/dns_a_list.htm b/interface/web/dns/templates/dns_a_list.htm
index 643cf9175dbe48c1169e8fea1103d82739765bf3..1e2e5697789726db8f28be8889086ef76f74b833 100644
--- a/interface/web/dns/templates/dns_a_list.htm
+++ b/interface/web/dns/templates/dns_a_list.htm
@@ -62,7 +62,7 @@
         <tbody>
           <tmpl_loop name="records">
           <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
-            <td class="tbl_col_active"><a href="#" onClick="loadContent('dns/dns_{tmpl_var name='type_lowercase'}_edit.php?id={tmpl_var name='id'}');"><img src="themes/{tmpl_var name='theme'}/icons/{tmpl_var name='_active_'}" border="0" /></a></td>
+            <td class="tbl_col_active"><a href="#" onClick="loadContent('dns/dns_{tmpl_var name='type_lowercase'}_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="active"}</a></td>
             <td class="tbl_col_type"><a href="#" onClick="loadContent('dns/dns_{tmpl_var name='type_lowercase'}_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="type"}</a></td>
             <td class="tbl_col_name"><a href="#" onClick="loadContent('dns/dns_{tmpl_var name='type_lowercase'}_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="name"}</a></td>
             <td class="tbl_col_data"><a href="#" onClick="loadContent('dns/dns_{tmpl_var name='type_lowercase'}_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="data"}</a></td>
diff --git a/interface/web/dns/templates/dns_slave_list.htm b/interface/web/dns/templates/dns_slave_list.htm
index 351eb4bd37d627f423f799fb250c59b094e79953..d93701e0df185ccf458f9a9f9c37316829f2c005 100644
--- a/interface/web/dns/templates/dns_slave_list.htm
+++ b/interface/web/dns/templates/dns_slave_list.htm
@@ -35,7 +35,7 @@
         <tbody>
           <tmpl_loop name="records">
           <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
-            <td class="tbl_col_active"><a href="#" onClick="loadContent('dns/dns_slave_edit.php?id={tmpl_var name='id'}');"><img src="themes/{tmpl_var name='theme'}/icons/{tmpl_var name='_active_'}" border="0" /></a></td>
+            <td class="tbl_col_active"><a href="#" onClick="loadContent('dns/dns_slave_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="active"}</a></td>
             <td class="tbl_col_server_id"><a href="#" onClick="loadContent('dns/dns_slave_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="server_id"}</a></td>
             <td class="tbl_col_origin"><a href="#" onClick="loadContent('dns/dns_slave_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="origin"}</a></td>
             <td class="tbl_col_ns"><a href="#" onClick="loadContent('dns/dns_slave_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="ns"}</a></td>
diff --git a/interface/web/mail/lib/lang/de_mail_user.lng b/interface/web/mail/lib/lang/de_mail_user.lng
index 3bed84cf71d071806595fa897fac729ea1cbe8cc..1d2fd3b16eb00c1da23a243326f555698e01e28e 100644
--- a/interface/web/mail/lib/lang/de_mail_user.lng
+++ b/interface/web/mail/lib/lang/de_mail_user.lng
@@ -37,7 +37,7 @@ $wb['cc_txt'] = 'Send copy to';
 $wb['cc_error_isemail'] = 'The Send copy to field does not conatin a valid email address';
 $wb['login_error_unique'] = 'Login wird bereits verwendet.';
 $wb['login_error_regex'] = 'Zulässige Zeichen sind A-Z, a-z, 0-9, ., _ und -.';
-$wb['login_txt'] = 'Login (optional)';
+$wb['login_txt'] = 'Login';
 $wb['error_login_email_txt'] = 'Dieser Loginname ist nicht zulässig. Bitte verwenden Sie einen anderen Loginnamen oder die E-Mail-Adresse als Login.';
 $wb['domain_txt'] = 'Domain';
 $wb['now_txt'] = 'Now';
diff --git a/interface/web/mail/lib/lang/en_mail_user.lng b/interface/web/mail/lib/lang/en_mail_user.lng
index b66871dc8dc1d1880cdf4387c3ee292ed643452e..65c810f7a231e0fa6d2b3525fc394f16d905ceb3 100644
--- a/interface/web/mail/lib/lang/en_mail_user.lng
+++ b/interface/web/mail/lib/lang/en_mail_user.lng
@@ -41,6 +41,6 @@ $wb['domain_txt'] = 'Domain';
 $wb['now_txt']='Now';
 $wb['login_error_unique'] = 'Login is already taken.';
 $wb['login_error_regex'] = 'Valid characters are A-Z, a-z, 0-9, ., _ and -.';
-$wb['login_txt'] = 'Login (optional)';
+$wb['login_txt'] = 'Login';
 $wb['error_login_email_txt'] = 'This login is not allowed. Please enter a different login or use the mail address as login.';
 ?>
diff --git a/interface/web/monitor/show_sys_state.php b/interface/web/monitor/show_sys_state.php
index 6d30fb9a6a848edc8effb4dba0e7e71c4406997c..634880c520a775dfab0da9860c271d8f965aabcb 100644
--- a/interface/web/monitor/show_sys_state.php
+++ b/interface/web/monitor/show_sys_state.php
@@ -302,8 +302,8 @@ function _getServerState($serverId, $serverName) {
 /*
 * gets the state from the db and process it
 */
-function _processDbState($type, $serverId) {
-	global $app, $serverState, $messages;
+function _processDbState($type, $serverId, $serverState, $messages) {
+	global $app;
 
 	/*
     * Always the NEWEST record of each monitoring is responsible for the
diff --git a/interface/web/tools/dns_import_tupa.php b/interface/web/tools/dns_import_tupa.php
new file mode 100644
index 0000000000000000000000000000000000000000..2e2cbcb8e939e184ec18db2ad493daf6926e0068
--- /dev/null
+++ b/interface/web/tools/dns_import_tupa.php
@@ -0,0 +1,156 @@
+<?php
+/*
+Copyright (c) 2008, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of ISPConfig nor the names of its contributors
+      may be used to endorse or promote products derived from this software without
+      specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+
+//* Check permissions for module
+$app->auth->check_module_permissions('admin');
+
+//* This is only allowed for administrators
+if(!$app->auth->is_admin()) die('only allowed for administrators.');
+
+$app->uses('tpl,validate_dns');
+
+$app->tpl->newTemplate('form.tpl.htm');
+$app->tpl->setInclude('content_tpl', 'templates/dns_import_tupa.htm');
+$msg = '';
+$error = '';
+
+// Resyncing dns zones
+if(isset($_POST['start']) && $_POST['start'] == 1) {
+	
+	//* Set variable sin template
+	$app->tpl->setVar('dbhost',$_POST['dbhost']);
+	$app->tpl->setVar('dbname',$_POST['dbname']);
+	$app->tpl->setVar('dbuser',$_POST['dbuser']);
+	$app->tpl->setVar('dbpassword',$_POST['dbpassword']);
+	
+	//* Establish connection to external database
+	$msg .= 'Connecting to external database...<br />';
+	
+	//* Backup DB login details
+	$conf_bak['db_host'] = $conf['db_host'];
+	$conf_bak['db_database'] = $conf['db_database'];
+	$conf_bak['db_user'] = $conf['db_user'];
+	$conf_bak['db_password'] = $conf['db_password'];
+	
+	//* Set external Login details
+	$conf['db_host'] = $_POST['dbhost'];
+	$conf['db_database'] = $_POST['dbname'];
+	$conf['db_user'] = $_POST['dbuser'];
+	$conf['db_password'] = $_POST['dbpassword'];
+	
+	//* create new db object
+	$exdb = new db();
+	
+	$server_id = 1;
+	$sys_userid = 1;
+	$sys_groupid = 1;
+	
+	function addot($text) {
+		return trim($text) . '.';
+	}
+	
+	//* Connect to DB
+	if($exdb->connect()) {
+		$domains = $exdb->queryAllRecords("SELECT * FROM domains WHERE type = 'MASTER'");
+		if(is_array($domains)) {
+			foreach($domains as $domain) {
+				$soa = $exdb->queryOneRecord("SELECT * FROM records WHERE type = 'SOA' AND domain_id = ".$domain['id']);
+				if(is_array($soa)) {
+					$parts = explode(' ',$soa['content']);
+					$origin = addot($soa['name']);
+					$ns = addot($parts[0]);
+					$mbox = addot($parts[1]);
+					$serial = $parts[2];
+					$refresh = 7200;
+					$retry =  540;
+					$expire = 604800;
+					$minimum = 86400;
+					$ttl = $soa['ttl'];
+					
+					$insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `origin`, `ns`, `mbox`, `serial`, `refresh`, `retry`, `expire`, `minimum`, `ttl`, `active`, `xfer`) VALUES
+					('$sys_userid', '$sys_groupid', 'riud', 'riud', '', '$server_id', '$origin', '$ns', '$mbox', '$serial', '$refresh', '$retry', '$expire', '$minimum', '$ttl', 'Y', '')";
+					$dns_soa_id = $app->db->datalogInsert('dns_soa', $insert_data, 'id');
+					unset($parts);
+					$msg .= 'Import Zone: '.$soa['name'].'<br />';
+					
+					//* Process the other records
+					$records = $exdb->queryAllRecords("SELECT * FROM records WHERE type != 'SOA' AND domain_id = ".$domain['id']);
+					if(is_array($records)) {
+						foreach($records as $rec) {
+							$rr = array();
+							
+							$rr['name'] = addot($rec['name']);
+							$rr['type'] = $rec['type'];
+							$rr['aux'] = $rec['prio'];
+							$rr['ttl'] = $rec['ttl'];
+							
+							if($rec['type'] == 'NS' || $rec['type'] == 'MX' || $rec['type'] == 'CNAME') {
+								$rr['data'] = addot($rec['content']);
+							} else {
+								$rr['data'] = $rec['content'];
+							}
+							
+							$insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `zone`, `name`, `type`, `data`, `aux`, `ttl`, `active`) VALUES
+							('$sys_userid', '$sys_groupid', 'riud', 'riud', '', '$server_id', '$dns_soa_id', '$rr[name]', '$rr[type]', '$rr[data]', '$rr[aux]', '$rr[ttl]', 'Y')";
+							$dns_rr_id = $app->db->datalogInsert('dns_rr', $insert_data, 'id');
+							//$msg .= $insert_data.'<br />';
+							
+						}
+					}
+				}
+				
+			}
+		}
+		
+		
+		
+	} else {
+		$error .= $exdb->errorMessage;
+	}
+	
+	//* restore db login details
+	$conf['db_host'] = $conf_bak['db_host'];
+	$conf['db_database'] = $conf_bak['db_database'];
+	$conf['db_user'] = $conf_bak['db_user'];
+	$conf['db_password'] = $conf_bak['db_password'];
+	
+}
+
+$app->tpl->setVar('msg',$msg);
+$app->tpl->setVar('error',$error);
+
+
+$app->tpl_defaults();
+$app->tpl->pparse();
+
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/dns_resync.php b/interface/web/tools/dns_resync.php
deleted file mode 100644
index c80735df3e4a909d9a23bab5e0e227fd41977687..0000000000000000000000000000000000000000
--- a/interface/web/tools/dns_resync.php
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-/*
-Copyright (c) 2008, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-    * Neither the name of ISPConfig nor the names of its contributors
-      may be used to endorse or promote products derived from this software without
-      specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
-
-//* Check permissions for module
-$app->auth->check_module_permissions('admin');
-
-//* This is only allowed for administrators
-if(!$app->auth->is_admin()) die('only allowed for administrators.');
-
-$app->uses('tpl,validate_dns');
-
-$app->tpl->newTemplate('form.tpl.htm');
-$app->tpl->setInclude('content_tpl', 'templates/dns_resync.htm');
-$msg = '';
-$error = '';
-
-// Resyncing dns zones
-if(isset($_POST['resync']) && $_POST['resync'] == 1) {
-	$zones = $app->db->queryAllRecords("SELECT id,origin,serial FROM dns_soa WHERE active = 'Y'");
-	if(is_array($zones) && !empty($zones)) {
-		foreach($zones as $zone) {
-			$records = $app->db->queryAllRecords("SELECT id,serial FROM dns_rr WHERE zone = ".$zone['id']." AND active = 'Y'");
-			if(is_array($records)) {
-				foreach($records as $rec) {
-					$new_serial = $app->validate_dns->increase_serial($rec["serial"]);
-					$app->db->datalogUpdate('dns_rr', "serial = '".$new_serial."'", 'id', $rec['id']);
-					
-				}
-			}
-			$new_serial = $app->validate_dns->increase_serial($zone["serial"]);
-			$app->db->datalogUpdate('dns_soa', "serial = '".$new_serial."'", 'id', $zone['id']);
-			$msg .= "Resynced: ".$zone['origin'].'<br />';
-		}
-	} else {
-		$error .= "No zones found to sync.<br />";
-	}
-	
-}
-
-$app->tpl->setVar('msg',$msg);
-$app->tpl->setVar('error',$error);
-
-
-//* load language file
-/*
-$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_mailbox_import.lng';
-include($lng_file);
-$app->tpl->setVar($wb);
-*/
-
-$app->tpl_defaults();
-$app->tpl->pparse();
-
-
-?>
\ No newline at end of file
diff --git a/interface/web/tools/import_ispconfig.php b/interface/web/tools/import_ispconfig.php
new file mode 100644
index 0000000000000000000000000000000000000000..eb0a2f3b2edcb9766c415d0b162a5690e1e64c2e
--- /dev/null
+++ b/interface/web/tools/import_ispconfig.php
@@ -0,0 +1,303 @@
+<?php
+/*
+Copyright (c) 2012, Till Brehm, projektfarm Gmbh, ISPConfig UG
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of ISPConfig nor the names of its contributors
+      may be used to endorse or promote products derived from this software without
+      specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+
+//* Check permissions for module
+$app->auth->check_module_permissions('admin');
+
+//* This is only allowed for administrators
+if(!$app->auth->is_admin()) die('only allowed for administrators.');
+
+$app->uses('tpl,validate_dns');
+
+$app->tpl->newTemplate('form.tpl.htm');
+$app->tpl->setInclude('content_tpl', 'templates/import_ispconfig.htm');
+$msg = '';
+$error = '';
+
+//* load language file
+$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_import_ispconfig.lng';
+include($lng_file);
+$app->tpl->setVar($wb);
+
+if(isset($_POST['connected'])) {
+	$connected = intval($_POST['connected']);
+	if($connected == 0) {
+
+		//* Try to connect to remote server
+		if(empty($_POST['remote_server'])) $error .= 'Remote Server is empty.</br>';
+		if(empty($_POST['remote_user'])) $error .= 'Remote User is empty.</br>';
+		if(empty($_POST['remote_password'])) $error .= 'Remote Password is empty.</br>';
+
+		if($error == '') {
+			try {
+				$client = new SoapClient(null, array('location' => $_POST['remote_server'],
+                                     'uri'      => $_POST['remote_server'].'/index.php',
+									 'trace' => 1,
+									 'exceptions' => 1));
+				
+				if($remote_session_id = $client->login($_POST['remote_user'],$_POST['remote_password'])) {
+					$connected = 1;
+					$msg .= 'Successfully connected to remote server.';
+				}
+			} catch (SoapFault $e) {
+				//echo $client->__getLastResponse();
+				$error .= $e->getMessage();
+				$connected = 0;
+			}
+		}
+	}
+	
+	if($connected == 1) {
+		
+		//* Fill the client select field
+		$sql = "SELECT groupid, name FROM sys_group WHERE client_id > 0 ORDER BY name";
+		$clients = $app->db->queryAllRecords($sql);
+		$client_select = "";
+		if(is_array($clients)) {
+			foreach( $clients as $client) {
+				$selected = @($client['groupid'] == $_POST['client_group_id'])?'SELECTED':'';
+				$client_select .= "<option value='$client[groupid]' $selected>$client[name]</option>\r\n";
+			}
+		}
+		$app->tpl->setVar("client_group_id",$client_select);
+		
+		
+		try {
+			$client = new SoapClient(null, array('location' => $_POST['remote_server'],
+                                'uri'      => $_POST['remote_server'].'/index.php',
+								'trace' => 1,
+								'exceptions' => 1));
+		
+		if(!isset($remote_session_id)) $remote_session_id = $_POST['remote_session_id'];
+		
+		//* Get all email domains
+		$mail_domains = $client->mail_domain_get($remote_session_id, array('active' => 'y'));
+		$mail_domain_select = '<option value="">-- select domain --</option>';
+		if(is_array($mail_domains)) {
+			foreach( $mail_domains as $mail_domain) {
+				$selected = @($mail_domain['domain'] == $_POST['mail_domain'])?'SELECTED':'';
+				$mail_domain_select .= "<option value='$mail_domain[domain]' $selected>$mail_domain[domain]</option>\r\n";
+			}
+		}
+		$app->tpl->setVar("mail_domain",$mail_domain_select);
+		
+		//* Do the import
+		if($_POST['mail_domain'] != '') start_domain_import($_POST['mail_domain']);
+		
+		
+		
+		} catch (SoapFault $e) {
+			//echo $client->__getLastResponse();
+			$error .= $e->getMessage();
+			$connected = 0;
+		}
+		
+	}
+	
+}
+
+$app->tpl->setVar('remote_server',$_POST['remote_server']);
+$app->tpl->setVar('remote_user',$_POST['remote_user']);
+$app->tpl->setVar('remote_password',$_POST['remote_password']);
+$app->tpl->setVar('connected',$connected);
+$app->tpl->setVar('remote_session_id',$remote_session_id);
+$app->tpl->setVar('msg',$msg);
+$app->tpl->setVar('error',$error);
+
+$app->tpl_defaults();
+$app->tpl->pparse();
+
+###########################################################
+
+function start_domain_import($mail_domain) {
+	global $app, $conf, $client, $msg, $error, $remote_session_id;
+	
+	//* Get the user and groupid for the new records
+	$sys_groupid = intval($_POST['client_group_id']);
+	$tmp = $app->db->queryOneRecord("SELECT userid FROM sys_user WHERE default_group = $sys_groupid");
+	$sys_userid = intval($tmp['userid']);
+	unset($tmp);
+	if($sys_groupid == 0) $error .= 'Inavlid groupid<br />';
+	if($sys_userid == 0) $error .= 'Inavlid Userid<br />';
+	
+	//* get the mail domain record
+	$mail_domain_rec = $client->mail_domain_get($remote_session_id, array('domain' => $mail_domain));
+	if(is_array($mail_domain_rec)) {
+		$mail_domain_rec = $mail_domain_rec[0];
+		$tmp = $app->db->queryOneRecord("SELECT count(domain_id) as number FROM mail_domain WHERE domain = '".$app->db->quote($mail_domain)."'");
+		if($tmp['number'] > 0) $error .= 'Domain '.$mail_domain.' exists already in local database.<br />';
+		unset($tmp);
+		
+		//* Change the record owner and remove the index field
+		$mail_domain_rec['sys_userid'] = $sys_userid;
+		$mail_domain_rec['sys_groupid'] = $sys_groupid;
+		unset($mail_domain_rec['domain_id']);
+		
+		//* Insert domain if no error occurred
+		if($error == '') {
+			$app->db->datalogInsert('mail_domain', $mail_domain_rec, 'domain_id');
+			$msg .= "Imported mail domain ".$mail_domain_rec['domain']."<br />";
+		} else {
+			return false;
+		}
+		
+		//* Import mailboxes
+		if(isset($_POST['import_mailbox']) && $_POST['import_mailbox'] == 1) {
+			$mail_users = $client->mail_user_get($remote_session_id, array('email' => '%@'.$mail_domain));
+			if(is_array($mail_users)) {
+				foreach($mail_users as $mail_user) {
+					$tmp = $app->db->queryOneRecord("SELECT count(mailuser_id) as number FROM mail_user WHERE email = '".$app->db->quote($mail_user['email'])."'");
+					if($tmp['number'] == 0) {
+						
+						//* Prepare record
+						$mail_user['sys_userid'] = $sys_userid;
+						$mail_user['sys_groupid'] = $sys_groupid;
+						$remote_mailuser_id = $mail_user['mailuser_id'];
+						unset($mail_user['mailuser_id']);
+						if(!isset($_POST['import_user_filter'])) $mail_user['custom_mailfilter'] = '';
+						
+						//* Insert record in DB
+						$local_mailuser_id = $app->db->datalogInsert('mail_user', $mail_user, 'mailuser_id');
+						$msg .= "Imported mailbox ".$mail_user['email']."<br />";
+						
+						//* Import mail user filters
+						if(isset($_POST['import_user_filter']) && $_POST['import_user_filter'] == 1 && $local_mailuser_id > 0) {
+							
+							$mail_user_filters = $client->mail_user_filter_get($remote_session_id, array('mailuser_id' => $remote_mailuser_id));
+							
+							if(is_array($mail_user_filters)) {
+								foreach($mail_user_filters as $mail_user_filter) {
+									$mail_user_filter['sys_userid'] = $sys_userid;
+									$mail_user_filter['sys_groupid'] = $sys_groupid;
+									$mail_user_filter['mailuser_id'] = $local_mailuser_id;
+									unset($mail_user_filter['filter_id']);
+									
+									//* Insert record in DB
+									$app->db->datalogInsert('mail_user_filter', $mail_user_filter, 'filter_id');
+									$msg .= "Imported mailbox filter ".$mail_user['email'].": ".$mail_user_filter['rulename']."<br />";
+								}
+							}
+						}
+					} else {
+						$error .= "Mailbox ".$mail_user['email']." exists in local database. Skipped import of mailbox<br />";
+					}
+					
+				}
+			}
+		}
+		
+		//* Import email aliases
+		if(isset($_POST['import_alias']) && $_POST['import_alias'] == 1) {
+			$mail_aliases = $client->mail_alias_get($remote_session_id, array('type' => 'alias', 'destination' => '%@'.$mail_domain));
+			if(is_array($mail_aliases)) {
+				foreach($mail_aliases as $mail_alias) {
+					$tmp = $app->db->queryOneRecord("SELECT count(forwarding_id) as number FROM mail_forwarding WHERE `type` = 'alias' AND source = '".$app->db->quote($mail_alias['source'])."' AND destination = '".$app->db->quote($mail_alias['destination'])."'");
+					if($tmp['number'] == 0) {
+						$mail_alias['sys_userid'] = $sys_userid;
+						$mail_alias['sys_groupid'] = $sys_groupid;
+						unset($mail_alias['forwarding_id']);
+						$app->db->datalogInsert('mail_forwarding', $mail_alias, 'forwarding_id');
+						$msg .= "Imported email alias ".$mail_alias['source']."<br />";
+					} else {
+						$error .= "Email alias ".$mail_alias['source']." exists in local database. Skipped import.<br />";
+					}
+					
+				}
+			}
+		}
+		
+		//* Import domain aliases
+		if(isset($_POST['import_aliasdomain']) && $_POST['import_aliasdomain'] == 1) {
+			$mail_aliases = $client->mail_alias_get($remote_session_id, array('type' => 'aliasdomain', 'destination' => '@'.$mail_domain));
+			if(is_array($mail_aliases)) {
+				foreach($mail_aliases as $mail_alias) {
+					$tmp = $app->db->queryOneRecord("SELECT count(forwarding_id) as number FROM mail_forwarding WHERE `type` = 'aliasdomain' AND source = '".$app->db->quote($mail_alias['source'])."' AND destination = '".$app->db->quote($mail_alias['destination'])."'");
+					if($tmp['number'] == 0) {
+						$mail_alias['sys_userid'] = $sys_userid;
+						$mail_alias['sys_groupid'] = $sys_groupid;
+						unset($mail_alias['forwarding_id']);
+						$app->db->datalogInsert('mail_forwarding', $mail_alias, 'forwarding_id');
+						$msg .= "Imported email aliasdomain ".$mail_alias['source']."<br />";
+					} else {
+						$error .= "Email aliasdomain ".$mail_alias['source']." exists in local database. Skipped import.<br />";
+					}
+					
+				}
+			}
+		}
+		
+		//* Import email forward
+		if(isset($_POST['import_forward']) && $_POST['import_forward'] == 1) {
+			$mail_forwards = $client->mail_forward_get($remote_session_id, array('type' => 'forward', 'source' => '%@'.$mail_domain));
+			if(is_array($mail_forwards)) {
+				foreach($mail_forwards as $mail_forward) {
+					$tmp = $app->db->queryOneRecord("SELECT count(forwarding_id) as number FROM mail_forwarding WHERE `type` = 'forward' AND source = '".$app->db->quote($mail_forward['source'])."' AND destination = '".$app->db->quote($mail_forward['destination'])."'");
+					if($tmp['number'] == 0) {
+						$mail_forward['sys_userid'] = $sys_userid;
+						$mail_forward['sys_groupid'] = $sys_groupid;
+						unset($mail_forward['forwarding_id']);
+						$app->db->datalogInsert('mail_forwarding', $mail_forward, 'forwarding_id');
+						$msg .= "Imported email forward ".$mail_forward['source']."<br />";
+					} else {
+						$error .= "Email forward ".$mail_forward['source']." exists in local database. Skipped import.<br />";
+					}
+					
+				}
+			}
+		}
+		
+		//* Import spamfilter
+		if(isset($_POST['import_spamfilter']) && $_POST['import_spamfilter'] == 1) {
+			$mail_spamfilters = $client->mail_spamfilter_user_get($remote_session_id, array('email' => '%@'.$mail_domain));
+			if(is_array($mail_spamfilters)) {
+				foreach($mail_spamfilters as $mail_spamfilter) {
+					$tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM spamfilter_users WHERE email = '".$app->db->quote($mail_spamfilter['email'])."'");
+					if($tmp['number'] == 0) {
+						$mail_spamfilter['sys_userid'] = $sys_userid;
+						$mail_spamfilter['sys_groupid'] = $sys_groupid;
+						unset($mail_spamfilter['id']);
+						$app->db->datalogInsert('spamfilter_users', $mail_spamfilter, 'id');
+						$msg .= "Imported spamfilter user ".$mail_spamfilter['email']."<br />";
+					} else {
+						$error .= "Spamfilter user ".$mail_spamfilter['email']." exists in local database. Skipped import.<br />";
+					}
+					
+				}
+			}
+		}
+
+	}
+	
+}
+
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/ar.lng b/interface/web/tools/lib/lang/ar.lng
index f33fe1a64fcad6c8932f0a4a14139005eb7b74ec..eb2f76d18aeb3d5911d995c373784ab814fbead1 100644
--- a/interface/web/tools/lib/lang/ar.lng
+++ b/interface/web/tools/lib/lang/ar.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Settings';
 $wb['ISPConfig Tools'] = 'ISPConfig Tools';
 $wb['Password and Language'] = 'Password and Language';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/ar_import_ispconfig.lng b/interface/web/tools/lib/lang/ar_import_ispconfig.lng
new file mode 100644
index 0000000000000000000000000000000000000000..65ea1459806162a7ad5868dfc5325186b93edcd3
--- /dev/null
+++ b/interface/web/tools/lib/lang/ar_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$wb['import_alias_txt'] = 'Import email alias';
+$wb['import_forward_txt'] = 'Import forward';
+$wb['import_user_filter_txt'] = 'Import user filter';
+$wb['import_spamfilter_txt'] = 'Import spamfilter';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/ar_resync.lng b/interface/web/tools/lib/lang/ar_resync.lng
new file mode 100644
index 0000000000000000000000000000000000000000..f4cbf0d7fc7ce9f3faeab69ba3bfbd6cbeae1776
--- /dev/null
+++ b/interface/web/tools/lib/lang/ar_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/bg.lng b/interface/web/tools/lib/lang/bg.lng
index d302dc5166ca61570b5837b501171cc3c8ccb9a5..472b603ae0bf33616daa77eb78856a74961801ff 100644
--- a/interface/web/tools/lib/lang/bg.lng
+++ b/interface/web/tools/lib/lang/bg.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Настройки';
 $wb['ISPConfig Tools'] = 'ISPConfig инструменти';
 $wb['Password and Language'] = 'Парола и език';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/bg_import_ispconfig.lng b/interface/web/tools/lib/lang/bg_import_ispconfig.lng
new file mode 100644
index 0000000000000000000000000000000000000000..65ea1459806162a7ad5868dfc5325186b93edcd3
--- /dev/null
+++ b/interface/web/tools/lib/lang/bg_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$wb['import_alias_txt'] = 'Import email alias';
+$wb['import_forward_txt'] = 'Import forward';
+$wb['import_user_filter_txt'] = 'Import user filter';
+$wb['import_spamfilter_txt'] = 'Import spamfilter';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/bg_resync.lng b/interface/web/tools/lib/lang/bg_resync.lng
new file mode 100644
index 0000000000000000000000000000000000000000..f4cbf0d7fc7ce9f3faeab69ba3bfbd6cbeae1776
--- /dev/null
+++ b/interface/web/tools/lib/lang/bg_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/br.lng b/interface/web/tools/lib/lang/br.lng
index db8af604220b616a7ee97b2094bc9d6745036d3e..78f894ede5faa275df664179a7e8e882e4473480 100644
--- a/interface/web/tools/lib/lang/br.lng
+++ b/interface/web/tools/lib/lang/br.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Configurações';
 $wb['ISPConfig Tools'] = 'Ferramentas';
 $wb['Password and Language'] = 'Senha e Idioma';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/br_import_ispconfig.lng b/interface/web/tools/lib/lang/br_import_ispconfig.lng
new file mode 100644
index 0000000000000000000000000000000000000000..65ea1459806162a7ad5868dfc5325186b93edcd3
--- /dev/null
+++ b/interface/web/tools/lib/lang/br_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$wb['import_alias_txt'] = 'Import email alias';
+$wb['import_forward_txt'] = 'Import forward';
+$wb['import_user_filter_txt'] = 'Import user filter';
+$wb['import_spamfilter_txt'] = 'Import spamfilter';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/br_resync.lng b/interface/web/tools/lib/lang/br_resync.lng
new file mode 100644
index 0000000000000000000000000000000000000000..f4cbf0d7fc7ce9f3faeab69ba3bfbd6cbeae1776
--- /dev/null
+++ b/interface/web/tools/lib/lang/br_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/cz.lng b/interface/web/tools/lib/lang/cz.lng
index 7dc8e909818f131836603d51b830664efa25b84e..491e515d05691a6af57f42ba3c6a13a15577ff6c 100644
--- a/interface/web/tools/lib/lang/cz.lng
+++ b/interface/web/tools/lib/lang/cz.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Nastavení';
 $wb['ISPConfig Tools'] = 'ISPConfig nástroje';
 $wb['Password and Language'] = 'Heslo a jazyk';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/cz_import_ispconfig.lng b/interface/web/tools/lib/lang/cz_import_ispconfig.lng
new file mode 100644
index 0000000000000000000000000000000000000000..65ea1459806162a7ad5868dfc5325186b93edcd3
--- /dev/null
+++ b/interface/web/tools/lib/lang/cz_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$wb['import_alias_txt'] = 'Import email alias';
+$wb['import_forward_txt'] = 'Import forward';
+$wb['import_user_filter_txt'] = 'Import user filter';
+$wb['import_spamfilter_txt'] = 'Import spamfilter';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/cz_resync.lng b/interface/web/tools/lib/lang/cz_resync.lng
new file mode 100644
index 0000000000000000000000000000000000000000..f4cbf0d7fc7ce9f3faeab69ba3bfbd6cbeae1776
--- /dev/null
+++ b/interface/web/tools/lib/lang/cz_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/de.lng b/interface/web/tools/lib/lang/de.lng
index 5fc2d0345d86cd10b2e54e1db1db8f7f2e99daad..d595646a4250bef5b8ec4e52499051615b664be1 100644
--- a/interface/web/tools/lib/lang/de.lng
+++ b/interface/web/tools/lib/lang/de.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Einstellungen';
 $wb['ISPConfig Tools'] = 'Einstellungen';
 $wb['Password and Language'] = 'Passwort und Sprache';
 $wb['ispconfig_tools_note'] = 'Dieses Modul erlaubt Ihnen, das Passwort und die Sprache zu &auml;ndern sowie einen Resync der DNS-Records anzusto&szlig;en.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/de_import_ispconfig.lng b/interface/web/tools/lib/lang/de_import_ispconfig.lng
new file mode 100644
index 0000000000000000000000000000000000000000..65ea1459806162a7ad5868dfc5325186b93edcd3
--- /dev/null
+++ b/interface/web/tools/lib/lang/de_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$wb['import_alias_txt'] = 'Import email alias';
+$wb['import_forward_txt'] = 'Import forward';
+$wb['import_user_filter_txt'] = 'Import user filter';
+$wb['import_spamfilter_txt'] = 'Import spamfilter';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/de_resync.lng b/interface/web/tools/lib/lang/de_resync.lng
new file mode 100644
index 0000000000000000000000000000000000000000..f4cbf0d7fc7ce9f3faeab69ba3bfbd6cbeae1776
--- /dev/null
+++ b/interface/web/tools/lib/lang/de_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/el.lng b/interface/web/tools/lib/lang/el.lng
index d473a6ee4a41f0ee0f41cf03475a489fa22db5e4..56442c34f16b8359d83f6c26944f4d0437b8b054 100644
--- a/interface/web/tools/lib/lang/el.lng
+++ b/interface/web/tools/lib/lang/el.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Ρυθμίσεις';
 $wb['ISPConfig Tools'] = 'Εργαλεία ISPConfig';
 $wb['Password and Language'] = 'Συνθηματικό και Γλώσσα';
 $wb['ispconfig_tools_note'] = 'Το άρθρωμα σας επιτρέπει να αλλάξετε το συνθηματικό και την γλώσσα και να ξεκινήσετε έναν επανασυγχρονισμό των εγγραφών DNS.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/el_import_ispconfig.lng b/interface/web/tools/lib/lang/el_import_ispconfig.lng
new file mode 100644
index 0000000000000000000000000000000000000000..65ea1459806162a7ad5868dfc5325186b93edcd3
--- /dev/null
+++ b/interface/web/tools/lib/lang/el_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$wb['import_alias_txt'] = 'Import email alias';
+$wb['import_forward_txt'] = 'Import forward';
+$wb['import_user_filter_txt'] = 'Import user filter';
+$wb['import_spamfilter_txt'] = 'Import spamfilter';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/el_resync.lng b/interface/web/tools/lib/lang/el_resync.lng
new file mode 100644
index 0000000000000000000000000000000000000000..f4cbf0d7fc7ce9f3faeab69ba3bfbd6cbeae1776
--- /dev/null
+++ b/interface/web/tools/lib/lang/el_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/en.lng b/interface/web/tools/lib/lang/en.lng
index 1dee19df804ea68b1f17fc29b744352c65eb0a67..fee9301c064eb37205de13fa6f93e5cd3f44b8bd 100644
--- a/interface/web/tools/lib/lang/en.lng
+++ b/interface/web/tools/lib/lang/en.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Settings';
 $wb['ISPConfig Tools'] = 'ISPConfig Tools';
 $wb['Password and Language'] = 'Password and Language';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
+$wb['Sync Tools'] = 'Sync Tools';
 $wb['Resync'] = 'Resync';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/en_import_ispconfig.lng b/interface/web/tools/lib/lang/en_import_ispconfig.lng
new file mode 100644
index 0000000000000000000000000000000000000000..65ea1459806162a7ad5868dfc5325186b93edcd3
--- /dev/null
+++ b/interface/web/tools/lib/lang/en_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$wb['import_alias_txt'] = 'Import email alias';
+$wb['import_forward_txt'] = 'Import forward';
+$wb['import_user_filter_txt'] = 'Import user filter';
+$wb['import_spamfilter_txt'] = 'Import spamfilter';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/en_resync.lng b/interface/web/tools/lib/lang/en_resync.lng
new file mode 100644
index 0000000000000000000000000000000000000000..f4cbf0d7fc7ce9f3faeab69ba3bfbd6cbeae1776
--- /dev/null
+++ b/interface/web/tools/lib/lang/en_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/es.lng b/interface/web/tools/lib/lang/es.lng
index 41205f0ed5009e1ff84b701a4efca94695c9ec42..1d8363ae4b6a4f9431eb532d08349224ad67e65b 100644
--- a/interface/web/tools/lib/lang/es.lng
+++ b/interface/web/tools/lib/lang/es.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Configuraciones';
 $wb['ISPConfig Tools'] = 'Herramientas ISPConfig';
 $wb['Password and Language'] = 'Contraseña e Idioma';
 $wb['ispconfig_tools_note'] = 'Este módulo le permite cambiar la contraseña y el idioma y para iniciar una resincronización de los registros de DNS.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/es_import_ispconfig.lng b/interface/web/tools/lib/lang/es_import_ispconfig.lng
new file mode 100644
index 0000000000000000000000000000000000000000..65ea1459806162a7ad5868dfc5325186b93edcd3
--- /dev/null
+++ b/interface/web/tools/lib/lang/es_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$wb['import_alias_txt'] = 'Import email alias';
+$wb['import_forward_txt'] = 'Import forward';
+$wb['import_user_filter_txt'] = 'Import user filter';
+$wb['import_spamfilter_txt'] = 'Import spamfilter';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/es_resync.lng b/interface/web/tools/lib/lang/es_resync.lng
new file mode 100644
index 0000000000000000000000000000000000000000..f4cbf0d7fc7ce9f3faeab69ba3bfbd6cbeae1776
--- /dev/null
+++ b/interface/web/tools/lib/lang/es_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/fi.lng b/interface/web/tools/lib/lang/fi.lng
index 1e216411716969bfc85333936a653ff63f177f79..93b19ea36011cb507bee8c94b7677cea11667b43 100755
--- a/interface/web/tools/lib/lang/fi.lng
+++ b/interface/web/tools/lib/lang/fi.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Asetukset';
 $wb['ISPConfig Tools'] = 'ISPConfig-työkalut';
 $wb['Password and Language'] = 'Salasanat ja kielet';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/fi_import_ispconfig.lng b/interface/web/tools/lib/lang/fi_import_ispconfig.lng
new file mode 100644
index 0000000000000000000000000000000000000000..65ea1459806162a7ad5868dfc5325186b93edcd3
--- /dev/null
+++ b/interface/web/tools/lib/lang/fi_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$wb['import_alias_txt'] = 'Import email alias';
+$wb['import_forward_txt'] = 'Import forward';
+$wb['import_user_filter_txt'] = 'Import user filter';
+$wb['import_spamfilter_txt'] = 'Import spamfilter';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/fi_resync.lng b/interface/web/tools/lib/lang/fi_resync.lng
new file mode 100644
index 0000000000000000000000000000000000000000..f4cbf0d7fc7ce9f3faeab69ba3bfbd6cbeae1776
--- /dev/null
+++ b/interface/web/tools/lib/lang/fi_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/fr.lng b/interface/web/tools/lib/lang/fr.lng
index 52320c240884bd2b5b2642fb5adca4573bb96b0e..5b8c94282dde6aeffb113dd534fbcb36ff18e4fe 100644
--- a/interface/web/tools/lib/lang/fr.lng
+++ b/interface/web/tools/lib/lang/fr.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Paramètres';
 $wb['ISPConfig Tools'] = 'Outils ISPConfig';
 $wb['Password and Language'] = 'Mot de passe et Langue';
 $wb['ispconfig_tools_note'] = 'Ce module vous permet de changer le mot de passe utilisateur et la langue et de démarrer une resynchronisation des enregistrement DNS.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/fr_import_ispconfig.lng b/interface/web/tools/lib/lang/fr_import_ispconfig.lng
new file mode 100644
index 0000000000000000000000000000000000000000..65ea1459806162a7ad5868dfc5325186b93edcd3
--- /dev/null
+++ b/interface/web/tools/lib/lang/fr_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$wb['import_alias_txt'] = 'Import email alias';
+$wb['import_forward_txt'] = 'Import forward';
+$wb['import_user_filter_txt'] = 'Import user filter';
+$wb['import_spamfilter_txt'] = 'Import spamfilter';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/fr_resync.lng b/interface/web/tools/lib/lang/fr_resync.lng
new file mode 100644
index 0000000000000000000000000000000000000000..f4cbf0d7fc7ce9f3faeab69ba3bfbd6cbeae1776
--- /dev/null
+++ b/interface/web/tools/lib/lang/fr_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/hr.lng b/interface/web/tools/lib/lang/hr.lng
index 817d63e44ecfdc42609bacff50655044cd56c886..d08322a9fe4f1d0f320f0756c46ce500308d9a26 100644
--- a/interface/web/tools/lib/lang/hr.lng
+++ b/interface/web/tools/lib/lang/hr.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Postavke';
 $wb['ISPConfig Tools'] = 'Control panel alati';
 $wb['Password and Language'] = 'Å ifra i jezik';
 $wb['ispconfig_tools_note'] = 'Ovaj modul omogućava promjenu šifre i jezika te možete pokrenuti sinkronizaciju DNS zapisa.';
-$wb['Dns Tools'] = 'DNS alati';
 $wb['Resync'] = 'Sinkroniziraj DNS zapise';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/hr_import_ispconfig.lng b/interface/web/tools/lib/lang/hr_import_ispconfig.lng
new file mode 100644
index 0000000000000000000000000000000000000000..65ea1459806162a7ad5868dfc5325186b93edcd3
--- /dev/null
+++ b/interface/web/tools/lib/lang/hr_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$wb['import_alias_txt'] = 'Import email alias';
+$wb['import_forward_txt'] = 'Import forward';
+$wb['import_user_filter_txt'] = 'Import user filter';
+$wb['import_spamfilter_txt'] = 'Import spamfilter';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/hr_resync.lng b/interface/web/tools/lib/lang/hr_resync.lng
new file mode 100644
index 0000000000000000000000000000000000000000..f4cbf0d7fc7ce9f3faeab69ba3bfbd6cbeae1776
--- /dev/null
+++ b/interface/web/tools/lib/lang/hr_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/hu.lng b/interface/web/tools/lib/lang/hu.lng
index e2c17f0032b39dcfb2894583a9d587f1b36b7b88..7abe1d94d7a2845c7afe4ee73e53fc2d8364bbe3 100644
--- a/interface/web/tools/lib/lang/hu.lng
+++ b/interface/web/tools/lib/lang/hu.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Beállítások';
 $wb['ISPConfig Tools'] = 'ISPConfig eszközök';
 $wb['Password and Language'] = 'Jelszó és nyelv';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/hu_import_ispconfig.lng b/interface/web/tools/lib/lang/hu_import_ispconfig.lng
new file mode 100644
index 0000000000000000000000000000000000000000..65ea1459806162a7ad5868dfc5325186b93edcd3
--- /dev/null
+++ b/interface/web/tools/lib/lang/hu_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$wb['import_alias_txt'] = 'Import email alias';
+$wb['import_forward_txt'] = 'Import forward';
+$wb['import_user_filter_txt'] = 'Import user filter';
+$wb['import_spamfilter_txt'] = 'Import spamfilter';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/hu_resync.lng b/interface/web/tools/lib/lang/hu_resync.lng
new file mode 100644
index 0000000000000000000000000000000000000000..f4cbf0d7fc7ce9f3faeab69ba3bfbd6cbeae1776
--- /dev/null
+++ b/interface/web/tools/lib/lang/hu_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/id.lng b/interface/web/tools/lib/lang/id.lng
index 9a2dc8f1e00e31979999af586e9aae4bd96db290..d8594f8d22de2b0b54b43b7af0628700c054acd5 100644
--- a/interface/web/tools/lib/lang/id.lng
+++ b/interface/web/tools/lib/lang/id.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Pengaturan';
 $wb['ISPConfig Tools'] = 'Perkakas ISPConfig';
 $wb['Password and Language'] = 'Sandi dan Bahasa';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/id_import_ispconfig.lng b/interface/web/tools/lib/lang/id_import_ispconfig.lng
new file mode 100644
index 0000000000000000000000000000000000000000..65ea1459806162a7ad5868dfc5325186b93edcd3
--- /dev/null
+++ b/interface/web/tools/lib/lang/id_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$wb['import_alias_txt'] = 'Import email alias';
+$wb['import_forward_txt'] = 'Import forward';
+$wb['import_user_filter_txt'] = 'Import user filter';
+$wb['import_spamfilter_txt'] = 'Import spamfilter';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/id_resync.lng b/interface/web/tools/lib/lang/id_resync.lng
new file mode 100644
index 0000000000000000000000000000000000000000..f4cbf0d7fc7ce9f3faeab69ba3bfbd6cbeae1776
--- /dev/null
+++ b/interface/web/tools/lib/lang/id_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/it.lng b/interface/web/tools/lib/lang/it.lng
index 672bf853b265fc5fb6b0948bb2c357ae2d321868..69210332d97c5e2b7bf32fa6800373bcf3480885 100644
--- a/interface/web/tools/lib/lang/it.lng
+++ b/interface/web/tools/lib/lang/it.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Impostazioni';
 $wb['ISPConfig Tools'] = 'Strumenti ISPConfig';
 $wb['Password and Language'] = 'Password e Lingua';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/it_import_ispconfig.lng b/interface/web/tools/lib/lang/it_import_ispconfig.lng
new file mode 100644
index 0000000000000000000000000000000000000000..65ea1459806162a7ad5868dfc5325186b93edcd3
--- /dev/null
+++ b/interface/web/tools/lib/lang/it_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$wb['import_alias_txt'] = 'Import email alias';
+$wb['import_forward_txt'] = 'Import forward';
+$wb['import_user_filter_txt'] = 'Import user filter';
+$wb['import_spamfilter_txt'] = 'Import spamfilter';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/it_resync.lng b/interface/web/tools/lib/lang/it_resync.lng
new file mode 100644
index 0000000000000000000000000000000000000000..f4cbf0d7fc7ce9f3faeab69ba3bfbd6cbeae1776
--- /dev/null
+++ b/interface/web/tools/lib/lang/it_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/ja.lng b/interface/web/tools/lib/lang/ja.lng
index ecb77161b9f008439ce38efea660183c79f0804c..25f6acf43552a1b2dd93e409d6c7b88567b843f2 100644
--- a/interface/web/tools/lib/lang/ja.lng
+++ b/interface/web/tools/lib/lang/ja.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = '設定';
 $wb['ISPConfig Tools'] = 'ISPConfig Tools';
 $wb['Password and Language'] = 'パスワードと言語';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/ja_import_ispconfig.lng b/interface/web/tools/lib/lang/ja_import_ispconfig.lng
new file mode 100644
index 0000000000000000000000000000000000000000..65ea1459806162a7ad5868dfc5325186b93edcd3
--- /dev/null
+++ b/interface/web/tools/lib/lang/ja_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$wb['import_alias_txt'] = 'Import email alias';
+$wb['import_forward_txt'] = 'Import forward';
+$wb['import_user_filter_txt'] = 'Import user filter';
+$wb['import_spamfilter_txt'] = 'Import spamfilter';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/ja_resync.lng b/interface/web/tools/lib/lang/ja_resync.lng
new file mode 100644
index 0000000000000000000000000000000000000000..f4cbf0d7fc7ce9f3faeab69ba3bfbd6cbeae1776
--- /dev/null
+++ b/interface/web/tools/lib/lang/ja_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/nl.lng b/interface/web/tools/lib/lang/nl.lng
index bc0f721b428405e1afaf99f0f16dcecfde306a5f..3c7eb2313617df477366306b96fec42dc3bdfd6f 100644
--- a/interface/web/tools/lib/lang/nl.lng
+++ b/interface/web/tools/lib/lang/nl.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Instellingen';
 $wb['ISPConfig Tools'] = 'ISPConfig Tools';
 $wb['Password and Language'] = 'Wachtwoord en taal';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/nl_import_ispconfig.lng b/interface/web/tools/lib/lang/nl_import_ispconfig.lng
new file mode 100644
index 0000000000000000000000000000000000000000..65ea1459806162a7ad5868dfc5325186b93edcd3
--- /dev/null
+++ b/interface/web/tools/lib/lang/nl_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$wb['import_alias_txt'] = 'Import email alias';
+$wb['import_forward_txt'] = 'Import forward';
+$wb['import_user_filter_txt'] = 'Import user filter';
+$wb['import_spamfilter_txt'] = 'Import spamfilter';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/nl_resync.lng b/interface/web/tools/lib/lang/nl_resync.lng
new file mode 100644
index 0000000000000000000000000000000000000000..f4cbf0d7fc7ce9f3faeab69ba3bfbd6cbeae1776
--- /dev/null
+++ b/interface/web/tools/lib/lang/nl_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/pl.lng b/interface/web/tools/lib/lang/pl.lng
index 365e81b8f3c5442388f5815aaeaf557449b7718f..2063f3313bc138d5c054c6cda366d98ac5afd303 100644
--- a/interface/web/tools/lib/lang/pl.lng
+++ b/interface/web/tools/lib/lang/pl.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Ustawienia';
 $wb['ISPConfig Tools'] = 'Narzędzia ISPConfig';
 $wb['Password and Language'] = 'Hasło i język';
 $wb['ispconfig_tools_note'] = 'Ten moduł pozwala na zmianę hasła i języka oraz na ponowną synchronizację rekordów DNS.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/pl_import_ispconfig.lng b/interface/web/tools/lib/lang/pl_import_ispconfig.lng
new file mode 100644
index 0000000000000000000000000000000000000000..65ea1459806162a7ad5868dfc5325186b93edcd3
--- /dev/null
+++ b/interface/web/tools/lib/lang/pl_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$wb['import_alias_txt'] = 'Import email alias';
+$wb['import_forward_txt'] = 'Import forward';
+$wb['import_user_filter_txt'] = 'Import user filter';
+$wb['import_spamfilter_txt'] = 'Import spamfilter';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/pl_resync.lng b/interface/web/tools/lib/lang/pl_resync.lng
new file mode 100644
index 0000000000000000000000000000000000000000..f4cbf0d7fc7ce9f3faeab69ba3bfbd6cbeae1776
--- /dev/null
+++ b/interface/web/tools/lib/lang/pl_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/pt.lng b/interface/web/tools/lib/lang/pt.lng
index 637f1005537f57079c3a38a8b78bb0f1cde63289..d17b74567dea55941b6798ed0cfac26a2e7d34be 100644
--- a/interface/web/tools/lib/lang/pt.lng
+++ b/interface/web/tools/lib/lang/pt.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Configurações';
 $wb['ISPConfig Tools'] = 'Ferramentas';
 $wb['Password and Language'] = 'Senha e Idioma';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/pt_import_ispconfig.lng b/interface/web/tools/lib/lang/pt_import_ispconfig.lng
new file mode 100644
index 0000000000000000000000000000000000000000..65ea1459806162a7ad5868dfc5325186b93edcd3
--- /dev/null
+++ b/interface/web/tools/lib/lang/pt_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$wb['import_alias_txt'] = 'Import email alias';
+$wb['import_forward_txt'] = 'Import forward';
+$wb['import_user_filter_txt'] = 'Import user filter';
+$wb['import_spamfilter_txt'] = 'Import spamfilter';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/pt_resync.lng b/interface/web/tools/lib/lang/pt_resync.lng
new file mode 100644
index 0000000000000000000000000000000000000000..f4cbf0d7fc7ce9f3faeab69ba3bfbd6cbeae1776
--- /dev/null
+++ b/interface/web/tools/lib/lang/pt_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/ro.lng b/interface/web/tools/lib/lang/ro.lng
index a120b37b1d32d71f3823a4cf3ee0f527d522135f..b4c1eec0ad9150952acf56c92cb590a85d949e4e 100644
--- a/interface/web/tools/lib/lang/ro.lng
+++ b/interface/web/tools/lib/lang/ro.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Setari';
 $wb['ISPConfig Tools'] = 'ISPConfig Utilitare';
 $wb['Password and Language'] = 'Parola si Limba';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/ro_import_ispconfig.lng b/interface/web/tools/lib/lang/ro_import_ispconfig.lng
new file mode 100644
index 0000000000000000000000000000000000000000..65ea1459806162a7ad5868dfc5325186b93edcd3
--- /dev/null
+++ b/interface/web/tools/lib/lang/ro_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$wb['import_alias_txt'] = 'Import email alias';
+$wb['import_forward_txt'] = 'Import forward';
+$wb['import_user_filter_txt'] = 'Import user filter';
+$wb['import_spamfilter_txt'] = 'Import spamfilter';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/ro_resync.lng b/interface/web/tools/lib/lang/ro_resync.lng
new file mode 100644
index 0000000000000000000000000000000000000000..f4cbf0d7fc7ce9f3faeab69ba3bfbd6cbeae1776
--- /dev/null
+++ b/interface/web/tools/lib/lang/ro_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/ru.lng b/interface/web/tools/lib/lang/ru.lng
index 5e7cf8d43f1323815e4b19090bbfe315e1fcbbb4..6b6f5841c0987678e93d0764c01e78888fc3e1a0 100644
--- a/interface/web/tools/lib/lang/ru.lng
+++ b/interface/web/tools/lib/lang/ru.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Установки';
 $wb['ISPConfig Tools'] = 'ISPConfig утилиты';
 $wb['Password and Language'] = 'Пароли и языки';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/ru_import_ispconfig.lng b/interface/web/tools/lib/lang/ru_import_ispconfig.lng
new file mode 100644
index 0000000000000000000000000000000000000000..65ea1459806162a7ad5868dfc5325186b93edcd3
--- /dev/null
+++ b/interface/web/tools/lib/lang/ru_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$wb['import_alias_txt'] = 'Import email alias';
+$wb['import_forward_txt'] = 'Import forward';
+$wb['import_user_filter_txt'] = 'Import user filter';
+$wb['import_spamfilter_txt'] = 'Import spamfilter';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/ru_resync.lng b/interface/web/tools/lib/lang/ru_resync.lng
new file mode 100644
index 0000000000000000000000000000000000000000..f4cbf0d7fc7ce9f3faeab69ba3bfbd6cbeae1776
--- /dev/null
+++ b/interface/web/tools/lib/lang/ru_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/se.lng b/interface/web/tools/lib/lang/se.lng
index f33fe1a64fcad6c8932f0a4a14139005eb7b74ec..eb2f76d18aeb3d5911d995c373784ab814fbead1 100644
--- a/interface/web/tools/lib/lang/se.lng
+++ b/interface/web/tools/lib/lang/se.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Settings';
 $wb['ISPConfig Tools'] = 'ISPConfig Tools';
 $wb['Password and Language'] = 'Password and Language';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/se_import_ispconfig.lng b/interface/web/tools/lib/lang/se_import_ispconfig.lng
new file mode 100644
index 0000000000000000000000000000000000000000..65ea1459806162a7ad5868dfc5325186b93edcd3
--- /dev/null
+++ b/interface/web/tools/lib/lang/se_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$wb['import_alias_txt'] = 'Import email alias';
+$wb['import_forward_txt'] = 'Import forward';
+$wb['import_user_filter_txt'] = 'Import user filter';
+$wb['import_spamfilter_txt'] = 'Import spamfilter';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/se_resync.lng b/interface/web/tools/lib/lang/se_resync.lng
new file mode 100644
index 0000000000000000000000000000000000000000..f4cbf0d7fc7ce9f3faeab69ba3bfbd6cbeae1776
--- /dev/null
+++ b/interface/web/tools/lib/lang/se_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/sk.lng b/interface/web/tools/lib/lang/sk.lng
index 22b11ad1efd08034be8314e59d7c4f79960a230c..98924486c7c8a75728be1bdeb25ca4ef479c29d2 100644
--- a/interface/web/tools/lib/lang/sk.lng
+++ b/interface/web/tools/lib/lang/sk.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Nastavenia';
 $wb['ISPConfig Tools'] = 'Nástroje';
 $wb['Password and Language'] = 'Heslo a jazyk';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/sk_import_ispconfig.lng b/interface/web/tools/lib/lang/sk_import_ispconfig.lng
new file mode 100644
index 0000000000000000000000000000000000000000..65ea1459806162a7ad5868dfc5325186b93edcd3
--- /dev/null
+++ b/interface/web/tools/lib/lang/sk_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$wb['import_alias_txt'] = 'Import email alias';
+$wb['import_forward_txt'] = 'Import forward';
+$wb['import_user_filter_txt'] = 'Import user filter';
+$wb['import_spamfilter_txt'] = 'Import spamfilter';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/sk_resync.lng b/interface/web/tools/lib/lang/sk_resync.lng
new file mode 100644
index 0000000000000000000000000000000000000000..f4cbf0d7fc7ce9f3faeab69ba3bfbd6cbeae1776
--- /dev/null
+++ b/interface/web/tools/lib/lang/sk_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/tr.lng b/interface/web/tools/lib/lang/tr.lng
index 4bcc975f1515f33ac2142a7d13c661a0ac312a48..6513fcef9ca41f31fb307a8edc65fdd97041756b 100644
--- a/interface/web/tools/lib/lang/tr.lng
+++ b/interface/web/tools/lib/lang/tr.lng
@@ -4,6 +4,9 @@ $wb['Settings'] = 'Ayarlar';
 $wb['ISPConfig Tools'] = 'ISPConfig Araçları';
 $wb['Password and Language'] = 'Åžifre ve Dil';
 $wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
-$wb['Dns Tools'] = 'Dns Tools';
 $wb['Resync'] = 'Resync';
+$wb['Sync Tools'] = 'Sync Tools';
+$wb['Import'] = 'Import';
+$wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
+$wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
diff --git a/interface/web/tools/lib/lang/tr_import_ispconfig.lng b/interface/web/tools/lib/lang/tr_import_ispconfig.lng
new file mode 100644
index 0000000000000000000000000000000000000000..65ea1459806162a7ad5868dfc5325186b93edcd3
--- /dev/null
+++ b/interface/web/tools/lib/lang/tr_import_ispconfig.lng
@@ -0,0 +1,24 @@
+<?php
+$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
+$wb['legend_txt'] = 'Remote server connection details';
+$wb['legend2_txt'] = 'Import email domain';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start Import';
+$wb['btn_connect_txt'] = 'Connect to remote server';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_group_id_txt'] = 'Local client';
+$wb['mail_domain_txt'] = 'Remote email domain';
+$wb['import_mailbox_txt'] = 'Import mailbox';
+$wb['import_aliasdomain_txt'] = 'Import alias domain';
+$wb['import_alias_txt'] = 'Import email alias';
+$wb['import_forward_txt'] = 'Import forward';
+$wb['import_user_filter_txt'] = 'Import user filter';
+$wb['import_spamfilter_txt'] = 'Import spamfilter';
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/tr_resync.lng b/interface/web/tools/lib/lang/tr_resync.lng
new file mode 100644
index 0000000000000000000000000000000000000000..f4cbf0d7fc7ce9f3faeab69ba3bfbd6cbeae1776
--- /dev/null
+++ b/interface/web/tools/lib/lang/tr_resync.lng
@@ -0,0 +1,13 @@
+<?php
+$wb['head_txt'] = 'Resync Tool';
+$wb['legend_txt'] = 'Resync';
+$wb['resync_sites_txt'] = 'Resync Websites';
+$wb['resync_ftp_txt'] = 'Resync FTP users';
+$wb['resync_shell_txt'] = 'Resync shell users';
+$wb['resync_cron_txt'] = 'Resync cronjobs';
+$wb['resync_db_txt'] = 'Resync clientdb config';
+$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
+$wb['resync_dns_txt'] = 'Resync DNS records';
+$wb['btn_start_txt'] = 'Start';
+$wb['btn_cancel_txt'] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/menu.d/import.menu.php b/interface/web/tools/lib/menu.d/import.menu.php
new file mode 100644
index 0000000000000000000000000000000000000000..cf5f9ebe3ce7aa317c4b687fc90f0ffa7c2d02f4
--- /dev/null
+++ b/interface/web/tools/lib/menu.d/import.menu.php
@@ -0,0 +1,26 @@
+<?php
+
+
+// Menu
+
+if($app->auth->is_admin()) {
+
+$items = array();
+
+$items[] = array( 'title' 	=> 'ISPConfig 3 mail',
+				  'target' 	=> 'content',
+				  'link'	=> 'tools/import_ispconfig.php');
+
+$items[] = array( 'title' 	=> 'PDNS Tupa',
+				  'target' 	=> 'content',
+				  'link'	=> 'tools/dns_import_tupa.php');
+
+				  
+$module['nav'][] = array(	'title'	=> 'Import',
+							'open' 	=> 1,
+							'items'	=> $items);
+
+unset($items);
+}
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/menu.d/dns_resync.menu.php b/interface/web/tools/lib/menu.d/resync.menu.php
similarity index 69%
rename from interface/web/tools/lib/menu.d/dns_resync.menu.php
rename to interface/web/tools/lib/menu.d/resync.menu.php
index f6b6ae00a6ccfaef88cd9cb3bc2fd965ccfc2b52..3ef45fb0e7e86c1bebd870c227ca2a0821ba2cde 100644
--- a/interface/web/tools/lib/menu.d/dns_resync.menu.php
+++ b/interface/web/tools/lib/menu.d/resync.menu.php
@@ -9,10 +9,10 @@ $items = array();
 
 $items[] = array( 'title' 	=> 'Resync',
 				  'target' 	=> 'content',
-				  'link'	=> 'tools/dns_resync.php');
+				  'link'	=> 'tools/resync.php');
 
 
-$module['nav'][] = array(	'title'	=> 'DNS Tools',
+$module['nav'][] = array(	'title'	=> 'Sync Tools',
 							'open' 	=> 1,
 							'items'	=> $items);
 
diff --git a/interface/web/tools/lib/module.conf.php b/interface/web/tools/lib/module.conf.php
index a88aab0b5e9f87a7b8042a83f9846ce1147b5e52..3190d70557f94b15ffd8379f44c861aa9995cea6 100644
--- a/interface/web/tools/lib/module.conf.php
+++ b/interface/web/tools/lib/module.conf.php
@@ -29,7 +29,7 @@ if (is_dir($menu_dir)) {
 	if ($dh = opendir($menu_dir)) {
 		//** Go through all files in the menu dir
 		while (($file = readdir($dh)) !== false) {
-			if($file != '.' && $file != '..' && substr($file,-9,9) == '.menu.php') {
+			if($file != '.' && $file != '..' && substr($file,-9,9) == '.menu.php' && $file != 'dns_resync.menu.php') {
 				include_once($menu_dir.'/'.$file);
 			}
 		}
diff --git a/interface/web/tools/resync.php b/interface/web/tools/resync.php
new file mode 100644
index 0000000000000000000000000000000000000000..86ba27dfa98eb1ddc28d3d426ebfd83a983e0f78
--- /dev/null
+++ b/interface/web/tools/resync.php
@@ -0,0 +1,166 @@
+<?php
+/*
+Copyright (c) 2012, Till Brehm, projektfarm Gmbh, ISPConfig UG
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of ISPConfig nor the names of its contributors
+      may be used to endorse or promote products derived from this software without
+      specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+
+//* Check permissions for module
+$app->auth->check_module_permissions('admin');
+
+//* This is only allowed for administrators
+if(!$app->auth->is_admin()) die('only allowed for administrators.');
+
+$app->uses('tpl,validate_dns');
+
+$app->tpl->newTemplate('form.tpl.htm');
+$app->tpl->setInclude('content_tpl', 'templates/resync.htm');
+$msg = '';
+$error = '';
+
+//* load language file
+$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_resync.lng';
+include($lng_file);
+$app->tpl->setVar($wb);
+
+//* Resyncing websites
+if(isset($_POST['resync_sites']) && $_POST['resync_sites'] == 1) {
+	$db_table = 'web_domain';
+	$index_field = 'domain_id';
+	$sql = "SELECT * FROM ".$db_table." WHERE active = 'y'";
+	$records = $app->db->queryAllRecords($sql);
+	if(is_array($records)) {
+		foreach($records as $rec) {
+			$app->db->datalogUpdate($db_table, $rec, $index_field, $rec[$index_field], true);
+			$msg .= "Resynced Website: ".$rec['domain'].'<br />';
+		}
+	}
+}
+
+//* Resyncing ftp
+if(isset($_POST['resync_ftp']) && $_POST['resync_ftp'] == 1) {
+	$db_table = 'ftp_user';
+	$index_field = 'ftp_user_id';
+	$sql = "SELECT * FROM ".$db_table." WHERE active = 'y'";
+	$records = $app->db->queryAllRecords($sql);
+	if(is_array($records)) {
+		foreach($records as $rec) {
+			$app->db->datalogUpdate($db_table, $rec, $index_field, $rec[$index_field], true);
+			$msg .= "Resynced FTP user: ".$rec['username'].'<br />';
+		}
+	}
+}
+
+//* Resyncing shell
+if(isset($_POST['resync_shell']) && $_POST['resync_shell'] == 1) {
+	$db_table = 'shell_user';
+	$index_field = 'shell_user_id';
+	$sql = "SELECT * FROM ".$db_table." WHERE active = 'y'";
+	$records = $app->db->queryAllRecords($sql);
+	if(is_array($records)) {
+		foreach($records as $rec) {
+			$app->db->datalogUpdate($db_table, $rec, $index_field, $rec[$index_field], true);
+			$msg .= "Resynced Shell user: ".$rec['username'].'<br />';
+		}
+	}
+}
+
+//* Resyncing Cronjobs
+if(isset($_POST['resync_cron']) && $_POST['resync_cron'] == 1) {
+	$db_table = 'cron';
+	$index_field = 'id';
+	$sql = "SELECT * FROM ".$db_table." WHERE active = 'y'";
+	$records = $app->db->queryAllRecords($sql);
+	if(is_array($records)) {
+		foreach($records as $rec) {
+			$app->db->datalogUpdate($db_table, $rec, $index_field, $rec[$index_field], true);
+			$msg .= "Resynced Cron: ".$rec['id'].'<br />';
+		}
+	}
+}
+
+//* Resyncing Databases
+if(isset($_POST['resync_db']) && $_POST['resync_db'] == 1) {
+	$db_table = 'web_database';
+	$index_field = 'database_id';
+	$sql = "SELECT * FROM ".$db_table." WHERE active = 'y'";
+	$records = $app->db->queryAllRecords($sql);
+	if(is_array($records)) {
+		foreach($records as $rec) {
+			$app->db->datalogUpdate($db_table, $rec, $index_field, $rec[$index_field], true);
+			$msg .= "Resynced Database: ".$rec['database_name'].'<br />';
+		}
+	}
+}
+
+//* Resyncing Mailboxes
+if(isset($_POST['resync_mailbox']) && $_POST['resync_mailbox'] == 1) {
+	$db_table = 'mail_user';
+	$index_field = 'mailuser_id';
+	$sql = "SELECT * FROM ".$db_table." WHERE active = 'y'";
+	$records = $app->db->queryAllRecords($sql);
+	if(is_array($records)) {
+		foreach($records as $rec) {
+			$app->db->datalogUpdate($db_table, $rec, $index_field, $rec[$index_field], true);
+			$msg .= "Resynced Mailbox: ".$rec['email'].'<br />';
+		}
+	}
+}
+
+
+//* Resyncing dns zones
+if(isset($_POST['resync_dns']) && $_POST['resync_dns'] == 1) {
+	$zones = $app->db->queryAllRecords("SELECT id,origin,serial FROM dns_soa WHERE active = 'Y'");
+	if(is_array($zones) && !empty($zones)) {
+		foreach($zones as $zone) {
+			$records = $app->db->queryAllRecords("SELECT id,serial FROM dns_rr WHERE zone = ".$zone['id']." AND active = 'Y'");
+			if(is_array($records)) {
+				foreach($records as $rec) {
+					$new_serial = $app->validate_dns->increase_serial($rec["serial"]);
+					$app->db->datalogUpdate('dns_rr', "serial = '".$new_serial."'", 'id', $rec['id']);
+					
+				}
+			}
+			$new_serial = $app->validate_dns->increase_serial($zone["serial"]);
+			$app->db->datalogUpdate('dns_soa', "serial = '".$new_serial."'", 'id', $zone['id']);
+			$msg .= "Resynced DNS zone: ".$zone['origin'].'<br />';
+		}
+	} else {
+		$error .= "No zones found to sync.<br />";
+	}
+	
+}
+
+$app->tpl->setVar('msg',$msg);
+$app->tpl->setVar('error',$error);
+
+$app->tpl_defaults();
+$app->tpl->pparse();
+
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/templates/dns_import_tupa.htm b/interface/web/tools/templates/dns_import_tupa.htm
new file mode 100644
index 0000000000000000000000000000000000000000..d616eba4d598f4bcc254851f7ea31127fbbca9f0
--- /dev/null
+++ b/interface/web/tools/templates/dns_import_tupa.htm
@@ -0,0 +1,56 @@
+<h2>Import DNS recods from Tupa PowerDNS controlpanel</h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_language_import">
+  
+  <div class="pnl_formsarea">
+    <fieldset class="inlineLabels"><legend>PowerDNS Tupa import</legend>
+	  <div class="ctrlHolder">
+		<p class="label">Tupa database hostname</p>
+		<div class="multiField">
+			<input id="dbhost" type="text" value="{tmpl_var name='dbhost'}" name="dbhost" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">Tupa database name</p>
+		<div class="multiField">
+			<input id="dbname" type="text" value="{tmpl_var name='dbname'}" name="dbname" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">Tupa database user</p>
+		<div class="multiField">
+			<input id="dbuser" type="text" value="{tmpl_var name='dbuser'}" name="dbuser" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">Tupa database password</p>
+		<div class="multiField">
+			<input id="dbpassword" type="text" value="{tmpl_var name='dbpassword'}" name="dbpassword" />
+		</div>
+	  </div>
+	  
+	  <div class="ctrlHolder">
+				<p class="label">Import DNS Records</p>
+					<div class="multiField">
+						<input id="start" type="checkbox" value="1" name="start" checked/>
+					</div>
+	  </div>
+    </fieldset>
+	
+	<tmpl_if name="msg">
+	<div id="OKMsg"><p><tmpl_var name="msg"></p></div>
+  </tmpl_if>
+  <tmpl_if name="error">
+	<div id="errorMsg"><h3>ERROR</h3><ol><tmpl_var name="error"></ol></div>
+  </tmpl_if>
+	
+    <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+    <div class="buttonHolder buttons">
+      <button class="positive iconstxt icoPositive" type="button" value="Import" onClick="submitForm('pageForm','tools/dns_import_tupa.php');"><span>Start</span></button>
+      <button class="negative iconstxt icoNegative" type="button" value="Cancel" onClick="loadContent('tools/index.php');"><span>Cancel</span></button>
+    </div>
+  </div>
+  
+</div>
diff --git a/interface/web/tools/templates/dns_resync.htm b/interface/web/tools/templates/dns_resync.htm
deleted file mode 100644
index 372206af970caefdb22abb86e0e0606c98783790..0000000000000000000000000000000000000000
--- a/interface/web/tools/templates/dns_resync.htm
+++ /dev/null
@@ -1,31 +0,0 @@
-<h2>DNS Resync</h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_language_import">
-  
-  <div class="pnl_formsarea">
-    <fieldset class="inlineLabels"><legend>DNS Resync</legend>
-	  <div class="ctrlHolder">
-				<p class="label">Resync DNS Records</p>
-					<div class="multiField">
-						<input id="resync" type="checkbox" value="1" name="resync" checked/>
-					</div>
-	  </div>
-    </fieldset>
-	
-	<tmpl_if name="msg">
-	<div id="OKMsg"><p><tmpl_var name="msg"></p></div>
-  </tmpl_if>
-  <tmpl_if name="error">
-	<div id="errorMsg"><h3>ERROR</h3><ol><tmpl_var name="error"></ol></div>
-  </tmpl_if>
-	
-    <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
-    <div class="buttonHolder buttons">
-      <button class="positive iconstxt icoPositive" type="button" value="Import" onClick="submitForm('pageForm','tools/dns_resync.php');"><span>Start</span></button>
-      <button class="negative iconstxt icoNegative" type="button" value="Cancel" onClick="loadContent('tools/index.php');"><span>Cancel</span></button>
-    </div>
-  </div>
-  
-</div>
diff --git a/interface/web/tools/templates/import_ispconfig.htm b/interface/web/tools/templates/import_ispconfig.htm
new file mode 100644
index 0000000000000000000000000000000000000000..4980dc42afcaa3f4cc70ba87cc63228ec363021f
--- /dev/null
+++ b/interface/web/tools/templates/import_ispconfig.htm
@@ -0,0 +1,105 @@
+<h2>{tmpl_var name="head_txt"}</h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_language_import">
+  
+  <div class="pnl_formsarea">
+    <fieldset class="inlineLabels"><legend>{tmpl_var name="legend_txt"}</legend>
+	  <div class="ctrlHolder">
+		<p class="label">Remote API URL</p>
+		<div class="multiField">
+			<input id="remote_server" type="text" value="{tmpl_var name='remote_server'}" name="remote_server" /> (e.g. https://www.example.com:8080/remote/ )
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">Remote User</p>
+		<div class="multiField">
+			<input id="remote_user" type="text" value="{tmpl_var name='remote_user'}" name="remote_user" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">Remote password</p>
+		<div class="multiField">
+			<input id="remote_password" type="text" value="{tmpl_var name='remote_password'}" name="remote_password" />
+		</div>
+	  </div>
+	</fieldset>
+	  <tmpl_if name="connected">
+<div class="pnl_formsarea">
+    <fieldset class="inlineLabels"><legend>{tmpl_var name="legend2_txt"}</legend>
+	  <div class="ctrlHolder">
+      	<label for="mail_domain">{tmpl_var name='mail_domain_txt'}</label>
+        <select name="mail_domain" id="mail_domain" class="selectInput">
+					{tmpl_var name='mail_domain'}
+		</select>
+      </div>
+	  <div class="ctrlHolder">
+      	<label for="client_group_id">{tmpl_var name='client_group_id_txt'}</label>
+        <select name="client_group_id" id="client_group_id" class="selectInput">
+					{tmpl_var name='client_group_id'}
+		</select>
+      </div>
+	  <div class="ctrlHolder">
+		<p class="label">{tmpl_var name="import_mailbox_txt"}</p>
+		<div class="multiField">
+			<input id="import_mailbox" type="checkbox" value="1" name="import_mailbox" checked="checked" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">{tmpl_var name="import_user_filter_txt"}</p>
+		<div class="multiField">
+			<input id="import_user_filter" type="checkbox" value="1" name="import_user_filter" checked="checked" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">{tmpl_var name="import_spamfilter_txt"}</p>
+		<div class="multiField">
+			<input id="import_spamfilter" type="checkbox" value="1" name="import_spamfilter" checked="checked" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">{tmpl_var name="import_alias_txt"}</p>
+		<div class="multiField">
+			<input id="import_alias" type="checkbox" value="1" name="import_alias" checked="checked" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">{tmpl_var name="import_forward_txt"}</p>
+		<div class="multiField">
+			<input id="import_forward" type="checkbox" value="1" name="import_forward" checked="checked" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">{tmpl_var name="import_aliasdomain_txt"}</p>
+		<div class="multiField">
+			<input id="import_aliasdomain" type="checkbox" value="1" name="import_aliasdomain" checked="checked" />
+		</div>
+	  </div>
+	</fieldset>
+	  </tmpl_if>
+	  
+
+	
+	<tmpl_if name="msg">
+	<div id="OKMsg"><p><tmpl_var name="msg"></p></div>
+  </tmpl_if>
+  <tmpl_if name="error">
+	<div id="errorMsg"><h3>ERROR</h3><ol><tmpl_var name="error"></ol></div>
+  </tmpl_if>
+	
+    <input type="hidden" name="remote_session_id" value="{tmpl_var name='remote_session_id'}">
+	<input type="hidden" name="connected" value="{tmpl_var name='connected'}">
+<tmpl_if name="connected">
+    <div class="buttonHolder buttons">
+      <button class="positive iconstxt icoPositive" type="button" value="Import" onClick="submitForm('pageForm','tools/import_ispconfig.php');"><span>{tmpl_var name="btn_start_txt"}</span></button>
+      <button class="negative iconstxt icoNegative" type="button" value="Cancel" onClick="loadContent('tools/index.php');"><span>{tmpl_var name="btn_cancel_txt"}</span></button>
+    </div>
+<tmpl_else>
+	<div class="buttonHolder buttons">
+      <button class="positive iconstxt icoPositive" type="button" value="Import" onClick="submitForm('pageForm','tools/import_ispconfig.php');"><span>{tmpl_var name="btn_connect_txt"}</span></button>
+      <button class="negative iconstxt icoNegative" type="button" value="Cancel" onClick="loadContent('tools/index.php');"><span>{tmpl_var name="btn_cancel_txt"}</span></button>
+    </div>
+</tmpl_if>
+  </div>
+  
+</div>
diff --git a/interface/web/tools/templates/resync.htm b/interface/web/tools/templates/resync.htm
new file mode 100644
index 0000000000000000000000000000000000000000..196fb7e0de78f08ae7118e4d82a2aaf94be0b1c8
--- /dev/null
+++ b/interface/web/tools/templates/resync.htm
@@ -0,0 +1,67 @@
+<h2>{tmpl_var name="head_txt"}</h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_language_import">
+  
+  <div class="pnl_formsarea">
+    <fieldset class="inlineLabels"><legend>{tmpl_var name="legend_txt"}</legend>
+	  <div class="ctrlHolder">
+		<p class="label">{tmpl_var name="resync_sites_txt"}</p>
+		<div class="multiField">
+			<input id="resync_sites" type="checkbox" value="1" name="resync_sites" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">{tmpl_var name="resync_ftp_txt"}</p>
+		<div class="multiField">
+			<input id="resync_ftp" type="checkbox" value="1" name="resync_ftp" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">{tmpl_var name="resync_shell_txt"}</p>
+		<div class="multiField">
+			<input id="resync_shell" type="checkbox" value="1" name="resync_shell" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">{tmpl_var name="resync_cron_txt"}</p>
+		<div class="multiField">
+			<input id="resync_cron" type="checkbox" value="1" name="resync_cron" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">{tmpl_var name="resync_db_txt"}</p>
+		<div class="multiField">
+			<input id="resync_db" type="checkbox" value="1" name="resync_db" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">{tmpl_var name="resync_mailbox_txt"}</p>
+		<div class="multiField">
+			<input id="resync_mailbox" type="checkbox" value="1" name="resync_mailbox" />
+		</div>
+	  </div>
+	  <div class="ctrlHolder">
+		<p class="label">{tmpl_var name="resync_dns_txt"}</p>
+		<div class="multiField">
+			<input id="resync_dns" type="checkbox" value="1" name="resync_dns" />
+		</div>
+	  </div>
+    </fieldset>
+	
+	<tmpl_if name="msg">
+	<div id="OKMsg"><p><tmpl_var name="msg"></p></div>
+  </tmpl_if>
+  <tmpl_if name="error">
+	<div id="errorMsg"><h3>ERROR</h3><ol><tmpl_var name="error"></ol></div>
+  </tmpl_if>
+	
+    <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+    <div class="buttonHolder buttons">
+      <button class="positive iconstxt icoPositive" type="button" value="Import" onClick="submitForm('pageForm','tools/resync.php');"><span>{tmpl_var name="btn_start_txt"}</span></button>
+      <button class="negative iconstxt icoNegative" type="button" value="Cancel" onClick="loadContent('tools/index.php');"><span>{tmpl_var name="btn_cancel_txt"}</span></button>
+    </div>
+  </div>
+  
+</div>
diff --git a/interface/web/vm/templates/openvz.conf.tpl b/interface/web/vm/templates/openvz.conf.tpl
index 06e6ac515d927eeb825029143770170349111d0f..5bdd385a46d1a0455c261aa16625e871f03bfd46 100644
--- a/interface/web/vm/templates/openvz.conf.tpl
+++ b/interface/web/vm/templates/openvz.conf.tpl
@@ -45,5 +45,6 @@ IP_ADDRESS="{tmpl_var name='ip_address'}"
 NAMESERVER="{tmpl_var name='nameserver'}"
 # alternative meminfo: "pages:256000"
 MEMINFO="privvmpages:1"
+# SWAPPAGES="{tmpl_var name='swappages'}"
 
 CAPABILITY="{tmpl_var name='capability'}"
diff --git a/remoting_client/examples/mail_catchall_add.php b/remoting_client/examples/mail_catchall_add.php
index 8bf320675da7ee3e157833cd9fcca35e4d5ce971..8b5d6f32548ee42a14e5693520130ef1219c2148 100644
--- a/remoting_client/examples/mail_catchall_add.php
+++ b/remoting_client/examples/mail_catchall_add.php
@@ -18,7 +18,7 @@ try {
 	$client_id = 1;
 	$params = array(
 			'server_id' => 1,
-			'source' => 'hallo@test.int',
+			'source' => '@test.int',
 			'destination' => 'ciao@test.int',
 			'type' => 'catchall',
 			'active' => 'y'
diff --git a/server/conf/sieve_filter.master b/server/conf/sieve_filter.master
index acc62e5f7907b52234dd20b2f983d4beb4320a41..33ddc37c40eb24d8c1ac91974c0112ba70a4e77f 100644
--- a/server/conf/sieve_filter.master
+++ b/server/conf/sieve_filter.master
@@ -3,7 +3,6 @@ require ["fileinto", "regex", "vacation"];
 <tmpl_if name="cc">
 # Send a copy of email to
 redirect "<tmpl_var name='cc'>";
-keep;
 </tmpl_if>
 
 <tmpl_if name="move_junk" op="==" value="y">
@@ -17,6 +16,8 @@ if header :contains "X-Spam-Flag" "YES" {
 
 <tmpl_var name='custom_mailfilter'>
 
+keep;
+
 <tmpl_if name="autoresponder" op="==" value="y">
 #################################################################
 # Autoreply
diff --git a/server/conf/sieve_filter_1.2.master b/server/conf/sieve_filter_1.2.master
index 78a9355166195e3fe8f06d3133d880e71a8ff284..1c63ddf3940e49a3e5e51fe5181ef0724d36404a 100644
--- a/server/conf/sieve_filter_1.2.master
+++ b/server/conf/sieve_filter_1.2.master
@@ -3,7 +3,6 @@ require ["fileinto", "regex", "date", "relational", "vacation"];
 <tmpl_if name="cc">
 # Send a copy of email to
 redirect "<tmpl_var name='cc'>";
-keep;
 </tmpl_if>
 
 <tmpl_if name="move_junk" op="==" value="y">
@@ -17,6 +16,8 @@ if header :contains "X-Spam-Flag" "YES" {
 
 <tmpl_var name='custom_mailfilter'>
 
+keep;
+
 <tmpl_if name="autoresponder" op="==" value="y">
 #################################################################
 # Autoreply
diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master
index b3d5ca74ae27818edd791e6e5f1a7ca08ef097d8..d65ea852143bb43a78841debcbe9d2649e8ffef8 100644
--- a/server/conf/vhost.conf.master
+++ b/server/conf/vhost.conf.master
@@ -256,6 +256,7 @@
           SetHandler None
         </FilesMatch>
       </Directory>
+      DavLockDB {tmpl_var name='document_root'}/tmp/DavLock
       # DO NOT REMOVE THE COMMENTS!
       # IF YOU REMOVE THEM, WEBDAV WILL NOT WORK ANYMORE!
       # WEBDAV BEGIN
diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php
index 55d65432f91a57b3353ab14c2446c3825741a58c..30eecfea394433afba75bc5f1f496dda44a4608b 100644
--- a/server/plugins-available/apache2_plugin.inc.php
+++ b/server/plugins-available/apache2_plugin.inc.php
@@ -110,6 +110,13 @@ class apache2_plugin {
 
 		//* Create a SSL Certificate
 		if($data['new']['ssl_action'] == 'create') {
+			
+			//* Rename files if they exist
+			if(file_exists($key_file)) rename($key_file,$key_file.'.bak');
+			if(file_exists($key_file2)) rename($key_file2,$key_file2.'.bak');
+			if(file_exists($csr_file)) rename($csr_file,$csr_file.'.bak');
+			if(file_exists($crt_file)) rename($crt_file,$crt_file.'.bak');
+			
 			$rand_file = $ssl_dir.'/random_file';
 			$rand_data = md5(uniqid(microtime(),1));
 			for($i=0; $i<1000; $i++) {
@@ -133,11 +140,11 @@ class apache2_plugin {
         output_password        = $ssl_password
 
         [ req_distinguished_name ]
-        C                      = ".$data['new']['ssl_country']."
-        ST                     = ".$data['new']['ssl_state']."
-        L                      = ".$data['new']['ssl_locality']."
-        O                      = ".$data['new']['ssl_organisation']."
-        OU                     = ".$data['new']['ssl_organisation_unit']."
+        C                      = ".trim($data['new']['ssl_country'])."
+        ST                     = ".trim($data['new']['ssl_state'])."
+        L                      = ".trim($data['new']['ssl_locality'])."
+        O                      = ".trim($data['new']['ssl_organisation'])."
+        OU                     = ".trim($data['new']['ssl_organisation_unit'])."
         CN                     = $domain
         emailAddress           = webmaster@".$data['new']['domain']."
 
@@ -288,6 +295,10 @@ class apache2_plugin {
 			$app->log('Websites cannot be owned by the root user or group.',LOGLEVEL_WARN);
 			return 0;
 		}
+		if(trim($data['new']['domain']) == '') {
+			$app->log('domain is empty',LOGLEVEL_WARN);
+			return 0;
+		}
 		
 		// Create group and user, if not exist
 		$app->uses('system');