With my (seemingly endless) work on mail servers, I ran across a couple good pieces of information regarding the format and structure of Maildir’s.
A description of the folders, how to write messages to a maildir, the basic structure, etc:
http://www.courier-mta.org/maildir.html
Essentially, each filter has a ‘new’, ‘cur’, and ‘tmp’ directory. tmp is used when writing the message, and then the file is immediately moved to the ‘new’ directory, and the S=xxxx part added with the file size in bytes.  Once a file is read by a mail client, it is moved to the ‘cur’ directory, a ‘:2,<FLAGS>’ parameter is added, where the flags can be used to mark the message as read, replied, deleted, etc
The format and ways to use the maildirsize file:
http://inter7.com/courierimap/README.maildirquota.htmlÂ
In the maildirsize file, the first line contains the quota size in the format xxxS,yyyC where xxx is the total size in bytes, and yyy is the number of messages.  So a quota of 1048576S,1000C would be either 1 MB or 1000 messages (whichever occurs first).  Then, each line after that contains two numbers. The first is a size in bytes, and the second is the number of messages.
Each time a new message is saved, a new line is added to maildirsize with its size. The total quota is calculated by totaling up the two columns.  Occasionally, the maildirsize file is recalculated from scratch.