From d7480c82525c02c9d7a174104a7e08192e70245c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dominik=20M=C3=BCller?= <info@profi-webdesign.com>
Date: Sat, 11 Oct 2014 19:52:43 +0200
Subject: [PATCH] Only Use LMTP in case of webserver->mailserver uid-mapping
 Use dovecot or maildrop in default-cases Switching to LMTP and back included
 in server-postfix-plugin validator added to disable switching uid-mapping
 when already created mailusers or in multiserver-environment

---
 install/dist/lib/debian60.lib.php             |  2 +-
 install/dist/lib/fedora.lib.php               |  2 +-
 install/dist/lib/gentoo.lib.php               |  2 +-
 install/dist/lib/opensuse.lib.php             |  2 +-
 install/tpl/debian_postfix.conf.master        |  2 +-
 install/tpl/fedora_postfix.conf.master        |  2 +-
 install/tpl/gentoo_postfix.conf.master        |  2 +-
 install/tpl/opensuse_postfix.conf.master      |  2 +-
 .../validate_server_mail_config.inc.php       | 70 +++++++++++++++++++
 .../web/admin/form/server_config.tform.php    |  4 ++
 .../web/admin/lib/lang/ar_server_config.lng   |  6 +-
 .../web/admin/lib/lang/bg_server_config.lng   |  6 +-
 .../web/admin/lib/lang/br_server_config.lng   |  6 +-
 .../web/admin/lib/lang/cz_server_config.lng   |  6 +-
 .../web/admin/lib/lang/de_server_config.lng   |  6 +-
 .../web/admin/lib/lang/el_server_config.lng   |  6 +-
 .../web/admin/lib/lang/en_server_config.lng   |  6 +-
 .../web/admin/lib/lang/es_server_config.lng   |  6 +-
 .../web/admin/lib/lang/fi_server_config.lng   |  6 +-
 .../web/admin/lib/lang/hr_server_config.lng   |  6 +-
 .../web/admin/lib/lang/hu_server_config.lng   |  6 +-
 .../web/admin/lib/lang/id_server_config.lng   |  6 +-
 .../web/admin/lib/lang/it_server_config.lng   |  6 +-
 .../web/admin/lib/lang/ja_server_config.lng   |  6 +-
 .../web/admin/lib/lang/nl_server_config.lng   |  6 +-
 .../web/admin/lib/lang/pl_server_config.lng   |  6 +-
 .../web/admin/lib/lang/pt_server_config.lng   |  6 +-
 .../web/admin/lib/lang/ro_server_config.lng   |  6 +-
 .../web/admin/lib/lang/ru_server_config.lng   |  6 +-
 .../web/admin/lib/lang/se_server_config.lng   |  6 +-
 .../web/admin/lib/lang/sk_server_config.lng   |  6 +-
 .../web/admin/lib/lang/tr_server_config.lng   |  6 +-
 .../templates/server_config_mail_edit.htm     |  2 +-
 .../postfix_server_plugin.inc.php             | 17 ++++-
 34 files changed, 208 insertions(+), 33 deletions(-)
 create mode 100644 interface/lib/classes/validate_server_mail_config.inc.php

diff --git a/install/dist/lib/debian60.lib.php b/install/dist/lib/debian60.lib.php
index 1ddb6029fe..42da878c3d 100644
--- a/install/dist/lib/debian60.lib.php
+++ b/install/dist/lib/debian60.lib.php
@@ -57,7 +57,7 @@ class installer extends installer_base {
 		// Adding the amavisd commands to the postfix configuration
 		$postconf_commands = array (
 			'dovecot_destination_recipient_limit = 1',
-			'virtual_transport = lmtp:unix:private/dovecot-lmtp',
+			'virtual_transport = dovecot',
 			'smtpd_sasl_type = dovecot',
 			'smtpd_sasl_path = private/auth'
 		);
diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php
index a6250bbb45..078f64901d 100644
--- a/install/dist/lib/fedora.lib.php
+++ b/install/dist/lib/fedora.lib.php
@@ -402,7 +402,7 @@ class installer_dist extends installer_base {
 		// Adding the amavisd commands to the postfix configuration
 		$postconf_commands = array (
 			'dovecot_destination_recipient_limit = 1',
-			'virtual_transport = lmtp:unix:private/dovecot-lmtp',
+			'virtual_transport = dovecot',
 			'smtpd_sasl_type = dovecot',
 			'smtpd_sasl_path = private/auth',
 		);
diff --git a/install/dist/lib/gentoo.lib.php b/install/dist/lib/gentoo.lib.php
index 407ec011fe..b419082ccd 100644
--- a/install/dist/lib/gentoo.lib.php
+++ b/install/dist/lib/gentoo.lib.php
@@ -245,7 +245,7 @@ class installer extends installer_base
 		//* Reconfigure postfix to use dovecot authentication
 		$postconf_commands = array (
 			'dovecot_destination_recipient_limit = 1',
-			'virtual_transport = lmtp:unix:private/dovecot-lmtp',
+			'virtual_transport = dovecot',
 			'smtpd_sasl_type = dovecot',
 			'smtpd_sasl_path = private/auth'
 		);
diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php
index 1144776aa3..0bcf58d788 100644
--- a/install/dist/lib/opensuse.lib.php
+++ b/install/dist/lib/opensuse.lib.php
@@ -453,7 +453,7 @@ class installer_dist extends installer_base {
 		// Adding the amavisd commands to the postfix configuration
 		$postconf_commands = array (
 			'dovecot_destination_recipient_limit = 1',
-			'virtual_transport = lmtp:unix:private/dovecot-lmtp',
+			'virtual_transport = dovecot',
 			'smtpd_sasl_type = dovecot',
 			'smtpd_sasl_path = private/auth',
 		);
diff --git a/install/tpl/debian_postfix.conf.master b/install/tpl/debian_postfix.conf.master
index 8ec3cb5230..fa3105f3da 100644
--- a/install/tpl/debian_postfix.conf.master
+++ b/install/tpl/debian_postfix.conf.master
@@ -25,7 +25,7 @@ smtpd_client_restrictions = check_client_access mysql:{config_dir}/mysql-virtual
 smtpd_client_message_rate_limit = 100
 maildrop_destination_concurrency_limit = 1
 maildrop_destination_recipient_limit   = 1
-virtual_transport = lmtp:unix:private/dovecot-lmtp
+virtual_transport = maildrop
 header_checks = regexp:{config_dir}/header_checks
 mime_header_checks = regexp:{config_dir}/mime_header_checks
 nested_header_checks = regexp:{config_dir}/nested_header_checks
diff --git a/install/tpl/fedora_postfix.conf.master b/install/tpl/fedora_postfix.conf.master
index 414160c728..3b542f32ea 100644
--- a/install/tpl/fedora_postfix.conf.master
+++ b/install/tpl/fedora_postfix.conf.master
@@ -22,7 +22,7 @@ smtpd_client_restrictions = check_client_access mysql:{config_dir}/mysql-virtual
 smtpd_client_message_rate_limit = 100
 maildrop_destination_concurrency_limit = 1
 maildrop_destination_recipient_limit   = 1
-virtual_transport = lmtp:unix:private/dovecot-lmtp
+virtual_transport = maildrop
 header_checks = regexp:{config_dir}/header_checks
 mime_header_checks = regexp:{config_dir}/mime_header_checks
 nested_header_checks = regexp:{config_dir}/nested_header_checks
diff --git a/install/tpl/gentoo_postfix.conf.master b/install/tpl/gentoo_postfix.conf.master
index 7ea89c92d5..1b27702003 100644
--- a/install/tpl/gentoo_postfix.conf.master
+++ b/install/tpl/gentoo_postfix.conf.master
@@ -22,7 +22,7 @@ smtpd_client_restrictions = check_client_access mysql:{config_dir}/mysql-virtual
 smtpd_client_message_rate_limit = 100
 maildrop_destination_concurrency_limit = 1
 maildrop_destination_recipient_limit   = 1
-virtual_transport = lmtp:unix:private/dovecot-lmtp
+virtual_transport = maildrop
 header_checks = regexp:{config_dir}/header_checks
 mime_header_checks = regexp:{config_dir}/mime_header_checks
 nested_header_checks = regexp:{config_dir}/nested_header_checks
diff --git a/install/tpl/opensuse_postfix.conf.master b/install/tpl/opensuse_postfix.conf.master
index 7ea89c92d5..1b27702003 100644
--- a/install/tpl/opensuse_postfix.conf.master
+++ b/install/tpl/opensuse_postfix.conf.master
@@ -22,7 +22,7 @@ smtpd_client_restrictions = check_client_access mysql:{config_dir}/mysql-virtual
 smtpd_client_message_rate_limit = 100
 maildrop_destination_concurrency_limit = 1
 maildrop_destination_recipient_limit   = 1
-virtual_transport = lmtp:unix:private/dovecot-lmtp
+virtual_transport = maildrop
 header_checks = regexp:{config_dir}/header_checks
 mime_header_checks = regexp:{config_dir}/mime_header_checks
 nested_header_checks = regexp:{config_dir}/nested_header_checks
diff --git a/interface/lib/classes/validate_server_mail_config.inc.php b/interface/lib/classes/validate_server_mail_config.inc.php
new file mode 100644
index 0000000000..00bce9a219
--- /dev/null
+++ b/interface/lib/classes/validate_server_mail_config.inc.php
@@ -0,0 +1,70 @@
+<?php
+
+/*
+Copyright (c) 2007, Till Brehm, projektfarm Gmbh
+Copyright (c) 2012, Marius Cramer, pixcept KG
+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.
+*/
+
+class validate_server_mail_config {
+
+	function get_error($errmsg) {
+		global $app;
+
+		if(isset($app->tform->wordbook[$errmsg])) {
+			return $app->tform->wordbook[$errmsg]."<br>\r\n";
+		} else {
+			return $errmsg."<br>\r\n";
+		}
+	}
+
+	/* Validator function to check for changing virtual_uidgid_maps */
+	function mailbox_virtual_uidgid_maps($field_name, $field_value, $validator) {
+		global $app, $conf;
+
+		if (empty($field_value)) $field_value = 'n';
+		$app->uses('getconf,system,db');
+		$mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail');
+		
+		// try to activat the function -> only if only one mailserver out there and if dovecot is installed
+		if ($field_value == 'y') {
+			// if this count is more then 1, there is more than 1 webserver, more than 1 mailserver or different web+mailserver -> so this feature isn't possible
+			$num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM server WHERE mail_server=1 OR web_server=1");
+			if($num_rec['number'] > 1) {
+				return $this->get_error('mailbox_virtual_uidgid_maps_error_nosingleserver');
+			}
+		}
+		
+		// Value can only be changed if there is no mailuser set
+		if ($mail_config["mailbox_virtual_uidgid_maps"] != $field_value) {
+			$num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM mail_user");
+			if($num_rec['number'] > 0) {
+				return $this->get_error('mailbox_virtual_uidgid_maps_error_alreadyusers');
+			}
+		}
+	}
+
+}
diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php
index 8c6f89976b..dd62c1862f 100644
--- a/interface/web/admin/form/server_config.tform.php
+++ b/interface/web/admin/form/server_config.tform.php
@@ -381,6 +381,10 @@ $form["tabs"]['mail'] = array(
 		'mailbox_virtual_uidgid_maps' => array(
 			'datatype' => 'VARCHAR',
 			'formtype' => 'CHECKBOX',
+			'validators' => array (0 => array ( 'type' => 'CUSTOM',
+					'class' => 'validate_server_mail_config',
+					'function' => 'mailbox_virtual_uidgid_maps'),
+			),
 			'default' => 'n',
 			'value' => array(0 => 'n', 1 => 'y')
 		),
diff --git a/interface/web/admin/lib/lang/ar_server_config.lng b/interface/web/admin/lib/lang/ar_server_config.lng
index 252004c002..a6871301a6 100644
--- a/interface/web/admin/lib/lang/ar_server_config.lng
+++ b/interface/web/admin/lib/lang/ar_server_config.lng
@@ -24,7 +24,11 @@ $wb['mailuser_uid_txt'] = 'Mailuser UID';
 $wb['mailuser_gid_txt'] = 'Mailuser GID';
 $wb['mailuser_name_txt'] = 'Mailuser Name';
 $wb['mailuser_group_txt'] = 'Mailuser Group';
-$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)';
+$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox';
+$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup';
+$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.';
+$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.';
+$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.';
 $wb['relayhost_txt'] = 'Relayhost';
 $wb['relayhost_user_txt'] = 'Relayhost User';
 $wb['relayhost_password_txt'] = 'Relayhost Password';
diff --git a/interface/web/admin/lib/lang/bg_server_config.lng b/interface/web/admin/lib/lang/bg_server_config.lng
index b64c6eeb61..dc59203286 100644
--- a/interface/web/admin/lib/lang/bg_server_config.lng
+++ b/interface/web/admin/lib/lang/bg_server_config.lng
@@ -22,7 +22,11 @@ $wb['mailuser_uid_txt'] = 'Mailuser UID';
 $wb['mailuser_gid_txt'] = 'Mailuser GID';
 $wb['mailuser_name_txt'] = 'Mailuser Name';
 $wb['mailuser_group_txt'] = 'Mailuser Group';
-$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)';
+$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox';
+$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup';
+$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.';
+$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.';
+$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.';
 $wb['relayhost_txt'] = 'Relayhost';
 $wb['relayhost_user_txt'] = 'Relayhost User';
 $wb['relayhost_password_txt'] = 'Relayhost Password';
diff --git a/interface/web/admin/lib/lang/br_server_config.lng b/interface/web/admin/lib/lang/br_server_config.lng
index b3977f3160..fc0cbc6ec4 100644
--- a/interface/web/admin/lib/lang/br_server_config.lng
+++ b/interface/web/admin/lib/lang/br_server_config.lng
@@ -23,7 +23,11 @@ $wb['mailuser_uid_txt'] = 'UID usuário de email';
 $wb['mailuser_gid_txt'] = 'GID usuário de email';
 $wb['mailuser_name_txt'] = 'Nome usuário de email';
 $wb['mailuser_group_txt'] = 'Grupo usuário de email';
-$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)';
+$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox';
+$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup';
+$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.';
+$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.';
+$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.';
 $wb['relayhost_txt'] = 'Host Relay';
 $wb['relayhost_user_txt'] = 'Usuário do Host Relay';
 $wb['relayhost_password_txt'] = 'Senha do Host Relay';
diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng
index fa62b93761..df212ea358 100644
--- a/interface/web/admin/lib/lang/cz_server_config.lng
+++ b/interface/web/admin/lib/lang/cz_server_config.lng
@@ -24,7 +24,11 @@ $wb['mailuser_uid_txt'] = 'Mail uživatel UID';
 $wb['mailuser_gid_txt'] = 'Mail uživatel GID';
 $wb['mailuser_name_txt'] = 'Mail uživatel jméno';
 $wb['mailuser_group_txt'] = 'Mail uživatel skupina';
-$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)';
+$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox';
+$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup';
+$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.';
+$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.';
+$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.';
 $wb['relayhost_txt'] = 'Relayhost';
 $wb['relayhost_user_txt'] = 'Relayhost uživatel';
 $wb['relayhost_password_txt'] = 'Relayhost heslo';
diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng
index a6e71ba772..66b037833e 100644
--- a/interface/web/admin/lib/lang/de_server_config.lng
+++ b/interface/web/admin/lib/lang/de_server_config.lng
@@ -24,7 +24,11 @@ $wb['mailuser_uid_txt'] = 'Mailbenutzer UID';
 $wb['mailuser_gid_txt'] = 'Mailbenutzer GID';
 $wb['mailuser_name_txt'] = 'Mailbenutzer Name';
 $wb['mailuser_group_txt'] = 'Mailbenutzer Gruppe';
-$wb['mailbox_virtual_uidgid_maps_txt'] = 'Website Linux Uid für Mailboxen (nur wenn beides auf gleichem Server)';
+$wb['mailbox_virtual_uidgid_maps_txt'] = 'Website Linux Uid für Mailboxen';
+$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'nur wenn beides auf gleichem Server';
+$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid kann in Multiserver-Umgebung nicht gemappt werden.';
+$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid Mapping funktioniert nur in Verbindung mit dovecot.';
+$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid Mapping kann nur umgeschaltet werden, wenn noch keine Mailuser angelegt sind.';
 $wb['relayhost_txt'] = 'Relayhost';
 $wb['relayhost_user_txt'] = 'Relayhost Benutzer';
 $wb['relayhost_password_txt'] = 'Relayhost Passwort';
diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng
index da3f99c5db..598b1d9b09 100644
--- a/interface/web/admin/lib/lang/el_server_config.lng
+++ b/interface/web/admin/lib/lang/el_server_config.lng
@@ -24,7 +24,11 @@ $wb['mailuser_uid_txt'] = 'Mailuser UID';
 $wb['mailuser_gid_txt'] = 'Mailuser GID';
 $wb['mailuser_name_txt'] = 'Όνομα Mailuser';
 $wb['mailuser_group_txt'] = 'Ομάδα Mailuser';
-$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)';
+$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox';
+$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup';
+$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.';
+$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.';
+$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.';
 $wb['relayhost_txt'] = 'Relayhost';
 $wb['relayhost_user_txt'] = 'Χρήστης Relayhost';
 $wb['relayhost_password_txt'] = 'Συνθηματικό Relayhost';
diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng
index 9331b50d8f..46262bbbac 100644
--- a/interface/web/admin/lib/lang/en_server_config.lng
+++ b/interface/web/admin/lib/lang/en_server_config.lng
@@ -35,7 +35,11 @@ $wb["mailuser_uid_txt"] = 'Mailuser UID';
 $wb["mailuser_gid_txt"] = 'Mailuser GID';
 $wb["mailuser_name_txt"] = 'Mailuser Name';
 $wb["mailuser_group_txt"] = 'Mailuser Group';
-$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)';
+$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox';
+$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup';
+$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.';
+$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.';
+$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.';
 $wb["relayhost_txt"] = 'Relayhost';
 $wb["relayhost_user_txt"] = 'Relayhost User';
 $wb["relayhost_password_txt"] = 'Relayhost Password';
diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng
index 734d83bdec..5a768d82d6 100644
--- a/interface/web/admin/lib/lang/es_server_config.lng
+++ b/interface/web/admin/lib/lang/es_server_config.lng
@@ -22,7 +22,11 @@ $wb['mailuser_uid_txt'] = 'UID del usuario de correo';
 $wb['mailuser_gid_txt'] = 'GID del usuario de correo';
 $wb['mailuser_name_txt'] = 'Nombre del usuario de correo';
 $wb['mailuser_group_txt'] = 'Grupo del usuario de correo';
-$wb['mailbox_virtual_uidgid_maps_txt'] = 'Usar ID de usuario de Linux de sitios web para los buzones (solo si en el mismo servidor)';
+$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox';
+$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup';
+$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.';
+$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.';
+$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.';
 $wb['relayhost_txt'] = 'Servidor de retransmisión';
 $wb['relayhost_user_txt'] = 'Usuario de retransmisión';
 $wb['relayhost_password_txt'] = 'Contraseña de retramisión';
diff --git a/interface/web/admin/lib/lang/fi_server_config.lng b/interface/web/admin/lib/lang/fi_server_config.lng
index 70bf661c8b..e55baa6339 100755
--- a/interface/web/admin/lib/lang/fi_server_config.lng
+++ b/interface/web/admin/lib/lang/fi_server_config.lng
@@ -22,7 +22,11 @@ $wb['mailuser_uid_txt'] = 'Käyttäjätunnus';
 $wb['mailuser_gid_txt'] = 'Käyttäjäryhmä';
 $wb['mailuser_name_txt'] = 'Postikäyttäjän nimi';
 $wb['mailuser_group_txt'] = 'Postikäyttäjän ryhmä';
-$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)';
+$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox';
+$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup';
+$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.';
+$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.';
+$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.';
 $wb['relayhost_txt'] = 'Edelleenlähetyspalvelin';
 $wb['relayhost_user_txt'] = 'Edelleenlähetyspalvelimen käyttäjätunnus';
 $wb['relayhost_password_txt'] = 'Edelleenlähetyspalvelimen salasana';
diff --git a/interface/web/admin/lib/lang/hr_server_config.lng b/interface/web/admin/lib/lang/hr_server_config.lng
index 00d99afd9b..d63f461909 100644
--- a/interface/web/admin/lib/lang/hr_server_config.lng
+++ b/interface/web/admin/lib/lang/hr_server_config.lng
@@ -23,7 +23,11 @@ $wb['mailuser_uid_txt'] = 'Mailuser UID';
 $wb['mailuser_gid_txt'] = 'Mailuser GID';
 $wb['mailuser_name_txt'] = 'Mailuser ime';
 $wb['mailuser_group_txt'] = 'Mailuser grupa';
-$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)';
+$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox';
+$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup';
+$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.';
+$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.';
+$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.';
 $wb['relayhost_txt'] = 'Relayhost';
 $wb['relayhost_user_txt'] = 'Relayhost korisnik';
 $wb['relayhost_password_txt'] = 'Relayhost Å¡ifra';
diff --git a/interface/web/admin/lib/lang/hu_server_config.lng b/interface/web/admin/lib/lang/hu_server_config.lng
index 88d2148a5c..7347bfd99c 100644
--- a/interface/web/admin/lib/lang/hu_server_config.lng
+++ b/interface/web/admin/lib/lang/hu_server_config.lng
@@ -22,7 +22,11 @@ $wb['mailuser_uid_txt'] = 'Mailuser UID';
 $wb['mailuser_gid_txt'] = 'Mailuser GID';
 $wb['mailuser_name_txt'] = 'Mailuser Name';
 $wb['mailuser_group_txt'] = 'Mailuser Group';
-$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)';
+$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox';
+$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup';
+$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.';
+$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.';
+$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.';
 $wb['relayhost_txt'] = 'Relayhost';
 $wb['relayhost_user_txt'] = 'Relayhost User';
 $wb['relayhost_password_txt'] = 'Relayhost Password';
diff --git a/interface/web/admin/lib/lang/id_server_config.lng b/interface/web/admin/lib/lang/id_server_config.lng
index 8fcd47e642..4b75b353d3 100644
--- a/interface/web/admin/lib/lang/id_server_config.lng
+++ b/interface/web/admin/lib/lang/id_server_config.lng
@@ -24,7 +24,11 @@ $wb['mailuser_uid_txt'] = 'UID Pengguna Mail';
 $wb['mailuser_gid_txt'] = 'GID Pengguna Mail';
 $wb['mailuser_name_txt'] = 'Nama Pengguna Mail';
 $wb['mailuser_group_txt'] = 'Grup Pengguna Mail';
-$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)';
+$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox';
+$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup';
+$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.';
+$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.';
+$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.';
 $wb['relayhost_txt'] = 'Relayhost';
 $wb['relayhost_user_txt'] = 'Pengguna Relayhost';
 $wb['relayhost_password_txt'] = 'Kata Sandi Relayhost';
diff --git a/interface/web/admin/lib/lang/it_server_config.lng b/interface/web/admin/lib/lang/it_server_config.lng
index 8f74a30b78..8c7bd1169c 100644
--- a/interface/web/admin/lib/lang/it_server_config.lng
+++ b/interface/web/admin/lib/lang/it_server_config.lng
@@ -21,7 +21,11 @@ $wb['mailuser_uid_txt'] = 'Mailuser UID';
 $wb['mailuser_gid_txt'] = 'Mailuser GID';
 $wb['mailuser_name_txt'] = 'Mailuser Name';
 $wb['mailuser_group_txt'] = 'Mailuser Group';
-$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)';
+$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox';
+$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup';
+$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.';
+$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.';
+$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.';
 $wb['relayhost_txt'] = 'Relayhost';
 $wb['relayhost_user_txt'] = 'Relayhost User';
 $wb['relayhost_password_txt'] = 'Relayhost Password';
diff --git a/interface/web/admin/lib/lang/ja_server_config.lng b/interface/web/admin/lib/lang/ja_server_config.lng
index 3ca75cd17a..1be98aa09b 100644
--- a/interface/web/admin/lib/lang/ja_server_config.lng
+++ b/interface/web/admin/lib/lang/ja_server_config.lng
@@ -24,7 +24,11 @@ $wb['mailuser_uid_txt'] = 'メールユーザーのUID';
 $wb['mailuser_gid_txt'] = 'メールユーザーのGID';
 $wb['mailuser_name_txt'] = 'メールユーザー名';
 $wb['mailuser_group_txt'] = 'メールユーザーグループ';
-$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)';
+$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox';
+$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup';
+$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.';
+$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.';
+$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.';
 $wb['relayhost_txt'] = 'リレーホスト';
 $wb['relayhost_user_txt'] = 'リレーホストユーザー';
 $wb['relayhost_password_txt'] = 'リレーホストパスワード';
diff --git a/interface/web/admin/lib/lang/nl_server_config.lng b/interface/web/admin/lib/lang/nl_server_config.lng
index e7c6b4bd6b..cbb6c2bed6 100644
--- a/interface/web/admin/lib/lang/nl_server_config.lng
+++ b/interface/web/admin/lib/lang/nl_server_config.lng
@@ -24,7 +24,11 @@ $wb['mailuser_uid_txt'] = 'Mailuser UID';
 $wb['mailuser_gid_txt'] = 'Mailuser GID';
 $wb['mailuser_name_txt'] = 'Mailuser name';
 $wb['mailuser_group_txt'] = 'Mailuser groep';
-$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)';
+$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox';
+$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup';
+$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.';
+$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.';
+$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.';
 $wb['relayhost_txt'] = 'Relayhost';
 $wb['relayhost_user_txt'] = 'Relayhost gebruiker';
 $wb['relayhost_password_txt'] = 'Relayhost wachtwoord';
diff --git a/interface/web/admin/lib/lang/pl_server_config.lng b/interface/web/admin/lib/lang/pl_server_config.lng
index e13f2fcde9..2d67bd35b6 100644
--- a/interface/web/admin/lib/lang/pl_server_config.lng
+++ b/interface/web/admin/lib/lang/pl_server_config.lng
@@ -24,7 +24,11 @@ $wb['mailuser_uid_txt'] = 'UID użytkownika e-mail';
 $wb['mailuser_gid_txt'] = 'GID użytkownika e-mail';
 $wb['mailuser_name_txt'] = 'Nazwa użytkownika e-mail';
 $wb['mailuser_group_txt'] = 'Grupa użytkownika e-mail';
-$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)';
+$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox';
+$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup';
+$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.';
+$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.';
+$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.';
 $wb['relayhost_txt'] = 'Adres Relayhost';
 $wb['relayhost_user_txt'] = 'Użytkownik Relayhost';
 $wb['relayhost_password_txt'] = 'Hasło Relayhost';
diff --git a/interface/web/admin/lib/lang/pt_server_config.lng b/interface/web/admin/lib/lang/pt_server_config.lng
index 93a7971b00..1ed4cf1c79 100644
--- a/interface/web/admin/lib/lang/pt_server_config.lng
+++ b/interface/web/admin/lib/lang/pt_server_config.lng
@@ -23,7 +23,11 @@ $wb['mailuser_uid_txt'] = 'UID utilizador de email';
 $wb['mailuser_gid_txt'] = 'GID utilizador de email';
 $wb['mailuser_name_txt'] = 'Nome utilizador de email';
 $wb['mailuser_group_txt'] = 'Grupo utilizador de email';
-$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)';
+$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox';
+$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup';
+$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.';
+$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.';
+$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.';
 $wb['relayhost_txt'] = 'Host Relay';
 $wb['relayhost_user_txt'] = 'Utilizador do Host Relay';
 $wb['relayhost_password_txt'] = 'Senha do Host Relay';
diff --git a/interface/web/admin/lib/lang/ro_server_config.lng b/interface/web/admin/lib/lang/ro_server_config.lng
index a3d9b429ae..aa7e42a308 100644
--- a/interface/web/admin/lib/lang/ro_server_config.lng
+++ b/interface/web/admin/lib/lang/ro_server_config.lng
@@ -23,7 +23,11 @@ $wb['mailuser_uid_txt'] = 'Mailuser UID';
 $wb['mailuser_gid_txt'] = 'Mailuser GID';
 $wb['mailuser_name_txt'] = 'Mailuser Name';
 $wb['mailuser_group_txt'] = 'Mailuser Group';
-$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)';
+$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox';
+$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup';
+$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.';
+$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.';
+$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.';
 $wb['relayhost_txt'] = 'Relayhost';
 $wb['relayhost_user_txt'] = 'Relayhost User';
 $wb['relayhost_password_txt'] = 'Relayhost Password';
diff --git a/interface/web/admin/lib/lang/ru_server_config.lng b/interface/web/admin/lib/lang/ru_server_config.lng
index c7b355ad07..dd82e58f4a 100644
--- a/interface/web/admin/lib/lang/ru_server_config.lng
+++ b/interface/web/admin/lib/lang/ru_server_config.lng
@@ -21,7 +21,11 @@ $wb['mailuser_uid_txt'] = 'Mailuser UID';
 $wb['mailuser_gid_txt'] = 'Mailuser GID';
 $wb['mailuser_name_txt'] = 'Имя Mailuser';
 $wb['mailuser_group_txt'] = 'Группа Mailuser';
-$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)';
+$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox';
+$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup';
+$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.';
+$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.';
+$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.';
 $wb['relayhost_txt'] = 'Relay-хост';
 $wb['relayhost_user_txt'] = 'Логин Relay-хоста';
 $wb['relayhost_password_txt'] = 'Пароль Relay-хоста';
diff --git a/interface/web/admin/lib/lang/se_server_config.lng b/interface/web/admin/lib/lang/se_server_config.lng
index 8e3768c1ef..9a2d518a58 100644
--- a/interface/web/admin/lib/lang/se_server_config.lng
+++ b/interface/web/admin/lib/lang/se_server_config.lng
@@ -22,7 +22,11 @@ $wb['mailuser_uid_txt'] = 'Mailuser UID';
 $wb['mailuser_gid_txt'] = 'Mailuser GID';
 $wb['mailuser_name_txt'] = 'Mailuser Name';
 $wb['mailuser_group_txt'] = 'Mailuser Group';
-$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)';
+$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox';
+$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup';
+$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.';
+$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.';
+$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.';
 $wb['relayhost_txt'] = 'Relayhost';
 $wb['relayhost_user_txt'] = 'Relayhost User';
 $wb['relayhost_password_txt'] = 'Relayhost Password';
diff --git a/interface/web/admin/lib/lang/sk_server_config.lng b/interface/web/admin/lib/lang/sk_server_config.lng
index 6cf7be9250..78d6ccb5c8 100644
--- a/interface/web/admin/lib/lang/sk_server_config.lng
+++ b/interface/web/admin/lib/lang/sk_server_config.lng
@@ -24,7 +24,11 @@ $wb['mailuser_uid_txt'] = 'Mailuser UID';
 $wb['mailuser_gid_txt'] = 'Mailuser GID';
 $wb['mailuser_name_txt'] = 'Mailuser Meno';
 $wb['mailuser_group_txt'] = 'Mailuser Skupina';
-$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)';
+$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox';
+$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup';
+$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.';
+$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.';
+$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.';
 $wb['relayhost_txt'] = 'Relayhost';
 $wb['relayhost_user_txt'] = 'Relayhost uživateľ';
 $wb['relayhost_password_txt'] = 'Relayhost heslo';
diff --git a/interface/web/admin/lib/lang/tr_server_config.lng b/interface/web/admin/lib/lang/tr_server_config.lng
index 9081a4dad8..4c6c4f351e 100644
--- a/interface/web/admin/lib/lang/tr_server_config.lng
+++ b/interface/web/admin/lib/lang/tr_server_config.lng
@@ -24,7 +24,11 @@ $wb['mailuser_uid_txt'] = 'Mail kullanıcısı UID';
 $wb['mailuser_gid_txt'] = 'Mail kullanıcısı GID';
 $wb['mailuser_name_txt'] = 'Mail kullanıcısı Adı';
 $wb['mailuser_group_txt'] = 'Mail kullanıcısı Grubu';
-$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)';
+$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox';
+$wb['mailbox_virtual_uidgid_maps_info_txt'] = 'only in single web and mail-server-setup';
+$wb['mailbox_virtual_uidgid_maps_error_nosingleserver'] = 'Uid cannot be mapped in multi-server-setup.';
+$wb['mailbox_virtual_uidgid_maps_error_nodovecot'] = 'Uid-mapping can only be used with dovecot.';
+$wb['mailbox_virtual_uidgid_maps_error_alreadyusers'] = 'Uid-mapping cannot be changed if there are already mail users.';
 $wb['relayhost_txt'] = 'Relayhost';
 $wb['relayhost_user_txt'] = 'Relayhost Kullanıcı';
 $wb['relayhost_password_txt'] = 'Relayhost Åžifre';
diff --git a/interface/web/admin/templates/server_config_mail_edit.htm b/interface/web/admin/templates/server_config_mail_edit.htm
index 2bf8f9368d..7eeab34c17 100644
--- a/interface/web/admin/templates/server_config_mail_edit.htm
+++ b/interface/web/admin/templates/server_config_mail_edit.htm
@@ -58,7 +58,7 @@
             <div class="ctrlHolder">
                 <p class="label">{tmpl_var name='mailbox_virtual_uidgid_maps_txt'}</p>
                 <div class="multiField">
-                    {tmpl_var name='mailbox_virtual_uidgid_maps'}
+                    {tmpl_var name='mailbox_virtual_uidgid_maps'}&nbsp;{tmpl_var name='mailbox_virtual_uidgid_maps_info_txt'}
                 </div>
             </div>
             <div class="ctrlHolder">
diff --git a/server/plugins-available/postfix_server_plugin.inc.php b/server/plugins-available/postfix_server_plugin.inc.php
index fd9fd5a021..474d10dc30 100644
--- a/server/plugins-available/postfix_server_plugin.inc.php
+++ b/server/plugins-available/postfix_server_plugin.inc.php
@@ -79,12 +79,12 @@ class postfix_server_plugin {
 		global $app, $conf;
 
 		// get the config
-		$app->uses("getconf");
+		$app->uses("getconf,system");
 		$old_ini_data = $app->ini_parser->parse_ini_string($data['old']['config']);
 		$mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail');
 
 		copy('/etc/postfix/main.cf', '/etc/postfix/main.cf~');
-
+		
 		if($mail_config['relayhost'] != '') {
 			exec("postconf -e 'relayhost = ".$mail_config['relayhost']."'");
 			if($mail_config['relayhost_user'] != '' && $mail_config['relayhost_password'] != '') {
@@ -137,6 +137,19 @@ class postfix_server_plugin {
 			}
 			exec("postconf -e 'smtpd_recipient_restrictions = ".implode(", ", $new_options)."'");
 		}
+		
+		if ($mail_config["mailbox_virtual_uidgid_maps"] == 'y') {
+			// If dovecot switch to lmtp
+			if($app->system->is_installed('dovecot')) {
+				exec("postconf -e 'virtual_transport = lmtp:unix:private/dovecot-lmtp'");
+			}
+		}
+		else {
+			// If dovecot switch to dovecot
+			if($app->system->is_installed('dovecot')) {
+				exec("postconf -e 'virtual_transport = dovecot'");
+			}
+		}
 
 		exec("postconf -e 'mailbox_size_limit = ".intval($mail_config['mailbox_size_limit']*1024*1024)."'");
 		exec("postconf -e 'message_size_limit = ".intval($mail_config['message_size_limit']*1024*1024)."'");
-- 
GitLab