I am using vpopmail-5.2.1, courier-imap-2.0, qmail-1.03. I use both courier-
imapd and courier-pop3d instead of qmail-pop3d.

A few days after I migrated my users from an old mail server to my new nfs 
server, users started getting weird quota reulsts on the webmail quota.
vuserinfo reported 0% for the usage although du -sh on the user's maildir 
reported about 3-4 megs. Looking at maildirsize, there was many lines with 
negative values.
telnetting to the imapserver 143, logging in as the user, and issuing "a001 
getquota ROOT" I get also negative USAGE value.

While googling for something related to this problem, I found only one post:

Mr Sam said:
This can happen if mail gets delivered to a mailbox by a delivery agent that 
does not update the quota tracker. 
Solution: use deliverquota or maildrop to deliver mail, and make sure that 
the quota is correctly specified.

This is not the problem for me however. The only programs that deliver to 
maildirs are vdelivermail, maildrop (both compiled with maildirquota support), 
and qmail-local. I know qmail-local doesn't support maildirquota++ but this 
never was a problem, and I confimed it's not the one causing the problem (read 

So looking at the maildirsize file in the maildirs of users having the 
problem, they all had negative values. So I wrote a little shell script (see 
at the end of this message) that finds those mailboxes with bad maildirsize 
files, deletes them, runs /home/vpopmail/bin/vuserinfo -Q [EMAIL PROTECTED] on 
the accounts for which the maildirsize was deleted to recreate it, and then 
sets the proper permission (uid/gid vpopmail/vchkpw).

This solved the problem. Sending mail from local domain to another local 
domain, or from a remote domain to a local domain both seem to reflect the 
_correct_ size now, and instantaneously.
Therefore it's not qmail-local?

I am suspecting it could be that the file sizes changed slightly when moved 
over to the nfs server on a ext3 partition with a 4096 blocksize. The 
filesystem on the old mailserver was ext2 and default blocksize (redhat 6.2).

Could this possibly confuse courier-imap and cause it to put negatives in 
maildirsize? or is it vdelivermail that was confused?

Any thoughts, ideas?

Best Regards,
Tim Hasson

Here is the script I used to fix the maildirsize files:


echo "[*] Finding maildirsize files..."
sizes="`find domains -name maildirsize`"

echo "[*] Finding bad maildirsize files and saving them in badmaildirsize.tmp"

rm badmaildirsize.tmp

for i in $sizes; do
   if [ ! -z "`grep "-" $i | head -1`" ]; then
      echo $i >> badmaildirsize.tmp

echo "[*] Creating [EMAIL PROTECTED] list for whom we recreate maildirsize"

rm mailboxdir.tmp

# get "domain.com/user" from domain/domain.com/user/Maildir/maildirsize
   sed s/domains.//g badmaildirsize.tmp | \
     sed s/.Maildir.maildirsize//g > mailboxdir.tmp

rm fixemail.tmp

#  change domain.com/user to [EMAIL PROTECTED]
mailboxlist="`cat mailboxdir.tmp`"
for mailbox in $mailboxlist; do
   username="`echo $mailbox | sed s#.*/##`"
   domainname="`echo $mailbox | sed s#/.*##`"
   echo "[EMAIL PROTECTED]" >> fixemail.tmp

rm mailboxdir.tmp # we dont need it anymore

echo "[*] Deleting bad maildirsize files"
deletelist="`cat badmaildirsize.tmp`"
for maildirsize in $deletelist; do
   rm $maildirsize

echo "[*] Recreating deleted maildirsize files"
addresses="`cat fixemail.tmp`"
for emailaddress in $addresses; do
   /home/vpopmail/bin/vuserinfo -Q $emailaddress

echo "[*] Setting owner/group vpopmail/vchkpw on maildirsize files"
newmaildirsizefiles="`cat badmaildirsize.tmp`"
for newmaildirsize in $newmaildirsizefiles; do
   chown vpopmail:vchkpw $newmaildirsize

Reply via email to