diff --git a/server/lib/classes/cron.d/500-backup_mail.inc.php b/server/lib/classes/cron.d/500-backup_mail.inc.php
index f95f815a707a5293b87343e28c6b5f11e14199a1..2197251e91a3007d3b41811945401f128613ad18 100644
--- a/server/lib/classes/cron.d/500-backup_mail.inc.php
+++ b/server/lib/classes/cron.d/500-backup_mail.inc.php
@@ -95,13 +95,15 @@ class cronjob_backup extends cronjob {
 						$domain_dir=explode('/',$rec['maildir']); 
 						$_temp=array_pop($domain_dir);unset($_temp);
 						$domain_dir=implode('/',$domain_dir);
-
-						$source_dir=array_pop(explode('/',$rec['maildir']));
+						
+						$parts=explode('/',$rec['maildir']);
+						$source_dir=array_pop($parts);
+						unset($parts);
 
 						//* create archives
 						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 '.$domain_dir.' && zip '.$mail_backup_dir.'/'.$mail_backup_file.' -b /tmp -r '.$source_dir.' > /dev/nul', $tmp_output, $retval);
 						} else {
 							/* Create a tar.gz backup */
 							$mail_backup_file.='.tar.gz';