Personally, I like the idea of Maildir, every e-mail is a file. It's very easy for apps to work with Maildir. Also, everyone above is talking about databases, which probably is a fast and nice solution. But communication with the database probably will be kind of messy. Why not just 'map' the mailbox on the filesystem somewhere and use whatever underlying system (database, plain files) you want for the actual storage. Exactly what plan9 is doing. With that, every mail could also easily be split up in headers, body, attachments etc. (I seem to remember they already do that.)
This way, 'transparent compression' can be done, the 'file format' is very easy to use, people can still grep their mail (even copy attachments using normal commands), flags could also be mapped on the filesystem. For delivering mail a probably similar method can be used, perhaps like Maildir, which does fine over NFS.
Ah, it's the entire plan9 'map it on the filesystem'-idea that just seems great to me, why don't we have it in the average BSD or linux?
Personally, I like the idea of Maildir, every e-mail is a file. It's very easy for apps to work with Maildir. Also, everyone above is talking about databases, which probably is a fast and nice solution. But communication with the database probably will be kind of messy. Why not just 'map' the mailbox on the filesystem somewhere and use whatever underlying system (database, plain files) you want for the actual storage. Exactly what plan9 is doing. With that, every mail could also easily be split up in headers, body, attachments etc. (I seem to remember they already do that.)
This way, 'transparent compression' can be done, the 'file format' is very easy to use, people can still grep their mail (even copy attachments using normal commands), flags could also be mapped on the filesystem.
For delivering mail a probably similar method can be used, perhaps like Maildir, which does fine over NFS.
Ah, it's the entire plan9 'map it on the filesystem'-idea that just seems great to me, why don't we have it in the average BSD or linux?