added database-modifications for mail-backup
2 files modified
1 files added
New file |
| | |
| | | CREATE TABLE `mail_backup` ( |
| | | `backup_id` int(10) unsigned NOT NULL AUTO_INCREMENT, |
| | | `server_id` int(10) unsigned NOT NULL, |
| | | `parent_domain_id` int(10) unsigned NOT NULL, |
| | | `mailuser_id` int(10) unsigned NOT NULL, |
| | | `backup_mode` varchar(64) NOT NULL DEFAULT '', |
| | | `tstamp` int(10) unsigned NOT NULL, |
| | | `filename` varchar(255) NOT NULL, |
| | | `filesize` VARCHAR(10) NOT NULL, |
| | | PRIMARY KEY (`backup_id`) |
| | | ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; |
| | | |
| | | ALTER TABLE `mail_user` ADD `backup_interval` VARCHAR( 255 ) NOT NULL ; |
| | | ALTER TABLE `mail_user` ADD `backup_copies` INT NOT NULL DEFAULT '1'; |
| | |
| | | |
| | | -- -------------------------------------------------------- |
| | | |
| | | -- |
| | | -- Table structure for table `mail_backup` |
| | | -- |
| | | |
| | | CREATE TABLE `mail_backup` ( |
| | | `backup_id` int(10) unsigned NOT NULL AUTO_INCREMENT, |
| | | `server_id` int(10) unsigned NOT NULL, |
| | | `parent_domain_id` int(10) unsigned NOT NULL, |
| | | `mailuser_id` int(10) unsigned NOT NULL, |
| | | `backup_mode` varchar(64) NOT NULL DEFAULT '', |
| | | `tstamp` int(10) unsigned NOT NULL, |
| | | `filename` varchar(255) NOT NULL, |
| | | `filesize` VARCHAR(10) NOT NULL, |
| | | PRIMARY KEY (`backup_id`) |
| | | ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; |
| | | |
| | | -- -------------------------------------------------------- |
| | | |
| | | -- |
| | | -- Table structure for table `mail_content_filter` |
| | | -- |
| | |
| | | `disablelda` enum('n','y') NOT NULL default 'n', |
| | | `disabledoveadm` enum('n','y') NOT NULL default 'n', |
| | | `last_quota_notification` date NULL default NULL, |
| | | `backup_interval` VARCHAR( 255 ) NOT NULL, |
| | | `backup_copies` INT NOT NULL DEFAULT '1', |
| | | PRIMARY KEY (`mailuser_id`), |
| | | KEY `server_id` (`server_id`,`email`), |
| | | KEY `email_access` (`email`,`access`) |
| | |
| | | |
| | | $sql = "SELECT * FROM mail_user WHERE server_id = '".$conf['server_id']."' AND maildir <> ''"; |
| | | $records = $app->db->queryAllRecords($sql); |
| | | /* |
| | | if(is_array($records) && $run_backups) { |
| | | */ |
| | | if(is_array($records)) { |
| | | foreach($records as $rec) { |
| | | //* Do the mailbox backup |
| | |
| | | if($backup_mode == 'userzip') { |
| | | $mail_backup_file.='.zip'; |
| | | exec('cd '.$rec['homedir'].' && zip -b /tmp -r '.$mail_backup_dir.'/'.$mail_backup_file.' '.$source_dir.' > /dev/nul'); |
| | | //exec('cd '.$rec['homedir'].' && zip -b /tmp -r '.$mail_backup_dir.'/'.$mail_backup_file.' '.$source_dir.' > /dev/nul'); |
| | | } else { |
| | | /* Create a tar.gz backup */ |
| | | $mail_backup_file.='.tar.gz'; |
| | |
| | | } else { |
| | | /* Backup failed - remove archive */ |
| | | if(is_file($mail_backup_dir.'/'.$mail_backup_file)) unlink($mail_backup_dir.'/'.$mail_backup_file); |
| | | $app->log($mail_backup_file.' NOK:'.$tmp_output, LOGLEVEL_DEBUG); |
| | | $app->log($mail_backup_file.' NOK:'.implode('',$tmp_output), LOGLEVEL_DEBUG); |
| | | } |
| | | /* Remove old backups */ |
| | | $backup_copies = intval($rec['backup_copies']); |
| | |
| | | } |
| | | /* Remove inactive backups */ |
| | | if($rec['backup_interval'] == 'none') { |
| | | $sql="SELECT * FROM mail_domain WHERE domain = '".$app->db->quote(explode("@",$rec['email'])[1])."'"; |
| | | $domain_rec=$app->db->queryOneRecord($sql); |
| | | /* remove backups from db */ |
| | | $sql = "DELETE FROM mail_backup WHERE server_id = ".$conf['server_id']." AND parent_domain_id = ".$domain_rec['domain_id']." AND mailuser_id = ".$rec['mailuser_id']; |
| | | $app->db->query($sql); |
| | | if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql); |
| | | /* remove archives */ |
| | | $mail_backup_dir = $backup_dir.'/mail'.$rec['sys_userid']; |
| | | $mail_backup_dir = $backup_dir.'/mail'.$domain_rec['domain_id']; |
| | | $mail_backup_file = 'mail'.$rec['mailuser_id'].'_*'; |
| | | if(is_dir($mail_backup_dir)) { |
| | | foreach (glob($mail_backup_dir.'/'.$mail_backup_file) as $filename) { |