Last Modified 2005-11-15 by Guest

To enable quota using unix 'quota' command.

Enable Quota on your server, assign the required quota to all users in /home folder.

Add the following lines in your horde/imp/config/servers.php as a part of mail server configuration.

    'quota' => array(

    'driver' => 'command',

      'params' => array(

         'quota_path' => '/usr/bin/quota',

          'grep_path'  => '/bin/grep'



Here is another lengthy hack that displays quota on a server not supporting quota, like dovecot or any mail server without using the built in quota feature(If you find this simpler).

Edit your /etc/sudoer, add the following lines. Replace apache with whatever your httpd/apache user is. RHEL/Fedora user is apache.

apache  ALL = NOPASSWD: /usr/bin/du

apache ALL = NOPASSWD: /bin/ls

create a folder 'quota' on your server '/' partition

mkdir /quota

to assign quota to any user

echo "10000" > /quota/username

Change permissions of /quota folder and all the files created in it to allow apache to read it.

This would give 10MB quota to a user. Give whatever you wish to assign.

Create the following file





    $usage = `sudo du -s /home/$user/mail | cut -d "/" -f 1` + `sudo du -s /var/spool/mail/$user | cut -d "/" -f 1` ;

    $usedmb = round($usage / 1000);

    $quota = `cat /quota/$user`+ 1;

    $quotamb = round($quota / 1000);

    $percent = round($usage * 100 / $quota);

        if ($quota > 1) {

             echo '<table width="100%" border="0" cellpadding="0" cellspacing="0"><tr><td class=

"item"><table border="0" cellspacing="0" cellpadding="0" width="100%"><tr>';

             echo '<td align="left" class="header">Login: ' .  $user . '</td>';

             echo '<td align="right" class="header">';

             echo "Quota Used $usedmb MB of $quotamb MB ($percent %)";

             echo '</td></tr></table></td></tr></table>';


if ($percent >= 100 && $quota > 2) {

             echo '<script language="JavaScript" type="text/javascript"><!--


// -->


if ($percent >= 80 && $quota > 2) {

             echo '<script language="JavaScript" type="text/javascript"><!--

alert("You are nearing your mailbox quota limit, please delete & purge

emails to avoid any inconvinience.")

// -->



Change the above reflecting your mailserver's folder locations. Above is for dovecot on RHEL 3, with mails in /home/username/mail and /var/spool/mail/username.

Add this in horde/imp/templates/common-headers.inc (line 27, 28,29)

$page_title = $GLOBALS['registry']->get('name');

if (!empty($title)) $page_title .= ' :: ' . $title;

if (!empty($refresh_time) && !empty($refresh_url)) {

    echo "<meta http-equiv="refresh" content="$refresh_time;url=$refresh_url" />n";




<title><?php echo htmlspecialchars($page_title) ?></title>

//--->Add the following here <----


include_once HORDE_BASE . '/quota.php';



<link href="<?php echo $GLOBALS['registry']->getImageDir()?>/favicon.ico" rel="SHORTCUT ICON" />

<?php if (isset($mailbox_url)): ?>

Do let me know if this was useful or send in any improvements/suggestions.

jigish dot gohil at gmail dot com