From fef8248f430365a100bd585196ef7cdc04e5c131 Mon Sep 17 00:00:00 2001
From: Marius Cramer <m.cramer@pixcept.de>
Date: Thu, 14 Aug 2014 07:56:16 -0400
Subject: [PATCH] Merge branch 'master' into 'master'

---
 server/plugins-available/mail_plugin_dkim.inc.php |   14 +++++++++++---
 1 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/server/plugins-available/mail_plugin_dkim.inc.php b/server/plugins-available/mail_plugin_dkim.inc.php
index a74c4b8..f53b108 100644
--- a/server/plugins-available/mail_plugin_dkim.inc.php
+++ b/server/plugins-available/mail_plugin_dkim.inc.php
@@ -119,8 +119,12 @@
 		}
 		/* 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'])) {
-
+		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'] != '/'
+		) {
             if (!is_dir($mail_config['dkim_path'])) {
                 $app->log('DKIM Path '.$mail_config['dkim_path'].' not found - (re)created.', LOGLEVEL_DEBUG);
 				if($app->system->is_user('amavis')) { 
@@ -133,10 +137,12 @@
 				}
 				if(!empty($amavis_user)) {
 					mkdir($mail_config['dkim_path'], 0750, true);
-					exec('chown '.$amavis_user.' /var/lib/amavis/dkim');
+					exec('chown '.$amavis_user.' '.escapeshellarg($mail_config['dkim_path']));
 					unset($amavis_user);
 				} else {
 					mkdir($mail_config['dkim_path'], 0755, true);
+					$app->log('No user amavis or vscan found - using root for '.$mail_config['dkim_path']
+, LOGLEVEL_WARNING);
 				}
             }
 
@@ -194,6 +200,8 @@
 			if (!file_put_contents($key_file.'.public', $public_key) === false)
 				$app->log('Saved DKIM Public to '.$key_domain.'.', LOGLEVEL_DEBUG);
 			else $app->log('Unable to save DKIM Public to '.$key_domain.'.', LOGLEVEL_DEBUG);
+		} else {
+			$app->log('Unable to save DKIM Privte-key to '.$key_file.'.private', LOGLEVEL_ERROR);
 		}
 		return $success;
 	}

--
Gitblit v1.9.1