I'm sick of MS Exchange.

In simple terms, e-mail goes a little something like this:

A client program generates an e-mail message (which is a text file, albeit with the potential for attachments encoded into it). It connects to an outgoing mail server, proves who it is (ideally) and gives it the message. The outgoing server uses the domain of the recipient to find the destination mail server and sends it the message. The destination mail server checks the recipient against its address lists and puts the mail into a mailbox. A client program contacts its incoming mail server looking for new mail, and is sent the message(s) from the mailbox.

For those in confusion about protocols, the connection between the sender and the outgoing server is SMTP, as is the leg from outgoing server to destination server, and the recipient collects from his incoming mail server with POP3 or IMAP.

Anyway, my point was, a mail server has lots of jobs (enough to split them across multiple machines if your operation is large). The mail server I run for my own use is simple, but still divides the basic responsibilities between three different programs: it could be more if I wanted to serve POP3 or fetch mail from other mailboxes that way. Although it sounds like a lot considering 'mail server' sounds like one job, it means that an admin who understands the division of labour knows where to look when something is wrong. I can configure each part independently, and if the worst comes to the worst I can ditch one of the components in favour of one of a range of replacements.

Microsoft Exchange is a huge black box. If there's a part you don't like that's tough, because as far as I can tell apart from the POP3 connector (which is something you shouldn't be using seriously anyway) you can't replace anything. The settings it exposes don't seem complete, although they're sufficiently obscure that I can't really tell. You really need to know what's going on inside, but unless you are an absolute guru that simply isn't going to be the case.

Which brings me to the other thing that bugs me about Microsoft, and a few of the others. Or rather, the communities of their users. In the open source community, people don't have much choice but to make a living by being good at what they do. They prove that they're good by writing software for everyone to see, by documenting that software, or by helping each other out. Unless you're doing something really obscure the information you need is only a web search away (and if you can't find it, perhaps it's time to put something back by working it out and writing it up).
With proprietary software, you pay for the license to use it. Fair enough. You could pay the manufacturer for technical support: also fair enough, some of the time (paying through the nose to use software that isn't finished then paying more to get support on things that should have worked anyway is a bit much, but I'll leave that alone. For now). When you look for help online, you typically find that the world and his dog have realised there's money in support, and they're trying to charge you for their help or make you sign up for their advertisements; you often can't find simple answers like you could for an OSS solution.

Unfortunately, I can't get rid of Exchange: my users rely on its groupware functions and the cost of training them to use something else would be prohibitive. So I just bitch about it occasionally.