diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index cde307ab0ea96be583cf6cdd8e747b309bb8d678..838e3227047e8d9cac9d7996a5e5a61f28833d7d 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -162,101 +162,59 @@ class installer_base {
 	/*
 		Create postfix configuration files
 	*/
+
+    private function process_postfix_config($configfile)
+    {
+        //$configfile = 'mysql-virtual_domains.cf';
+        $config_dir = $this->conf['dist']['postfix']['config_dir'].'/';
+        $full_file_name = $config_dir.$configfile; 
+        //* Backup exiting file
+        if(is_file($full_file_name)){
+            copy($full_file_name, $config_dir.$configfile.'~');
+        }
+        $content = rf('tpl/'.$configfile.'.master');
+        $content = str_replace('{mysql_server_ispconfig_user}', $this->conf['mysql']['ispconfig_user'], $content);
+        $content = str_replace('{mysql_server_ispconfig_password}', $this->conf['mysql']['ispconfig_password'], $content);
+        $content = str_replace('{mysql_server_database}', $this->conf['mysql']['database'], $content);
+        $content = str_replace('{mysql_server_ip}', $this->conf['mysql']['ip'], $content);
+        $content = str_replace('{server_id}', $this->conf['server_id'], $content);
+        wf($full_file_name, $content);
+    }
+
 	
-	function configure_postfix($options = '') {
+	public function configure_postfix($options = '')
+    {
 		global $conf;
-		
-		if(!is_dir($conf["dist"]["postfix"]["config_dir"])) $this->error("The postfix configuration directory ".$conf["dist"]["postfix"]["config_dir"]." does not exist.");
-		
-		// mysql-virtual_domains.cf
-		$configfile = 'mysql-virtual_domains.cf';
-		if(is_file($conf["dist"]["postfix"]["config_dir"].'/'.$configfile)) copy($conf["dist"]["postfix"]["config_dir"].'/'.$configfile,$conf["dist"]["postfix"]["config_dir"].'/'.$configfile.'~');
-		$content = rf("tpl/".$configfile.".master");
-		$content = str_replace('{mysql_server_ispconfig_user}',$conf["mysql"]["ispconfig_user"],$content);
-		$content = str_replace('{mysql_server_ispconfig_password}',$conf["mysql"]["ispconfig_password"],$content);
-		$content = str_replace('{mysql_server_database}',$conf["mysql"]["database"],$content);
-		$content = str_replace('{mysql_server_ip}',$conf["mysql"]["ip"],$content);
-		$content = str_replace('{server_id}',$conf["server_id"],$content);
-		wf($conf["dist"]["postfix"]["config_dir"].'/'.$configfile,$content);
-		
-		// mysql-virtual_forwardings.cf
-		$configfile = 'mysql-virtual_forwardings.cf';
-		if(is_file($conf["dist"]["postfix"]["config_dir"].'/'.$configfile)) copy($conf["dist"]["postfix"]["config_dir"].'/'.$configfile,$conf["dist"]["postfix"]["config_dir"].'/'.$configfile.'~');
-		$content = rf("tpl/".$configfile.".master");
-		$content = str_replace('{mysql_server_ispconfig_user}',$conf["mysql"]["ispconfig_user"],$content);
-		$content = str_replace('{mysql_server_ispconfig_password}',$conf["mysql"]["ispconfig_password"],$content);
-		$content = str_replace('{mysql_server_database}',$conf["mysql"]["database"],$content);
-		$content = str_replace('{mysql_server_ip}',$conf["mysql"]["ip"],$content);
-		$content = str_replace('{server_id}',$conf["server_id"],$content);
-		wf($conf["dist"]["postfix"]["config_dir"].'/'.$configfile,$content);
-		
-		// mysql-virtual_mailboxes.cf
-		$configfile = 'mysql-virtual_mailboxes.cf';
-		if(is_file($conf["dist"]["postfix"]["config_dir"].'/'.$configfile)) copy($conf["dist"]["postfix"]["config_dir"].'/'.$configfile,$conf["dist"]["postfix"]["config_dir"].'/'.$configfile.'~');
-		$content = rf("tpl/".$configfile.".master");
-		$content = str_replace('{mysql_server_ispconfig_user}',$conf["mysql"]["ispconfig_user"],$content);
-		$content = str_replace('{mysql_server_ispconfig_password}',$conf["mysql"]["ispconfig_password"],$content);
-		$content = str_replace('{mysql_server_database}',$conf["mysql"]["database"],$content);
-		$content = str_replace('{mysql_server_ip}',$conf["mysql"]["ip"],$content);
-		$content = str_replace('{server_id}',$conf["server_id"],$content);
-		wf($conf["dist"]["postfix"]["config_dir"].'/'.$configfile,$content);
-		
-		// mysql-virtual_email2email.cf
-		$configfile = 'mysql-virtual_email2email.cf';
-		if(is_file($conf["dist"]["postfix"]["config_dir"].'/'.$configfile)) copy($conf["dist"]["postfix"]["config_dir"].'/'.$configfile,$conf["dist"]["postfix"]["config_dir"].'/'.$configfile.'~');
-		$content = rf("tpl/".$configfile.".master");
-		$content = str_replace('{mysql_server_ispconfig_user}',$conf["mysql"]["ispconfig_user"],$content);
-		$content = str_replace('{mysql_server_ispconfig_password}',$conf["mysql"]["ispconfig_password"],$content);
-		$content = str_replace('{mysql_server_database}',$conf["mysql"]["database"],$content);
-		$content = str_replace('{mysql_server_ip}',$conf["mysql"]["ip"],$content);
-		$content = str_replace('{server_id}',$conf["server_id"],$content);
-		wf($conf["dist"]["postfix"]["config_dir"].'/'.$configfile,$content);
-		
-		// mysql-virtual_transports.cf
-		$configfile = 'mysql-virtual_transports.cf';
-		if(is_file($conf["dist"]["postfix"]["config_dir"].'/'.$configfile)) copy($conf["dist"]["postfix"]["config_dir"].'/'.$configfile,$conf["dist"]["postfix"]["config_dir"].'/'.$configfile.'~');
-		$content = rf("tpl/".$configfile.".master");
-		$content = str_replace('{mysql_server_ispconfig_user}',$conf["mysql"]["ispconfig_user"],$content);
-		$content = str_replace('{mysql_server_ispconfig_password}',$conf["mysql"]["ispconfig_password"],$content);
-		$content = str_replace('{mysql_server_database}',$conf["mysql"]["database"],$content);
-		$content = str_replace('{mysql_server_ip}',$conf["mysql"]["ip"],$content);
-		$content = str_replace('{server_id}',$conf["server_id"],$content);
-		wf($conf["dist"]["postfix"]["config_dir"].'/'.$configfile,$content);
-		
-		// mysql-virtual_recipient.cf
-		$configfile = 'mysql-virtual_recipient.cf';
-		if(is_file($conf["dist"]["postfix"]["config_dir"].'/'.$configfile)) copy($conf["dist"]["postfix"]["config_dir"].'/'.$configfile,$conf["dist"]["postfix"]["config_dir"].'/'.$configfile.'~');
-		$content = rf("tpl/".$configfile.".master");
-		$content = str_replace('{mysql_server_ispconfig_user}',$conf["mysql"]["ispconfig_user"],$content);
-		$content = str_replace('{mysql_server_ispconfig_password}',$conf["mysql"]["ispconfig_password"],$content);
-		$content = str_replace('{mysql_server_database}',$conf["mysql"]["database"],$content);
-		$content = str_replace('{mysql_server_ip}',$conf["mysql"]["ip"],$content);
-		$content = str_replace('{server_id}',$conf["server_id"],$content);
-		wf($conf["dist"]["postfix"]["config_dir"].'/'.$configfile,$content);
-		
-		// mysql-virtual_sender.cf
-		$configfile = 'mysql-virtual_sender.cf';
-		if(is_file($conf["dist"]["postfix"]["config_dir"].'/'.$configfile)) copy($conf["dist"]["postfix"]["config_dir"].'/'.$configfile,$conf["dist"]["postfix"]["config_dir"].'/'.$configfile.'~');
-		$content = rf("tpl/".$configfile.".master");
-		$content = str_replace('{mysql_server_ispconfig_user}',$conf["mysql"]["ispconfig_user"],$content);
-		$content = str_replace('{mysql_server_ispconfig_password}',$conf["mysql"]["ispconfig_password"],$content);
-		$content = str_replace('{mysql_server_database}',$conf["mysql"]["database"],$content);
-		$content = str_replace('{mysql_server_ip}',$conf["mysql"]["ip"],$content);
-		$content = str_replace('{server_id}',$conf["server_id"],$content);
-		wf($conf["dist"]["postfix"]["config_dir"].'/'.$configfile,$content);
-		
-		// mysql-virtual_client.cf
-		$configfile = 'mysql-virtual_client.cf';
-		if(is_file($conf["dist"]["postfix"]["config_dir"].'/'.$configfile)) copy($conf["dist"]["postfix"]["config_dir"].'/'.$configfile,$conf["dist"]["postfix"]["config_dir"].'/'.$configfile.'~');
-		$content = rf("tpl/".$configfile.".master");
-		$content = str_replace('{mysql_server_ispconfig_user}',$conf["mysql"]["ispconfig_user"],$content);
-		$content = str_replace('{mysql_server_ispconfig_password}',$conf["mysql"]["ispconfig_password"],$content);
-		$content = str_replace('{mysql_server_database}',$conf["mysql"]["database"],$content);
-		$content = str_replace('{mysql_server_ip}',$conf["mysql"]["ip"],$content);
-		$content = str_replace('{server_id}',$conf["server_id"],$content);
-		wf($conf["dist"]["postfix"]["config_dir"].'/'.$configfile,$content);
-		
-		// Changing mode and group of the new created config files.
+		$config_dir = $this->conf['dist']['postfix']['config_dir'];
+		if(!is_dir($config_dir)){
+            $this->error("The postfix configuration directory '$config_dir' does not exist.");
+        }
+        
+		//* mysql-virtual_domains.cf
+        $this->process_postfix_config('mysql-virtual_domains.cf');
+
+		//* mysql-virtual_forwardings.cf
+        $this->process_postfix_config('mysql-virtual_forwardings.cf');
+
+		//* mysql-virtual_mailboxes.cf
+        $this->process_postfix_config('mysql-virtual_mailboxes.cf');
+
+		//* mysql-virtual_email2email.cf
+        $this->process_postfix_config('mysql-virtual_email2email.cf');
+
+		//* mysql-virtual_transports.cf
+        $this->process_postfix_config('mysql-virtual_transports.cf');
+
+		//* mysql-virtual_recipient.cf
+        $this->process_postfix_config('mysql-virtual_recipient.cf');
+
+		//* mysql-virtual_sender.cf
+        $this->process_postfix_config('mysql-virtual_sender.cf');
+
+		//* mysql-virtual_client.cf
+        $this->process_postfix_config('mysql-virtual_client.cf');
+
+		//* Changing mode and group of the new created config files.
 		caselog("chmod o= ".$conf["dist"]["postfix"]["config_dir"]."/mysql-virtual_*.cf* &> /dev/null", __FILE__, __LINE__,"chmod on mysql-virtual_*.cf*","chmod on mysql-virtual_*.cf* failed");
 		caselog("chgrp ".$conf["dist"]["postfix"]["groupname"]." ".$conf["dist"]["postfix"]["config_dir"]."/mysql-virtual_*.cf* &> /dev/null", __FILE__, __LINE__,"chgrp on mysql-virtual_*.cf*","chgrp on mysql-virtual_*.cf* failed");