I'm looking to setup an email server which can accommodate hundreds of accounts with "unlimited" email space. I understand that there is no such thing as unlimited but I am under the impression I can RAID several disks (or a bunch servers) as I go.
To demonstrate my need: I could start with a single server with 500GB space now I need provisions or a plan for additional x number of 500GBs drives in the future (all seen as one big drive). I do not know how to properly do this or if this is the best approach to my goal. Your advice will be very much appreciated.
To put simply: How do I best handle expected email storage expansion in the future?
As others have pointed out, nothing is infinite. All storage offerings have their limits, and you should set limits you are comfortable with as a sysadmin.
If you're only comfortable with a single-mail-server architecture then build a box with lots of disk, set a max number of accounts and max mailbox size per account, and let those limits be known.
If you're comfortable with scaling up a major storage/front end architecture be up front abut the costs, the time involved to design and build it, and the limitations that will be present even in that sort of environment.
If your limits do not work for your company/clients seek out alternative ways of providing the services they require (like having Google host their email).
A view from inside email hosting
Starting simply: One server. One GIANT disk array, and say 1000 users.
Some users will have 1 email in their inbox. Some will have one million.
Some will use one megabyte of storage. Others will chew up gigabytes of your disk.
So, we have 1TB of disk (1000GB), and we expect the server to host 1000 users. We can commit 1GB of disk to each user. This is reasonable in that (a) it's a lot of space for email, and (b) we can quota each user at their limit, and if every user hits the limit they still won't affect the other users.
But one day our users want MORE space -- Aunt May is getting videos of the grandkids, and she's hitting her storage limit. Since she (and all our other users) refuse to delete any email we have to do something, but we can't afford more disk.
What do we do? Easy: Just increase everyone's limit to 2GB. With the same disk. We can get away with this overcommitment because for every Aunt May getting 2GB of video data stuffed in her inbox there's an Uncle Joe who never gets any email and is only using 1-2K of disk space. Our users are happy, and we didn't spend any more money (this is what gmail, hotmail, etc. do).
Of course the day will come when we run out of space on this server. Maybe we have a few too many Aunt May's, or maybe we sold more accounts and need to put them somewhere. What do we do now?!?
Well there are two options:
Buy more disk
This is the easy solution -- Add more disks to the server and split the mail stores up between them (or if you're using ZFS or something else that lets you grow a partition just make the mail store bigger).
Buy more servers
This one is a bit more complicated -- basically just buy a new server and put your new users on the new box.
It doesn't solve the problem of "Too many Aunt May's hogging the disk" though -- for that you would need to move some of them to the new machine (which can be inconvenient). It does solve workload issues for the server by splitting up the incoming/outgoing mail into blocks by user (though there's no guarantee the workload is evenly distributed).
Invest in a proper storage and processing architecture This one is the best (and most expensive) option: Throw in a SAN, and connect several head-end mail servers to it. As you fill the SAN you keep adding disks and extending the partitions (just like in "Buy more disks" above), and as the inbound/outbound mail workload climbs you'll add more head-end servers (behind a load-balancer of some kind) to deal with the mail volume.
The last bullet above is is where you can expect to have to get to if you take hosting email seriously. Note that the rabbit hole goes further, because at that point you may need to deal with redundancy.
One mail server is never enough for something like this. You need a metric buttload of them, connected to a storage back-end the size of the Pacific Ocean to feed your user's voracious appetites for disk space / mail storage. It is a substantial investment in design, equipment and maintenance.
My recommendation as someone who has been there and done that? Leave the mail hosting to Google if at all possible.
There's no standard recipe for this, but I think it's safe to assume that, if you want to scale to Big Numbers for users and/or mailbox sizes, "an email server" is not going to be enough. Providing this kind of service requires a lot more thought, resources and MONEY than setting up some standard email package with a big disk.