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 ? > > > >