diff --git a/server/lib/classes/cron.d/100-monitor_email_quota.inc.php b/server/lib/classes/cron.d/100-monitor_email_quota.inc.php index 62e97b4e33a039a39e720d51b963cddbd356a5e0..d6d55645da00b18283b98866e16bf99850a554d9 100644 --- a/server/lib/classes/cron.d/100-monitor_email_quota.inc.php +++ b/server/lib/classes/cron.d/100-monitor_email_quota.inc.php @@ -77,10 +77,20 @@ class cronjob_monitor_email_quota extends cronjob { $mailboxes = $app->db->queryAllRecords("SELECT email,maildir FROM mail_user WHERE server_id = $server_id"); if(is_array($mailboxes)) { + + //* with dovecot we can use doveadm instead of 'du -s' + $dovecot = false; + if (isset($mail_config['pop3_imap_daemon']) && $mail_config ['pop3_imap_daemon'] = 'dovecot' && is_executable('doveadm')) { + $dovecot = true; + } + foreach($mailboxes as $mb) { $email = $mb['email']; $email_parts = explode('@', $mb['email']); $filename = $mb['maildir'].'/.quotausage'; + if(!file_exists($filename) && $dovecot) { + exec('doveadm quota recalc -u '.$email); + } if(file_exists($filename) && !is_link($filename)) { $quotafile = file($filename); preg_match('/storage.*?([0-9]+)/s', implode('',$quotafile), $storage_value);