+1  A: 

If you use a file-based approach (and this doesn't exclude you from using a database), you could compress and decompress the file(s) you use for persistence when not in use. Since you will be storing simple text, the compression is likely to be significant and the speed decrease would not be all that bad if you do it at intelligently chosen times. Hell, you could even make it an option.

The biggest thing (for me) to consider here is search time. What will you want the users to be able to search? If searching is important, I would probably use a database. My initial approach to the problem would be to store the subject and header information (dates, sender, recipient, etc) in separate columns, and then serialize the entire email object into a binary data column (possibly compressed). This would make full-text searches take longer, but that's to be expected anyway, right?

JoshJordan
TGV
I am not worried about full text searches.
TGV