diff --git a/interface/lib/classes/validate_mail_transport.inc.php b/interface/lib/classes/validate_mail_transport.inc.php
index 6b47d953030cb2274ed34ed598231336f940fbc9..3396df65cf695411b23990cc0ac7dd07b6efc73e 100644
--- a/interface/lib/classes/validate_mail_transport.inc.php
+++ b/interface/lib/classes/validate_mail_transport.inc.php
@@ -41,6 +41,40 @@ class validate_mail_transport {
 		}
 	}
 
+	/* Validator function for checking that the 'domain' is not already set as mail_domain */
+	function validate_isnot_maildomain($field_name, $field_value, $validator) {
+		global $app, $conf;
+
+		if(isset($app->remoting_lib->primary_id)) {
+			$id = $app->remoting_lib->primary_id;
+		} else {
+			$id = $app->tform->primary_id;
+		}
+
+		$sql = "SELECT domain_id, domain FROM mail_domain WHERE domain = ? AND domain_id != ?";
+		$domain_check = $app->db->queryOneRecord($sql, $field_value, $id);
+
+		if($domain_check) return $this->get_error('domain_is_maildomain');
+
+	}
+
+	/* Validator function for checking that the 'domain' is not already set as mail_transport */
+	function validate_isnot_mailtransport($field_name, $field_value, $validator) {
+		global $app, $conf;
+
+		if(isset($app->remoting_lib->primary_id)) {
+			$id = $app->remoting_lib->primary_id;
+		} else {
+			$id = $app->tform->primary_id;
+		}
+
+		$sql = "SELECT transport_id, domain FROM mail_transport WHERE domain = ? AND transport_id != ?";
+		$domain_check = $app->db->queryOneRecord($sql, $field_value, $id);
+
+		if($domain_check) return $this->get_error('domain_is_transport');
+
+	}
+
 	/* Validator function for checking the 'domain' of a mail transport */
 	function validate_domain($field_name, $field_value, $validator) {
 		global $app, $conf;
@@ -52,8 +86,8 @@ class validate_mail_transport {
 		}
 
 		// mail_transport.domain (could also be an email address) must be unique per server
-		$sql = "SELECT transport_id, domain FROM mail_transport WHERE domain = ? AND server_id = ? AND transport_id != ?";
-		$domain_check = $app->db->queryOneRecord($sql, $field_value, $app->tform_actions->dataRecord['server_id'], $id);
+		$sql = "SELECT transport_id, domain FROM mail_transport WHERE domain = ? AND transport_id != ?";
+		$domain_check = $app->db->queryOneRecord($sql, $field_value, $id);
 
 		if($domain_check) return $this->get_error('domain_error_unique');
 	}
diff --git a/interface/web/mail/form/mail_domain.tform.php b/interface/web/mail/form/mail_domain.tform.php
index df1088f883ecb737217932080064268275d56891..2c48e598e68de855f200495a8c21d781cf62da91 100644
--- a/interface/web/mail/form/mail_domain.tform.php
+++ b/interface/web/mail/form/mail_domain.tform.php
@@ -89,6 +89,12 @@ $form["tabs"]['domain'] = array (
 					'errmsg'=> 'domain_error_empty'),
 				1 => array ( 'type' => 'ISDOMAIN',
 					'errmsg'=> 'domain_error_regex'),
+				3 => array(
+					'type' => 'CUSTOM',
+					'class' => 'validate_mail_transport',
+					'function' => 'validate_isnot_mailtransport',
+					'errmsg'=> 'domain_is_transport',
+				),
 			),
 			'default' => '',
 			'value'  => '',
diff --git a/interface/web/mail/form/mail_transport.tform.php b/interface/web/mail/form/mail_transport.tform.php
index deb83d629d9d8aa276e45f85f29d8bc57235050d..0adbfadee022e57826fc843b5659ef5ac51ca233 100644
--- a/interface/web/mail/form/mail_transport.tform.php
+++ b/interface/web/mail/form/mail_transport.tform.php
@@ -94,6 +94,12 @@ $form["tabs"]['transport'] = array (
 					'class' => 'validate_mail_transport',
 					'function' => 'validate_domain',
 					'errmsg'=> 'domain_error_unique',
+				),
+				1 => array(
+					'type' => 'CUSTOM',
+					'class' => 'validate_mail_transport',
+					'function' => 'validate_isnot_maildomain',
+					'errmsg' => 'domain_is_maildomain',
 				)
 			),
 			'default' => '',
diff --git a/interface/web/mail/lib/lang/en_mail_domain.lng b/interface/web/mail/lib/lang/en_mail_domain.lng
index 75d0375986374b49404f37710a51dccd92c7988c..77eae0e66568fb4e3ea1ed034e59c96e52effe19 100644
--- a/interface/web/mail/lib/lang/en_mail_domain.lng
+++ b/interface/web/mail/lib/lang/en_mail_domain.lng
@@ -25,3 +25,4 @@ $wb['dkim_auto_dns_txt'] = 'Managed zone, dns updated automatically';
 $wb['relayhost_txt'] = 'Relayhost';
 $wb['relayhost_user_txt'] = 'Relayhost User';
 $wb['relayhost_password_txt'] = 'Relayhost Password';
+$wb['domain_is_transport'] = 'The Domain is already set as E-Mail Transport.';
diff --git a/interface/web/mail/lib/lang/en_mail_transport.lng b/interface/web/mail/lib/lang/en_mail_transport.lng
index 16c33c02011d4bec352ffdde12a70234d51aeab7..c841cd2132fab8b0798b2a38b9fef18c90fba608 100644
--- a/interface/web/mail/lib/lang/en_mail_transport.lng
+++ b/interface/web/mail/lib/lang/en_mail_transport.lng
@@ -9,3 +9,4 @@ $wb['active_txt'] = 'Active';
 $wb['limit_mailrouting_txt'] = 'The max. number of routes for your account is reached.';
 $wb['transport_txt'] = 'Transport';
 $wb['domain_error_unique'] = 'A mail transport for this Domain already exists on this server.';
+$wb['domain_is_maildomain'] = 'The Domain is already set as a E-Mail Domain.';