April 19, 2014
Why is Email Hosting So Hard?
I’ve hosted this website and several others like it for a long, long time. Along my journey, I’ve lived as a lot of different types of sites, starting off as a virtual domain on someone else’s host, moving to shared servers to being a reseller, and ultimately to dedicated VPSes (and briefly, a dedicated server). I’ve run PHP, Python and Ruby against MySQL or Postgres on Ubuntu, CentOS, and Gentoo through Apache and nginx. I even ran a Half Life server for TF2 and L4D game nights.
But my white whale has been email. It is super hard.
Why? What makes email so much more complicated than it’s sibling services? I can run any of a thousand scripts to bootstrap a LAMP instance on my choice of hosting providers and be serving the net in minutes. But I can’t do the same for email. And, heaven help me if I want virtual domains! Now we’re talking about complex things like a MySQL backend and some custom SQL for Postfix, if we’re lucky. Contacts and Calendar? That’s another story altogether. I can try my hand at Zimbra, but it requires extra connectors for iPhone sync. Maybe SOGo – that’s nice, because it’s written in ObjC, which I make a living writing. But, it doesn’t integrate with mailsieve, which I used to set up rules.
I could always pay for Google Apps or Hosted Exchange, but that’s expensive quick. My first use case is a family shared setup, so that’s 8 users at $5 a month that they don’t even really want, let alone to pay for. My legacy free GApps account doesn’t support ActiveSync, and Outlook doesn’t support CalDAV, so my parents’ machines are out.
I really don’t know what to do. I can hack something together on Digital Ocean (I have before), but I need a fair bit of reliability. I could colo Exchange if the MSDN license supports it, but that’s costly on a few fronts, so maybe I’m better off paying for hosted Exchange. Oh, but I have a few domains that need email, so it has to be cheap.
Guide me, Internet. Suggest what to do here, because I’m at a loss. Reliability is my number 1 requirement, followed by ubiquity on Windows, Mac OS and iPhones. Past that, I’m your humble student.