If you are just getting started as a freelance web designer and developer and are planning on offering hosting for your clients (which you should do), and you have a little bit of linux systems admin experience under your belt, and you feel pretty comfortable setting up a server—I have a little warning for you.
First off, website hosting is no big deal. There are plenty of options available, my very own Net-at-hand included. You can get everything from shared hosts to dedicated servers and they are pretty simple to set up.
Email servers, however, are not quite as simple to set up. My email server has five different pieces of software that all have to be configured to work together, and it is the biggest pain you can imagine. It would be fine if I were setting up a server like this for a living, but I only mess with it every few years. So each time I have to re-educate myself and try to make heads or tails out of a bunch of config files.
This last friday, I found that the version of ClamAV that I had installed was no longer supported. So that link in the chain of programs that make up an email server stopped working so email delivery halted completely. There was no package for my linux distro of choice that would update it like I needed, so I ended up installing everything but the MTA and MDA from source. I spent two days messing with it and fell behind on my real work.
I would have been much better off paying a huge monthly bill for dedicated email hosting than what I am doing. It is done now, and should last me for awhile, but I sure hate it.