[Dovecot] maildir++ specification compliance.

Stephan Bosch sirius at drunksnipers.com
Fri Jul 14 23:05:17 EEST 2006


Apps Lists schreef:
> I was doing some testing this morning and realized Dovecot RC2 isn't fully
> compliant with the maildir++ specification.
> 
> Most notably, it appears that Dovecot isn't creating a "maildirfolder"
> file (0 byte length) in folders it creates.
> 
>>From http://www.inter7.com/courierimap/README.maildirquota.html
> 
> "Within each subdirectory there's an empty file, maildirfolder. Its
> existence tells the mail delivery agent that this Maildir is a really a
> folder underneath a parent Maildir++."
Yeah, noticed this too. The .dovecot.sieve file in my maildir is 
recognized as a folder when I open my subscription dialog :).

>  While Dovecot shouldn't be creating maildirsize files in each folder (the
> maildirfolder file is there to tell clients to look in .. for a
> maildirsize) ... it should still be able to answer queries about the
> number of messages (count of files in the folder) as well as the total
> size of all messages in that folder (sum of S=xxxx or by stat() on
> individual message files).
Actually this behaviour of dovecot is correct. All (maildir) folders 
currently belong to the same quotaroot and therefore dovecot will report 
the same quota for each folder you query within the same storage. By the 
looks of it, the current quota plugin does support various quota roots 
in general, but the maildir-storage-quota implementation does not.

I gave this some thought in the past. You could add support for multiple 
quota roots to the Maildir specification. The problem is that other mail 
programs won't support it.  If this is implemented, one is (at least 
initially) forced to use the dovecot-lda. One way to implement this is 
by managing a separate maildirsize (e.g. maildirsize.SOMEROOT) file for 
each quotaroot and putting some other file(s) in the maildir specifying 
the structure of the maildir regarding the quotaroot membership of the 
different folders. If this is specified properly we could possibly 
persuade other mail software to support this new feature.

(BTW, stat()'ing or summing the S=xxx names of the files is a relatively 
slow process and that is why the maildirsize file was concieved in the 
first place. So, this would not be a very good idea.)

One could even combine this new feature with the trash expire 
functionality; give folders like 'Trash', 'Junk' or 'Spam' their own 
distinct quotaroot and perform the deletion if the root goes over quota. 
Using the IMAP protocol one could configure this such that the users can 
set their own Trash quota voluntarily (giving them no power over their 
overall quota).

Regards,

Stephan



More information about the dovecot mailing list