From f382f091aa97d10056b4c433aa55298fece010d4 Mon Sep 17 00:00:00 2001
From: Marius Cramer <m.cramer@pixcept.de>
Date: Wed, 13 Aug 2014 07:16:30 -0400
Subject: [PATCH] Merge remote-tracking branch 'ispc/master'

---
 server/lib/classes/cron.d/100-monitor_email_quota.inc.php |   11 +++++++++++
 1 files changed, 11 insertions(+), 0 deletions(-)

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 62e97b4..5d0c7a0 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,21 @@
 
 		$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')) {
+				exec('doveadm quota 2>&1', $tmp_output, $tmp_retval); // with dovecot 2.2.x 'doveadm quota' is unuseable
+				if ($retval = 64) $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);

--
Gitblit v1.9.1