I've said it before, and I'll say it again: Apple should've picked a simpler mail server for Mac OS X Server -- preferably one that used user-accessible mail files or folders, like UW or Dovecot or Courier (I've only used UW, and it wasn't great, but it was simple, and Apple obviously liked plain files over databases enough to customize Blojsom instead of WordPress).

Somebody in Cupertino decided it was a point of pride that MOSX must be able to handle a large-scale enterprise workload, and they picked software that's cluster capable, but who would choose (very nice) Xserves to provide mail service for tens of thousands of users? Apple isn't even actively pursuing this market, although they assure us clustered Xserves running Xsan over Xserve RAIDs would be fast. No way -- in that market, lack of RAID controller redundancy is an instant deal-breaker, just as lack of redundant power was in pre-Intel Xserves.

If you're going to provide an industrial-strength mail server (intended to be no harder to install and configure than a USENET newsfeed -- yowch!) to Mac users, you need to provide more than 2 buttons for troubleshooting Reconstruct (account) and Repair (database). They have never solved a problem for me.

When these fail, Mac users are out in the cold. Apple's documentation is grossly inadequate for troubleshooting, their fora are not helpful, and their build of Cyrus is just different enough to make things more even complicated than they need to be.

I've had database corruption about 3 times in the past, and eventually writhed my way out of it. This time, my $15 CyberPower UPS (which I liked, as it worked better than my $100 APC & Tripp-Lite UPSes) spontaneously expired Christmas Eve while we were at my parents' house. Feh! When we got back home, it wouldn't turn back on.

Apparently this happened at a poor time, and a message got eaten (INBOX #76641, to be exact). Eudora simply couldn't check my INBOX -- the server died every time. Eventually, I got an informative error from SquirrelMail which helped finger the bad message, copied another message to user/pepper/76641., fixed up ownership, and sacrificed a few Tamagotchi while running /usr/bin/cyrus/bin/reconstruct (I'd love to know who decided on /usr/bin/cyrus/bin) with different guessed arguments, until Eudora started sucking down mail as it's supposed to once again.

That was thoroughly unpleasant. Why can't Cyrus survive a missing message? Why can't it warn about a missing message, or an unreadable/root-owned message?

PS-It doesn't help that syslogd periodically stops logging mail traffic. There's probably a better way to make syslogd work again, but rebooting does the trick. Unfortunately, this means I often have no logs of problems since it dies a little later...


Update: Apple just updated Reconstructing cyrus mailboxes in Mac OS X Server 10.3, 10.4, which provides correct usages for the (very picky) reconstruct command, but no explanation whatsoever.