diff --git a/install/dist/lib/debian60.lib.php b/install/dist/lib/debian60.lib.php
index 5c47447466a4f2bba5874292acf4f1bec7897dcc..584e6aa91c19753b89210ec25df19253acc96bd1 100644
--- a/install/dist/lib/debian60.lib.php
+++ b/install/dist/lib/debian60.lib.php
@@ -38,7 +38,7 @@ class installer extends installer_base {
 		
 		// check if virtual_transport must be changed
 		if ($this->is_update) {
-			$tmp = $inst->db->queryOneRecord("SELECT * FROM ".$conf["mysql"]["database"].".server WHERE server_id = ".$conf['server_id']);
+			$tmp = $this->db->queryOneRecord("SELECT * FROM ".$conf["mysql"]["database"].".server WHERE server_id = ".$conf['server_id']);
 			$ini_array = ini_to_array(stripslashes($tmp['config']));
 			// ini_array needs not to be checked, because already done in update.php -> updateDbAndIni()
 			
diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php
index b593e1acc533a633f16d28d9141092e010e14295..01fd96073b192db00d3faedf4e4888a0ca7a5e9c 100644
--- a/install/dist/lib/fedora.lib.php
+++ b/install/dist/lib/fedora.lib.php
@@ -385,7 +385,7 @@ class installer_dist extends installer_base {
 		
 		// check if virtual_transport must be changed
 		if ($this->is_update) {
-			$tmp = $inst->db->queryOneRecord("SELECT * FROM ".$conf["mysql"]["database"].".server WHERE server_id = ".$conf['server_id']);
+			$tmp = $this->db->queryOneRecord("SELECT * FROM ".$conf["mysql"]["database"].".server WHERE server_id = ".$conf['server_id']);
 			$ini_array = ini_to_array(stripslashes($tmp['config']));
 			// ini_array needs not to be checked, because already done in update.php -> updateDbAndIni()
 			
diff --git a/install/dist/lib/gentoo.lib.php b/install/dist/lib/gentoo.lib.php
index a9ad4d40fdd45b0288c11e0e821897f1b95a2818..6e463ec607c9e19542c0bde3fcd2751220a55ed5 100644
--- a/install/dist/lib/gentoo.lib.php
+++ b/install/dist/lib/gentoo.lib.php
@@ -229,7 +229,7 @@ class installer extends installer_base
 		
 		// check if virtual_transport must be changed
 		if ($this->is_update) {
-			$tmp = $inst->db->queryOneRecord("SELECT * FROM ".$conf["mysql"]["database"].".server WHERE server_id = ".$conf['server_id']);
+			$tmp = $this->db->queryOneRecord("SELECT * FROM ".$conf["mysql"]["database"].".server WHERE server_id = ".$conf['server_id']);
 			$ini_array = ini_to_array(stripslashes($tmp['config']));
 			// ini_array needs not to be checked, because already done in update.php -> updateDbAndIni()
 			
diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php
index ed3c7446f851870edb0a4aea5eade81ca4bd6192..a278c90ccd4d5a0759fb9941b4a6879504c96c30 100644
--- a/install/dist/lib/opensuse.lib.php
+++ b/install/dist/lib/opensuse.lib.php
@@ -440,7 +440,7 @@ class installer_dist extends installer_base {
 		
 		// check if virtual_transport must be changed
 		if ($this->is_update) {
-			$tmp = $inst->db->queryOneRecord("SELECT * FROM ".$conf["mysql"]["database"].".server WHERE server_id = ".$conf['server_id']);
+			$tmp = $this->db->queryOneRecord("SELECT * FROM ".$conf["mysql"]["database"].".server WHERE server_id = ".$conf['server_id']);
 			$ini_array = ini_to_array(stripslashes($tmp['config']));
 			// ini_array needs not to be checked, because already done in update.php -> updateDbAndIni()
 			
diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index f1d0df64f30461941613e74cf77ddfdf6258b8c2..9137a41d1cdc617521e4b22773cb30b7b1821ac7 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -961,7 +961,7 @@ class installer_base {
 		
 		// check if virtual_transport must be changed
 		if ($this->is_update) {
-			$tmp = $inst->db->queryOneRecord("SELECT * FROM ".$conf["mysql"]["database"].".server WHERE server_id = ".$conf['server_id']);
+			$tmp = $this->db->queryOneRecord("SELECT * FROM ".$conf["mysql"]["database"].".server WHERE server_id = ".$conf['server_id']);
 			$ini_array = ini_to_array(stripslashes($tmp['config']));
 			// ini_array needs not to be checked, because already done in update.php -> updateDbAndIni()
 			
diff --git a/interface/web/js/mail_domain_dkim.js b/interface/web/js/mail_domain_dkim.js
index 09a01b3d8a166eeca2977db78fa0cbb393bb5f00..fdc7ae5715a8e0195b83e066b07fd483aeaae0c6 100755
--- a/interface/web/js/mail_domain_dkim.js
+++ b/interface/web/js/mail_domain_dkim.js
@@ -31,49 +31,65 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 This Javascript is invoked by
 	* mail/templates/mail_domain_edit.htm to show and/or create the key-pair
 */
-
+var request = false;
 
 $('.subsectiontoggle').on('click', function(){
 	$(this).children().toggleClass('showing').end().next().slideToggle();
 });
 
+function setRequest(action) {
+	if (window.XMLHttpRequest) {
+		request = new XMLHttpRequest();
+	} else if (window.ActiveXObject) {
+		try {
+			request = new ActiveXObject('Msxml2.XMLHTTP');
+		}
+		catch (e) {
+			try {
+				request = new ActiveXObject('Microsoft.XMLHTTP');
+			}
+			catch (e) {}
+		}
+	}
 
-        var request = false;
+	if (!request) {
+		alert("Error creating XMLHTTP-instance");
+		return false;
+	} else {
+		// jQuery depends on domain-module active / inactive
+		var check = jQuery('#domain_module').val();
+		if ( check == "1" ) {
+			var skillsSelect = document.getElementById("domain");
+			var domain = skillsSelect.options[skillsSelect.selectedIndex].text;
+		} else { 
+			var domain = jQuery('#domain').val();
+		}
+		var selector=jQuery('#dkim_selector').val();
+		var publickey=jQuery('#dkim_public').val();
+		var privatekey=encodeURIComponent(document.getElementById("dkim_private").value)
+		request.open('POST', 'mail/mail_domain_dkim_create.php', true);
+		request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
+		request.send('domain='+domain+'&action='+action+'&dkim_selector='+selector+'&dkim_public='+publickey+'&dkim_private='+privatekey);
+		request.onreadystatechange = interpretRequest;
+	}
+}
 
-        function setRequest(action,value,privatekey) {
-                if (window.XMLHttpRequest) {request = new XMLHttpRequest();}
-                else if (window.ActiveXObject) {
-                        try {request = new ActiveXObject('Msxml2.XMLHTTP');}
-                        catch (e) {
-                                try {request = new ActiveXObject('Microsoft.XMLHTTP');}
-                                catch (e) {}
-                        }
-                }
-                if (!request) {
-                        alert("Error creating XMLHTTP-instance");
-                        return false;
-                } else {
-                        request.open('POST', 'mail/mail_domain_dkim_create.php', true);
-                        request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
-                        request.send('domain='+value+'&action='+action+'&pkey='+privatekey);
-                        request.onreadystatechange = interpretRequest;
-                }
-        }
+function interpretRequest() {
+	switch (request.readyState) {
+		case 4:
+			if ( request.status != 200 ) {
+				alert("Request done but NOK\nError:"+request.status);
+			} else {
+				document.getElementsByName('dkim_selector')[0].value = request.responseXML.getElementsByTagName('selector')[0].firstChild.nodeValue;
+				document.getElementsByName('dkim_private')[0].value = request.responseXML.getElementsByTagName('privatekey')[0].firstChild.nodeValue;
+				document.getElementsByName('dkim_public')[0].value = request.responseXML.getElementsByTagName('publickey')[0].firstChild.nodeValue;
+				document.getElementsByName('dns_record')[0].value = request.responseXML.getElementsByTagName('dns_record')[0].firstChild.nodeValue;
+			}
+		break;
 
-        function interpretRequest() {
-                switch (request.readyState) {
-                        case 4:
-                                if (request.status != 200) {alert("Request done but NOK\nError:"+request.status);}
-                                else {
-                                        document.getElementsByName('dkim_private')[0].value = request.responseXML.getElementsByTagName('privatekey')[0].firstChild.nodeValue;
-                                        document.getElementsByName('dkim_public')[0].value = request.responseXML.getElementsByTagName('publickey')[0].firstChild.nodeValue;
-					document.getElementsByName('dns_record')[0].value = request.responseXML.getElementsByTagName('dns_record')[0].firstChild.nodeValue;
-                                }
-                                break;
-                        default:
-                                break;
-                }
-        }
+		default:
+		break;
+	}
+}
 
-var serverType = jQuery('#dkim_private').val();
-setRequest('show','{tmpl_var name="domain"}',serverType);
+setRequest('show');
diff --git a/interface/web/mail/mail_domain_dkim_create.php b/interface/web/mail/mail_domain_dkim_create.php
index 4769735c60c59070f2bce09cf92bc09f1252890e..bd9ff9c98b24e9c5741faadba61e4b89c53b1ec3 100644
--- a/interface/web/mail/mail_domain_dkim_create.php
+++ b/interface/web/mail/mail_domain_dkim_create.php
@@ -147,7 +147,6 @@ switch ($_POST['action']) {
 	break;
 
 	case 'show': /* show the DNS-Record onLoad */
-		$_POST=getRealPOST();
 		$private_key=$_POST['dkim_private'];
 	break;
 }
diff --git a/interface/web/mail/mail_domain_edit.php b/interface/web/mail/mail_domain_edit.php
index 6b73c7c2683b1daece341c22b3576acb832be94f..b3ea30bce6cb0c55287de20b791f883fa4ecbec2 100644
--- a/interface/web/mail/mail_domain_edit.php
+++ b/interface/web/mail/mail_domain_edit.php
@@ -176,6 +176,9 @@ class page_action extends tform_actions {
 				$domain_select .= "<option value=''></option>\r\n";
 			}
 			$app->tpl->setVar("domain_option", $domain_select);
+			$app->tpl->setVar("domain_module", 1);
+		} else {
+			$app->tpl->setVar("domain_module", 0);
 		}
 
 
diff --git a/interface/web/mail/templates/mail_domain_edit.htm b/interface/web/mail/templates/mail_domain_edit.htm
index 27dcb1c01d8f139a08b38cb30288b32f34caf35a..dbd5c6ef1e6d37957637f69c4800e13f9fc12d91 100755
--- a/interface/web/mail/templates/mail_domain_edit.htm
+++ b/interface/web/mail/templates/mail_domain_edit.htm
@@ -82,6 +82,11 @@
                     {tmpl_var name='active'}
                 </div>
             </div>
+			<tmpl_if name="domain_module">
+				<input type="hidden" name="domain_module" value="1" id="domain_module" />
+			<tmpl_else>
+				<input type="hidden" name="domain_module" value="0" id="domain_module" />
+			</tmpl_if>
             <div class="subsectiontoggle"><span></span>{tmpl_var name='dkim_settings_txt'}<em></em></div>
             <div style="display:none;">
               <div class="ctrlHolder">
@@ -97,11 +102,12 @@
               <div class="ctrlHolder">
                 <label for="dkim_private">{tmpl_var name='dkim_private_txt'}</label>
                 <textarea name="dkim_private" id="dkim_private" rows='10' cols='30'>{tmpl_var name='dkim_private'}</textarea>
-<a href="javascript:setRequest('create','{tmpl_var name='domain'}','{tmpl_var name='dkim_selector'}')">{tmpl_var name='dkim_generate_txt'}</a>
+<a href="javascript:setRequest('create')">{tmpl_var name='dkim_generate_txt'}</a>
               </div>
 		<div class="ctrlHolder">
                 <textarea name="dkim_public" style="display:none;" id="dkim_public" rows='5' cols='30' readonly>{tmpl_var name='dkim_public'}</textarea>
               </div>
+
               <div class="ctrlHolder">
                 <label for="dns_record">{tmpl_var name='dkim_dns_txt'}</label>
                 <textarea name="dns_record" id="dns_record" rows='10' cols='30' readonly>{tmpl_var name='dns_record'}</textarea>
@@ -113,7 +119,6 @@
 
         <input type="hidden" name="id" value="{tmpl_var name='id'}">
         <input type="hidden" name="type" value="local">
-
         <div class="buttonHolder buttons">
             <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onclick="submitForm('pageForm','mail/mail_domain_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
             <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onclick="loadContent('mail/mail_domain_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
diff --git a/interface/web/tools/resync_do.php b/interface/web/tools/resync_do.php
index 62d02e06dfa9b54945568d7aaf667e41f38ce70c..08157376f63d01dbaadb085e9f940d0f952c2c88 100644
--- a/interface/web/tools/resync_do.php
+++ b/interface/web/tools/resync_do.php
@@ -244,7 +244,7 @@ class page_action extends tform_actions {
 			$index_field = 'mailuser_id';
 			$server_type = 'mail';
 			$server_id = $app->functions->intval($this->dataRecord['mailbox_server_id']);
-			if ($server_id == -1) $tmp = query_server($db_table, $server_id, $server_type, 'WHERE 1', false); else $tmp = query_server($db_table, $server_id, $server_type);
+			if ($server_id == -1) $tmp = query_server($db_table, $server_id, $server_type, 'WHERE 1', false); else $tmp = query_server($db_table, $server_id, $server_type, 'WHERE 1');
 			$records = $tmp[0];
 			$server_name = $tmp[1];
 			unset($tmp);
diff --git a/server/plugins-available/mail_plugin_dkim.inc.php b/server/plugins-available/mail_plugin_dkim.inc.php
index 3a451d37d5fb496b97ed65aebb0e6994893e5d46..3e00ada4a99906ded7986f74a1869a82657c6f8b 100755
--- a/server/plugins-available/mail_plugin_dkim.inc.php
+++ b/server/plugins-available/mail_plugin_dkim.inc.php
@@ -117,14 +117,14 @@ class mail_plugin_dkim {
 			$app->log('Amavis-config not found or not writeable.', LOGLEVEL_ERROR);
 			$check=false;
 		}
+
 		/* dir for dkim-keys writeable? */
 		$mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail');
 		if (	isset($mail_config['dkim_path']) && 
 				!empty($mail_config['dkim_path']) && 
 				isset($data['new']['dkim_private']) && 
 				!empty($data['new']['dkim_private']) &&
-				$mail_config['dkim_path'] != '/' &&
-				$app->system->checkpath($mail_config['dkim_path'])
+				$mail_config['dkim_path'] != '/' 
 		) {
             if (!is_dir($mail_config['dkim_path'])) {
                 $app->log('DKIM Path '.$mail_config['dkim_path'].' not found - (re)created.', LOGLEVEL_DEBUG);
@@ -150,6 +150,11 @@ class mail_plugin_dkim {
 				$check=false;
 			}
 
+			if ( !$app->system->checkpath($mail_config['dkim_path']) ) {
+				$app->log('DKIM Path '.$mail_config['dkim_path'].' failed in checkpath.', LOGLEVEL_ERROR);
+				$check = false;
+			}
+
 		} else {
 			$app->log('Unable to write DKIM settings - no or invalid DKIM-Path defined', LOGLEVEL_ERROR);
 			$check=false;
@@ -184,7 +189,7 @@ class mail_plugin_dkim {
 	 * @param string $key_file full path to the key-file
 	 * @param string $key_value private-key
 	 * @param string $key_domain mail-domain
-	 * @return bool - true when the key is written to disk
+	 * @return bool - true when the private key was written to disk
 	 */
 	function write_dkim_key($key_file, $key_value, $key_domain) {
 		global $app, $mailconfig;