From aa370627b211a51dc46891cfa4b6e3d2ef3e52db Mon Sep 17 00:00:00 2001
From: mcramer <m.cramer@pixcept.de>
Date: Tue, 16 Jul 2013 10:45:17 -0400
Subject: [PATCH] - Fixed FS#2924 - the month will not set automatically in the autoresponder by click now   Along with this fixed some display problems with the combo boxes introduced in 3.0.5.   Some fields were not correctly displayed with the predefined values if value and text of the underlying option element differ.

---
 server/plugins-available/mail_plugin.inc.php |  300 +++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 267 insertions(+), 33 deletions(-)

diff --git a/server/plugins-available/mail_plugin.inc.php b/server/plugins-available/mail_plugin.inc.php
index c0a29ad..e557202 100644
--- a/server/plugins-available/mail_plugin.inc.php
+++ b/server/plugins-available/mail_plugin.inc.php
@@ -33,6 +33,19 @@
 	var $plugin_name = 'mail_plugin';
 	var $class_name  = 'mail_plugin';
 	
+	//* This function is called during ispconfig installation to determine
+	//  if a symlink shall be created for this plugin.
+	function onInstall() {
+		global $conf;
+		
+		if($conf['services']['mail'] == true) {
+			return true;
+		} else {
+			return false;
+		}
+		
+	}
+	
 		
 	/*
 	 	This function is called when the plugin is loaded
@@ -53,7 +66,12 @@
 		//* Mail Domains
 		//$app->plugins->registerEvent('mail_domain_insert',$this->plugin_name,'domain_insert');
 		//$app->plugins->registerEvent('mail_domain_update',$this->plugin_name,'domain_update');
-		//$app->plugins->registerEvent('mail_domain_delete',$this->plugin_name,'domain_delete');
+		$app->plugins->registerEvent('mail_domain_delete',$this->plugin_name,'domain_delete');
+		
+		//* Mail transports
+		$app->plugins->registerEvent('mail_transport_insert',$this->plugin_name,'transport_update');
+		$app->plugins->registerEvent('mail_transport_update',$this->plugin_name,'transport_update');
+		$app->plugins->registerEvent('mail_transport_delete',$this->plugin_name,'transport_update');
 		
 	}
 	
@@ -61,29 +79,121 @@
 	function user_insert($event_name,$data) {
 		global $app, $conf;
 		
-		// get the config
-		$app->uses("getconf");
-		$mail_config = $app->getconf->get_server_config($conf["server_id"], 'mail');
+		//* get the config
+		$app->uses('getconf,system');
+		$mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail');
+
+		// convert to lower case - it could cause problems if some directory above has upper case name
+//		$data['new']['maildir'] = strtolower($data['new']['maildir']);
 		
-		// Create the maildir, if it does not exist
-		if(!is_dir($data['new']['maildir'])) {
-			$tmp_path = $data['new']['maildir'];
-			$tmp_path_parts = explode('/',$tmp_path);
-			unset($tmp_path_parts[count($tmp_path_parts)-2]);
-			$maildomain_path = implode('/',$tmp_path_parts);
-			if(!is_dir($maildomain_path)) {
-				exec("su -c 'mkdir -p ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']);
-				$app->log('Created Directory: '.$maildomain_path,LOGLEVEL_DEBUG);
-			}
-			exec("su -c 'maildirmake ".escapeshellcmd($data['new']['maildir'])."' ".$mail_config['mailuser_name']);
-			$app->log('Executed: '."su -c 'maildirmake ".escapeshellcmd($data['new']['maildir'])."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG);
-			//exec('maildirmake '.escapeshellcmd($data['new']['maildir']));
-			exec('chown -R '.$mail_config['mailuser_name'].':'.$mail_config['mailuser_group'].' '.escapeshellcmd($data['new']['maildir']));
-			$app->log('Created Maildir: '.$data['new']['maildir'],LOGLEVEL_DEBUG);
+		$maildomain_path = $data['new']['maildir'];
+		$tmp_basepath = $data['new']['maildir'];
+		$tmp_basepath_parts = explode('/',$tmp_basepath);
+		unset($tmp_basepath_parts[count($tmp_basepath_parts)-1]);
+		$base_path = implode('/',$tmp_basepath_parts);
+
+		//* Create the mail domain directory, if it does not exist
+		if(!empty($base_path) && !is_dir($base_path)) {
+			//exec("su -c 'mkdir -p ".escapeshellcmd($base_path)."' ".$mail_config['mailuser_name']);
+			$app->system->mkdirpath($base_path, 0700, $mail_config['mailuser_name'], $mail_config['mailuser_group']);
+			$app->log('Created Directory: '.$base_path,LOGLEVEL_DEBUG);
 		}
-		//This is to fix the maildrop quota not being rebuilt after the quota is changed.
-		exec("su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($data['new']['maildir'])."' ".$mail_config['mailuser_name']);
-		$app->log('Created Maildir: '."su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($data['new']['maildir'])."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG);
+		
+		// Dovecot uses a different mail layout with a separate 'Maildir' subdirectory.
+		if($mail_config['pop3_imap_daemon'] == 'dovecot') {
+			//exec("su -c 'mkdir -p ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']);
+			$app->system->mkdirpath($maildomain_path, 0700, $mail_config['mailuser_name'], $mail_config['mailuser_group']);
+			$app->log('Created Directory: '.$maildomain_path,LOGLEVEL_DEBUG);
+			$maildomain_path .= '/Maildir';
+		}
+	
+		//* When the mail user dir exists but it is not a valid maildir, remove it
+		if(!empty($maildomain_path) && is_dir($maildomain_path) && !is_dir($maildomain_path.'/new') && !is_dir($maildomain_path.'/cur')) {
+			exec("su -c 'rm -rf ".escapeshellcmd($data['new']['maildir'])."' vmail");
+			$app->log('Removed invalid maildir and rebuild it: '.escapeshellcmd($data['new']['maildir']),LOGLEVEL_WARN);
+		}
+
+		//* Create the maildir, if it doesn not exist, set permissions, set quota.
+		if(!empty($maildomain_path) && !is_dir($maildomain_path)) {
+
+			//exec("su -c 'maildirmake ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']);
+			$app->system->maildirmake($maildomain_path,$mail_config['mailuser_name']);
+
+			exec('chown -R '.$mail_config['mailuser_name'].':'.$mail_config['mailuser_group'].' '.escapeshellcmd($data['new']['maildir']));
+			$app->log('Set ownership on '.escapeshellcmd($data['new']['maildir']),LOGLEVEL_DEBUG);
+
+			//* This is to fix the maildrop quota not being rebuilt after the quota is changed.
+			if($mail_config['pop3_imap_daemon'] != 'dovecot') {
+				if(is_dir($maildomain_path)) exec("su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']); // Avoid maildirmake quota bug, see debian bug #214911
+				$app->log('Created Maildir: '."su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG);
+			}
+		}
+		
+		if(!is_dir($data['new']['maildir'].'/.Sent')) {
+			//exec("su -c 'maildirmake -f Sent ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']);
+			//$app->log('Created submaildir Sent: '."su -c 'maildirmake -f Sent ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG);
+			$app->system->maildirmake($maildomain_path,$mail_config['mailuser_name'],'Sent');
+		}
+		if(!is_dir($data['new']['maildir'].'/.Drafts')) {
+			//exec("su -c 'maildirmake -f Drafts ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']);
+			//$app->log('Created submaildir Drafts: '."su -c 'maildirmake -f Drafts ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG);
+			$app->system->maildirmake($maildomain_path,$mail_config['mailuser_name'],'Drafts');
+		}
+		if(!is_dir($data['new']['maildir'].'/.Trash')) {
+			//exec("su -c 'maildirmake -f Trash ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']);
+			//$app->log('Created submaildir Trash: '."su -c 'maildirmake -f Trash ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG);
+			$app->system->maildirmake($maildomain_path,$mail_config['mailuser_name'],'Trash');
+		}
+		if(!is_dir($data['new']['maildir'].'/.Junk')) {
+			//exec("su -c 'maildirmake -f Junk ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']);
+			//$app->log('Created submaildir Junk: '."su -c 'maildirmake -f Junk ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG);
+			$app->system->maildirmake($maildomain_path,$mail_config['mailuser_name'],'Junk');
+		}
+		
+		//* Set the maildir quota
+		if(is_dir($data['new']['maildir'].'/new') && $mail_config['pop3_imap_daemon'] != 'dovecot') {
+			if($data['new']['quota'] > 0) {
+				if(is_dir($data['new']['maildir'])) exec("su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($data['new']['maildir'])."' ".$mail_config['mailuser_name']);
+				$app->log('Set Maildir quota: '."su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($data['new']['maildir'])."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG);
+			}
+		}
+		
+		//* Send the welcome email message
+		if(file_exists($conf['rootpath'].'/conf-custom/mail/welcome_email_'.$conf['language'].'.txt')) {
+			$lines = file($conf['rootpath'].'/conf-custom/mail/welcome_email_'.$conf['language'].'.txt');
+		} elseif(file_exists($conf['rootpath'].'/conf-custom/mail/welcome_email_en.txt')) {
+			$lines = file($conf['rootpath'].'/conf-custom/mail/welcome_email_en.txt');
+		} elseif(file_exists($conf['rootpath'].'/conf/mail/welcome_email_'.$conf['language'].'.txt')) {
+			$lines = file($conf['rootpath'].'/conf/mail/welcome_email_'.$conf['language'].'.txt');
+		} else {
+			$lines = file($conf['rootpath'].'/conf/mail/welcome_email_en.txt');
+		}
+		
+		//* Get from address
+		$parts = explode(':',trim($lines[0]));
+		unset($parts[0]);
+		$welcome_mail_from  = implode(':',$parts);
+		unset($lines[0]);
+		
+		//* Get subject
+		$parts = explode(':',trim($lines[1]));
+		unset($parts[0]);
+		$welcome_mail_subject  = implode(':',$parts);
+		unset($lines[1]);
+		
+		//* Get message
+		$welcome_mail_message = trim(implode($lines));
+		unset($tmp);
+		
+		$mailHeaders      = "MIME-Version: 1.0" . "\n";
+		$mailHeaders     .= "Content-type: text/plain; charset=utf-8" . "\n";
+		$mailHeaders     .= "Content-Transfer-Encoding: 8bit" . "\n";
+		$mailHeaders     .= "From: $welcome_mail_from" . "\n";
+		$mailHeaders     .= "Reply-To: $welcome_mail_from" . "\n";
+		$mailTarget       = $data["new"]["email"];
+		$mailSubject      = "=?utf-8?B?".base64_encode($welcome_mail_subject)."?=";
+
+		mail($mailTarget, $mailSubject, $welcome_mail_message, $mailHeaders);
 		
 	}
 	
@@ -91,33 +201,123 @@
 		global $app, $conf;
 		
 		// get the config
-		$app->uses("getconf");
-		$mail_config = $app->getconf->get_server_config($conf["server_id"], 'mail');
+		$app->uses('getconf,system');
+		$mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail');
+
+		// convert to lower case - it could cause problems if some directory above has upper case name
+		// $data['new']['maildir'] = strtolower($data['new']['maildir']);
 		
 		// Create the maildir, if it does not exist
+		/*
 		if(!is_dir($data['new']['maildir'])) {
-			exec('mkdir -p '.escapeshellcmd($data['new']['maildir']));
-			exec('chown '.$mail_config['mailuser_name'].':'.$mail_config['mailuser_group'].' '.escapeshellcmd($data['new']['maildir']));
+			mkdir(escapeshellcmd($data['new']['maildir']), 0, true);
+			chown(escapeshellcmd($data['new']['maildir']), $mail_config['mailuser_name']);
+			chgrp(escapeshellcmd($data['new']['maildir']), $mail_config['mailuser_group']);
 			$app->log('Created Maildir: '.$data['new']['maildir'],LOGLEVEL_DEBUG);
+		}
+		*/
+		
+		$maildomain_path = $data['new']['maildir'];
+		$tmp_basepath = $data['new']['maildir'];
+		$tmp_basepath_parts = explode('/',$tmp_basepath);
+		unset($tmp_basepath_parts[count($tmp_basepath_parts)-1]);
+		$base_path = implode('/',$tmp_basepath_parts);
+
+		//* Create the mail domain directory, if it does not exist
+		if(!empty($base_path) && !is_dir($base_path)) {
+			//exec("su -c 'mkdir -p ".escapeshellcmd($base_path)."' ".$mail_config['mailuser_name']);
+			$app->system->mkdirpath($base_path, 0700, $mail_config['mailuser_name'], $mail_config['mailuser_group']);
+			$app->log('Created Directory: '.$base_path,LOGLEVEL_DEBUG);
+		}
+		
+		// Dovecot uses a different mail layout with a separate 'Maildir' subdirectory.
+		if($mail_config['pop3_imap_daemon'] == 'dovecot') {
+			$app->system->mkdirpath($maildomain_path, 0700, $mail_config['mailuser_name'], $mail_config['mailuser_group']);
+			$app->log('Created Directory: '.$base_path,LOGLEVEL_DEBUG);
+			$maildomain_path .= '/Maildir';
+		}
+		
+		//* When the mail user dir exists but it is not a valid maildir, remove it
+		if(!empty($maildomain_path) && is_dir($maildomain_path) && !is_dir($maildomain_path.'/new') && !is_dir($maildomain_path.'/cur')) {
+			exec("su -c 'rm -rf ".escapeshellcmd($data['new']['maildir'])."' vmail");
+			$app->log('Removed invalid maildir and rebuild it: '.escapeshellcmd($data['new']['maildir']),LOGLEVEL_WARN);
+		}
+
+		//* Create the maildir, if it doesn not exist, set permissions, set quota.
+		if(!empty($maildomain_path) && !is_dir($maildomain_path.'/new')) {
+			//exec("su -c 'maildirmake ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']);
+			//$app->log("Created Maildir "."su -c 'maildirmake ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG);
+			$app->system->maildirmake($maildomain_path,$mail_config['mailuser_name']);
+
+			exec('chown -R '.$mail_config['mailuser_name'].':'.$mail_config['mailuser_group'].' '.escapeshellcmd($data['new']['maildir']));
+			$app->log('Set ownership on '.escapeshellcmd($data['new']['maildir']),LOGLEVEL_DEBUG);
+			//* This is to fix the maildrop quota not being rebuilt after the quota is changed.
+			if($mail_config['pop3_imap_daemon'] != 'dovecot') {
+				if($data['new']['quota'] > 0) {
+					if(is_dir($maildomain_path)) exec("su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']); // Avoid maildirmake quota bug, see debian bug #214911
+					$app->log('Updated Maildir quota: '."su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG);
+				} else {
+					if(file_exists($data['new']['maildir'].'/maildirsize')) unlink($data['new']['maildir'].'/maildirsize');
+					$app->log('Set Maildir quota to unlimited.',LOGLEVEL_DEBUG);
+				}
+			}
+		}
+		
+		if(!is_dir($data['new']['maildir'].'/.Sent')) {
+			//exec("su -c 'maildirmake -f Sent ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']);
+			//$app->log('Created submaildir Sent: '."su -c 'maildirmake -f Sent ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG);
+			$app->system->maildirmake($maildomain_path,$mail_config['mailuser_name'],'Sent');
+		}
+		if(!is_dir($data['new']['maildir'].'/.Drafts')) {
+			//exec("su -c 'maildirmake -f Drafts ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']);
+			//$app->log('Created submaildir Drafts: '."su -c 'maildirmake -f Drafts ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG);
+			$app->system->maildirmake($maildomain_path,$mail_config['mailuser_name'],'Drafts');
+		}
+		if(!is_dir($data['new']['maildir'].'/.Trash')) {
+			//exec("su -c 'maildirmake -f Trash ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']);
+			//$app->log('Created submaildir Trash: '."su -c 'maildirmake -f Trash ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG);
+			$app->system->maildirmake($maildomain_path,$mail_config['mailuser_name'],'Trash');
+		}
+		if(!is_dir($data['new']['maildir'].'/.Junk')) {
+			//exec("su -c 'maildirmake -f Junk ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name']);
+			//$app->log('Created submaildir Junk: '."su -c 'maildirmake -f Junk ".escapeshellcmd($maildomain_path)."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG);
+			$app->system->maildirmake($maildomain_path,$mail_config['mailuser_name'],'Junk');
 		}
 		
 		// Move mailbox, if domain has changed and delete old mailbox
 		if($data['new']['maildir'] != $data['old']['maildir'] && is_dir($data['old']['maildir'])) {
-			exec('mv -f '.escapeshellcmd($data['old']['maildir']).'* '.escapeshellcmd($data['new']['maildir']));
-			if(is_file($data['old']['maildir'].'.ispconfig_mailsize'))exec('mv -f '.escapeshellcmd($data['old']['maildir']).'.ispconfig_mailsize '.escapeshellcmd($data['new']['maildir']));
-			rmdir($data['old']['maildir']);
+			if(is_dir($data['new']['maildir'])) {
+				exec("rm -fr ".escapeshellcmd($data['new']['maildir']));
+				//rmdir($data['new']['maildir']);
+			}
+			exec('mv -f '.escapeshellcmd($data['old']['maildir']).' '.escapeshellcmd($data['new']['maildir']));
+			// exec('mv -f '.escapeshellcmd($data['old']['maildir']).'/* '.escapeshellcmd($data['new']['maildir']));
+			// if(is_file($data['old']['maildir'].'.ispconfig_mailsize'))exec('mv -f '.escapeshellcmd($data['old']['maildir']).'.ispconfig_mailsize '.escapeshellcmd($data['new']['maildir']));
+			// rmdir($data['old']['maildir']);
 			$app->log('Moved Maildir from: '.$data['old']['maildir'].' to '.$data['new']['maildir'],LOGLEVEL_DEBUG);
 		}
 		//This is to fix the maildrop quota not being rebuilt after the quota is changed.
-		exec("su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($data['new']['maildir'])."' ".$mail_config['mailuser_name']);
-		$app->log('Created Maildir: '."su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($data['new']['maildir'])."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG);
+		// Courier Layout
+		if(is_dir($data['new']['maildir'].'/new') && $mail_config['pop3_imap_daemon'] != 'dovecot') {
+			if($data['new']['quota'] > 0) {
+				if(is_dir($data['new']['maildir'])) exec("su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($data['new']['maildir'])."' ".$mail_config['mailuser_name']);
+				$app->log('Updated Maildir quota: '."su -c 'maildirmake -q ".$data['new']['quota']."S ".escapeshellcmd($data['new']['maildir'])."' ".$mail_config['mailuser_name'],LOGLEVEL_DEBUG);
+			} else {
+				if(file_exists($data['new']['maildir'].'/maildirsize')) unlink($data['new']['maildir'].'/maildirsize');
+				$app->log('Set Maildir quota to unlimited.',LOGLEVEL_DEBUG);
+			}
+		}
 	}
 	
 	function user_delete($event_name,$data) {
 		global $app, $conf;
 		
+		// get the config
+		$app->uses("getconf");
+		$mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail');
+		
 		$old_maildir_path = escapeshellcmd($data['old']['maildir']);
-		if(!stristr($old_maildir_path,'..') && !stristr($old_maildir_path,'*') && strlen($old_maildir_path) >= 10) {
+		if($old_maildir_path != $mail_config['homedir_path'] && strlen($old_maildir_path) > strlen($mail_config['homedir_path']) && !stristr($old_maildir_path,'//') && !stristr($old_maildir_path,'..') && !stristr($old_maildir_path,'*') && strlen($old_maildir_path) >= 10) {
 			exec('rm -rf '.escapeshellcmd($old_maildir_path));
 			$app->log('Deleted the Maildir: '.$data['old']['maildir'],LOGLEVEL_DEBUG);
 		} else {
@@ -125,9 +325,43 @@
 		}
 	}
 	
+	function domain_delete($event_name,$data) {
+		global $app, $conf;
+		
+		// get the config
+		$app->uses("getconf");
+		$mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail');
+		
+		//* Delete maildomain path
+		$old_maildomain_path = escapeshellcmd($mail_config['homedir_path'].'/'.$data['old']['domain']);
+		if($old_maildomain_path != $mail_config['homedir_path'] && !stristr($old_maildomain_path,'//') && !stristr($old_maildomain_path,'..') && !stristr($old_maildomain_path,'*') && !stristr($old_maildomain_path,'&') && strlen($old_maildomain_path) >= 10  && !empty($data['old']['domain'])) {
+			exec('rm -rf '.escapeshellcmd($old_maildomain_path));
+			$app->log('Deleted the mail domain directory: '.$old_maildomain_path,LOGLEVEL_DEBUG);
+		} else {
+			$app->log('Possible security violation when deleting the mail domain directory: '.$old_maildomain_path,LOGLEVEL_ERROR);
+		}
+		
+		//* Delete mailfilter path
+		$old_maildomain_path = escapeshellcmd($mail_config['homedir_path'].'/mailfilters/'.$data['old']['domain']);
+		if($old_maildomain_path != $mail_config['homedir_path'].'/mailfilters/' && !stristr($old_maildomain_path,'//') && !stristr($old_maildomain_path,'..') && !stristr($old_maildomain_path,'*') && !stristr($old_maildomain_path,'&') && strlen($old_maildomain_path) >= 10 && !empty($data['old']['domain'])) {
+			exec('rm -rf '.escapeshellcmd($old_maildomain_path));
+			$app->log('Deleted the mail domain mailfilter directory: '.$old_maildomain_path,LOGLEVEL_DEBUG);
+		} else {
+			$app->log('Possible security violation when deleting the mail domain mailfilter directory: '.$old_maildomain_path,LOGLEVEL_ERROR);
+		}
+	}
+	
+	function transport_update($event_name,$data) {
+		global $app, $conf;
+		
+		exec($conf['init_scripts'] . '/' . 'postfix reload &> /dev/null');
+		$app->log('Postfix config reloaded ',LOGLEVEL_DEBUG);
+		
+	}
+	
 	
 	
 
 } // end class
 
-?>
\ No newline at end of file
+?>

--
Gitblit v1.9.1