From ec571625a4dee99acff1a2cef75a48aa57df82cb Mon Sep 17 00:00:00 2001 From: tbrehm <t.brehm@ispconfig.org> Date: Thu, 22 Aug 2013 07:56:36 -0400 Subject: [PATCH] Updated dkim support. Thanks to Florian for the patch. --- server/plugins-available/mail_plugin_dkim.inc.php | 150 +++++++++++++++++++++++++------------------------- 1 files changed, 75 insertions(+), 75 deletions(-) diff --git a/server/plugins-available/mail_plugin_dkim.inc.php b/server/plugins-available/mail_plugin_dkim.inc.php index 1a50cee..0bea953 100644 --- a/server/plugins-available/mail_plugin_dkim.inc.php +++ b/server/plugins-available/mail_plugin_dkim.inc.php @@ -1,9 +1,9 @@ -<?php - -/* -Copyright (c) 2007 - 2013, Till Brehm, projektfarm Gmbh -Copyright (c) 2013, Florian Schaal, info@schaal-24.de -All rights reserved. +<?php + +/* +Copyright (c) 2007 - 2013, Till Brehm, projektfarm Gmbh +Copyright (c) 2013, Florian Schaal, info@schaal-24.de +All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: @@ -60,22 +60,22 @@ /* Register for the events */ - $app->plugins->registerEvent('mail_domain_delete',$this->plugin_name,'domain_dkim_delete'); - $app->plugins->registerEvent('mail_domain_insert',$this->plugin_name,'domain_dkim_insert'); - $app->plugins->registerEvent('mail_domain_update',$this->plugin_name,'domain_dkim_update'); - } - - /* + $app->plugins->registerEvent('mail_domain_delete',$this->plugin_name,'domain_dkim_delete'); + $app->plugins->registerEvent('mail_domain_insert',$this->plugin_name,'domain_dkim_insert'); + $app->plugins->registerEvent('mail_domain_update',$this->plugin_name,'domain_dkim_update'); + } + + /* This function gets the amavisd-config file */ - function get_amavis_config() { - $pos_config=array( - '/etc/amavisd.conf', - '/etc/amavisd.conf/50-user', - '/etc/amavis/conf.d/50-user' - ); - $amavis_configfile=''; - foreach($pos_config as $conf) { + function get_amavis_config() { + $pos_config=array( + '/etc/amavisd.conf', + '/etc/amavisd.conf/50-user', + '/etc/amavis/conf.d/50-user' + ); + $amavis_configfile=''; + foreach($pos_config as $conf) { if (is_file($conf)) { $amavis_configfile=$conf; break; @@ -105,58 +105,58 @@ $check=false; } } else { - $app->log('Unable to write DKIM settings; Check your config!',LOGLEVEL_ERROR); - $check=false; - } - return $check; - } - + $app->log('Unable to write DKIM settings; Check your config!',LOGLEVEL_ERROR); + $check=false; + } + return $check; + } + /* This function restarts amavis */ function restart_amavis() { - global $app,$conf; - $initfile=$conf['init_scripts'].'/amavis'; - $app->log('Restarting amavis.',LOGLEVEL_DEBUG); - exec(escapeshellarg($conf['init_scripts']).escapeshellarg('/amavis').' restart',$output); - foreach($output as $logline) $app->log($logline,LOGLEVEL_DEBUG); - } - - /* - This function writes the keyfiles (public and private) - */ - function write_dkim_key($key_file,$key_value,$key_domain) { - global $app,$mailconfig; + global $app,$conf; + $initfile=$conf['init_scripts'].'/amavis'; + $app->log('Reloading amavis.',LOGLEVEL_DEBUG); + exec(escapeshellarg($conf['init_scripts']).escapeshellarg('/amavis').' reload',$output); + foreach($output as $logline) $app->log($logline,LOGLEVEL_DEBUG); + } + + /* + This function writes the keyfiles (public and private) + */ + function write_dkim_key($key_file,$key_value,$key_domain) { + global $app,$mailconfig; $success=false; if (!file_put_contents($key_file.'.private',$key_value) === false) { - $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); - $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_WARNING); - } - return $success; - } + $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); + $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_WARNING); + } + return $success; + } /* This function removes the keyfiles */ - function remove_dkim_key($key_file,$key_domain) { - global $app; - if (file_exists($key_file.'.private')) { - exec('rm -f '.escapeshellarg($key_file.'.private')); - $app->log('Deleted the DKIM Private-key for '.$key_domain.'.',LOGLEVEL_DEBUG); - } else $app->log('Unable to delete the DKIM Private-key for '.$key_domain.' (not found).',LOGLEVEL_DEBUG); - if (file_exists($key_file.'.public')) { - exec('rm -f '.escapeshellarg($key_file.'.public')); - $app->log('Deleted the DKIM Public-key for '.$key_domain.'.',LOGLEVEL_DEBUG); - } else $app->log('Unable to delete the DKIM Public-key for '.$key_domain.' (not found).',LOGLEVEL_DEBUG); - } + function remove_dkim_key($key_file,$key_domain) { + global $app; + if (file_exists($key_file.'.private')) { + exec('rm -f '.escapeshellarg($key_file.'.private')); + $app->log('Deleted the DKIM Private-key for '.$key_domain.'.',LOGLEVEL_DEBUG); + } else $app->log('Unable to delete the DKIM Private-key for '.$key_domain.' (not found).',LOGLEVEL_DEBUG); + if (file_exists($key_file.'.public')) { + exec('rm -f '.escapeshellarg($key_file.'.public')); + $app->log('Deleted the DKIM Public-key for '.$key_domain.'.',LOGLEVEL_DEBUG); + } else $app->log('Unable to delete the DKIM Public-key for '.$key_domain.' (not found).',LOGLEVEL_DEBUG); + } /* This function adds the entry to the amavisd-config @@ -201,13 +201,13 @@ $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail'); if ( substr($mail_config['dkim_path'],strlen($mail_config['dkim_path'])-1) == '/' ) $mail_config['dkim_path'] = substr($mail_config['dkim_path'],0,strlen($mail_config['dkim_path'])-1); - if ($this->write_dkim_key($mail_config['dkim_path']."/".$data['new']['domain'],$data['new']['dkim_private'],$data['new']['domain'])) { - $this->add_to_amavis($data['new']['domain']); - } else { - $app->log('Error saving the DKIM Private-key for '.$data['new']['domain'].' - DKIM is not enabled for the domain.',LOGLEVEL_ERROR); - } - } - + if ($this->write_dkim_key($mail_config['dkim_path']."/".$data['new']['domain'],$data['new']['dkim_private'],$data['new']['domain'])) { + $this->add_to_amavis($data['new']['domain']); + } else { + $app->log('Error saving the DKIM Private-key for '.$data['new']['domain'].' - DKIM is not enabled for the domain.',LOGLEVEL_ERROR); + } + } + /* This function controlls the removement of keyfiles (public and private) and the entry in the amavisd-config @@ -227,12 +227,12 @@ function domain_dkim_delete($event_name,$data) { if (isset($data['old']['dkim']) && $data['old']['dkim'] == 'y') $this->remove_dkim($data['old']); } - - function domain_dkim_insert($event_name,$data) { - if (isset($data['new']['dkim']) && $data['new']['dkim']=='y' && $this->check_system($data)) { - $this->add_dkim($data); - } - } + + function domain_dkim_insert($event_name,$data) { + if (isset($data['new']['dkim']) && $data['new']['dkim']=='y' && $this->check_system($data)) { + $this->add_dkim($data); + } + } function domain_dkim_update($event_name,$data) { global $app; -- Gitblit v1.9.1