qmail at top-consulting.net
2011-Jul-19 17:16 UTC
[Dovecot] Dovecot + Vpopmail quota issues
I can't get dovecot to ignore a certain directory/namespace when calculating quotas. I am running dovecot 1.2.16 with vpopmail configured for quotas. I use the dot (.) as my separator and my user structure is as follows: ../domain.com/user/Maildir for all the user directories I also have for each user: ../domain.com/user/Maildir/Archive which is a symlink to a NFS mounted partition that holds read-only archives In dovecot.conf I have defined them as follows: mail_location = maildir:~/Maildir namespace private { separator = . prefix = ARCHIVE. inbox = no hidden = yes list = yes location = maildir:~/Maildir/Archive } namespace private { separator = . prefix inbox = yes } This works very well, in as much as I see the Archive namespace and its folders. The problem arises in the fact that Dovecot insists on calculating the 'Archive' namespace/directory storage towards the total storage used. My Quota configuration is as follows: auth default { mechanisms = plain login digest-md5 cram-md5 passdb vpopmail { args = webmail=192.168.1.12 } userdb vpopmail { args = quota_template=quota_rule3=*:backend=%q } ... } plugin { quota = maildir quota_rule = ?:storage=0 quota_rule2 = Archive:ignore quota_rule3 = ARCHIVE:ignore } From what I've read, this is supposed to use the maildirsize file when available or otherwise return no quota. It worked just fine before this new Archive namespace. For a certain user, vpopmail writes the 'maildirsize' file in ../domain.com/user/Maildir/maildirsize and it contains the correct value ( without the /Archive directory ). The problem is that for some reason, something ( I suspect dovecot ) writes a new maildirsize file in ../domain.com/user/Maildir/Archive/maildirsize which also contains the size of Archive. Subsequently, Dovecot adds the two of them up and usually throws me over quota. To test, I have emptied the maildirsize file under Archive and changed its owner to root (perms are 755 ) so that nobody but root can write to it. Dovecot complained right away about it: Jul 19 12:55:21 pop1 dovecot: IMAP(user at domain.com): open(/home/vpopmail/domains/B/domain.com/user/Maildir/Archive/maildirsize) failed: Permission denied Despite passing the quota responsibility to vpopmail it seems that Dovecot still tries to update that file. And finally the question... How do I get dovecot to not calculate a quota for that directory/namespace ?
qmail at top-consulting.net
2011-Jul-19 19:57 UTC
[Dovecot] Dovecot + Vpopmail quota issues
I made a bit of headway but not too much. I discovered that the order of the namespaces is very important. The reason why dovecot was updating the maildirsize file under Archive was because the Archive namespace was defined first. I now define the root inbox first and Archive second and dovecot properly updates the same maildirsize file as vpopmail in domain.com/user/Maildir/maildirsize However, there are two key differences still: 1. Vpopmail does not calculate the storage under domain.com/user/Maildir/Archive when it updates the maildirsize file. This is exactly what I want. Vpopmail reports the proper size. 2. Dovecot DOES calculate the storage taken up by: domain.com/user/Maildir/Archive despite the fact that '/' is not my default separator. I think vpopmail acts properly and calculates the file sizes in properly formatted maildirs. For some reason dovecot does not .. or am I wrong ? I've tried many configs to get dovecot to ignore the Archive folder but none of them works. The only thing that works is if I specifically write the name of each folder in the quota ignore definitions. If my structure is as follows: domain.com/user/Maildir/Archive/.Folder1/cur domain.com/user/Maildir/Archive/.Folder1/new domain.com/user/Maildir/Archive/.Folder1/tmp Folder1 is a proper maildir and Archive is a \NoSelect folder. I want dovecot quota to ignore ALL the possible folders under Archive without mentioning them one by one. This works for example: quota = maildir quota_rule = ?:storage=0 quota_rule2 = Folder1:ignore This does not: quota = maildir quota_rule = ?:storage=0 quota_rule2 = Archive:ignore How can I get dovecot to ignore the quota for all the possible folders under Archive ? is different fr Quoting qmail at top-consulting.net:> I can't get dovecot to ignore a certain directory/namespace when > calculating quotas. > > > I am running dovecot 1.2.16 with vpopmail configured for quotas. > > I use the dot (.) as my separator and my user structure is as follows: > > ../domain.com/user/Maildir for all the user directories > > I also have for each user: > > ../domain.com/user/Maildir/Archive which is a symlink to a NFS > mounted partition that holds read-only archives > > In dovecot.conf I have defined them as follows: > > > mail_location = maildir:~/Maildir > > namespace private { > separator = . > prefix = ARCHIVE. > inbox = no > hidden = yes > list = yes > location = maildir:~/Maildir/Archive > } > > namespace private { > separator = . > prefix > inbox = yes > } > > This works very well, in as much as I see the Archive namespace and > its folders. > > The problem arises in the fact that Dovecot insists on calculating > the 'Archive' namespace/directory storage towards the total storage > used. > > My Quota configuration is as follows: > > auth default { > mechanisms = plain login digest-md5 cram-md5 > > passdb vpopmail { > args = webmail=192.168.1.12 > } > > userdb vpopmail { > args = quota_template=quota_rule3=*:backend=%q > } > ... > } > > plugin { > quota = maildir > quota_rule = ?:storage=0 > quota_rule2 = Archive:ignore > quota_rule3 = ARCHIVE:ignore > } > > From what I've read, this is supposed to use the maildirsize file > when available or otherwise return no quota. It worked just fine > before this new Archive namespace. > > For a certain user, vpopmail writes the 'maildirsize' file in > ../domain.com/user/Maildir/maildirsize and it contains the correct > value ( without the /Archive directory ). > > The problem is that for some reason, something ( I suspect dovecot ) > writes a new maildirsize file in > ../domain.com/user/Maildir/Archive/maildirsize which also contains > the size of Archive. Subsequently, Dovecot adds the two of them up > and usually throws me over quota. > > To test, I have emptied the maildirsize file under Archive and > changed its owner to root (perms are 755 ) so that nobody but root > can write to it. Dovecot complained right away about it: > > Jul 19 12:55:21 pop1 dovecot: IMAP(user at domain.com): > open(/home/vpopmail/domains/B/domain.com/user/Maildir/Archive/maildirsize) > failed: Permission denied > > Despite passing the quota responsibility to vpopmail it seems that > Dovecot still tries to update that file. > > And finally the question... How do I get dovecot to not calculate a > quota for that directory/namespace ? > > > >