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 | 28 +++++++++++++++++++++-------
1 files changed, 21 insertions(+), 7 deletions(-)
diff --git a/server/plugins-available/mail_plugin_dkim.inc.php b/server/plugins-available/mail_plugin_dkim.inc.php
index 8edd657..f53b108 100644
--- a/server/plugins-available/mail_plugin_dkim.inc.php
+++ b/server/plugins-available/mail_plugin_dkim.inc.php
@@ -119,18 +119,30 @@
}
/* 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);
- $amavis_user=exec('grep -o "^amavis:\|^vscan:" /etc/passwd');
+ if($app->system->is_user('amavis')) {
+ $amavis_user='amavis';
+ } elseif ($app->system->is_user('vscan')) {
+ $amavis_user='vscan';
+ }
+ else {
+ $amavis_user='';
+ }
if(!empty($amavis_user)) {
- $amavis_user=rtrim($amavis_user, ":");
mkdir($mail_config['dkim_path'], 0750, true);
- exec('chown '.$amavis_user.' /var/lib/amavis/dkim');
- unset $amavis_user;
+ 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);
}
}
@@ -181,13 +193,15 @@
$app->log('Saved DKIM Private-key to '.$key_file.'.private', LOGLEVEL_DEBUG);
$success=true;
/* now we get the DKIM Public-key */
- exec('cat '.escapeshellarg($key_file.'.private').'|openssl rsa -pubout', $pubkey, $result);
+ exec('cat '.escapeshellarg($key_file.'.private').'|openssl rsa -pubout 2> /dev/null', $pubkey, $result);
$public_key='';
foreach($pubkey as $values) $public_key=$public_key.$values."\n";
/* save the DKIM Public-key in dkim-dir */
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