I'm not sure what the best way to handle this is, though. My thinking has always revolved around handling huge messages without causing resource starvation. So a gigabyte email should be parsed in pieces and not all allocated into memory at once. But a four megabyte email might as well go into memory. You'd have to get a heck of a lot of people each reading a four meg email at once for that to be a major problem. But, since we want DBMail to be properly scalable to really large installations, it is a distinct possibility to have that many people each reading an email that large (scenario: the CEO sounds out his latest crazy plan in a four meg powerpoint, and everyone in the whole company starts pounding on the mail server to retrieve their copy.)
OTOH, a message which consists of multiple block will (almost) always be fetched from the database completely anyway. With that in mind, it wouldn't matter if the message data is in 2 blocks (header and body) instead of > 2 blocks.
I can remember something about the maximum size for a TEXT field in MySQL being the original reason for the choice of splitting the message into parts. I'll ask Eelco and Roel, they should know this.
Ilja