Cleaning up from an IMAP server failure
blog.fastmail.fm
blog.fastmail.fm
At Google, I felt that there's no human I could ask, at Microsoft (Outlook.com) there're the incredibly simple, low-paid humanoid robots pasting stupid 'answers' on answers.microsoft.com (things like I should try clearing the browser cache, uninstall plugins, etc. when there's something wrong on their side).
And it needs to be mentioned, they're the gold standard for how a private company interacts and supports open source projects. I used to run a large Cyrus installation, and their contributions to the project as well as the time and effort they put into supporting Cyrus users on the mailing list is exemplary and something I wish happened more often. I'm pretty sure the large majority of their work on Cyrus for FM has been contributed directly back, they were instrumental (Bron's work in particular) in many of Cyrus' killer features and its vastly improved and expanded feature set over the past several significant releases.
If you're looking for a supremely talented and caring bunch of people to look after your email I cannot recommend anyone else. If you need proof, go read the Cyrus mailing list archives where you can actually see how they work with the community, improve the product and make excellent technical and tactical decisions about how a large email service provider should be run.
One other neat thing with Fastmail is they give you the ability to use your storage for more than just email [1]. No to mention it's even accessible via FTP/WebDAV.
https://github.com/brong/cyrus-imapd
Their public communication, blog, old Slashdot interviews, everything else are a gold standard to me. Bought a VPS to stand up my own backup Cyrus server.
By the way, Cyrus IMAP server has a beta CalDAV and CardDAV integration, where your contacts and calendars are stored in special IMAP folders and then pulled into the proper protocol. Through Fastmail I learned this might be the best self-contained communication platform for me and others. Just a FYI.
http://www.cyrusimap.org/mediawiki/index.php/Downloads#IMAP_...
http://blog.fastmail.fm/2013/09/25/exciting-news-fastmail-st...
So I have high hopes that they'll continue to improve all that core functionality goodness.
The CardDAV and CalDAV stuff has been around for ages in Cyrus, but it's always needed a lot of work. I'm happy that the FM team has decided to take it on, even in beta it's been working wonderfully for me.
I remember attempting to use KOLAB groupware, which was based on Cyrus, but instead of improving the crappy CalDAV functionality (at the time) of Cyrus, they simply saved all the calendar objects as messages in special folders. Not necessarily a bad thing, but then they made the unwise decision to store the calendar data in a binary blob inside the message, meaning that they couldn't leverage IMAP/Cyrus' native indexing. Which meant that every message in the calendar folder had to be fetched, downloaded and parsed by the client for every view. Ugh, what a disaster. It basically fell over on calendars with more than a couple dozen events on them.
[1]: http://gmailblog.blogspot.co.at/2011/02/gmail-back-soon-for-...
I guess that could be modified to "price..quality..speed..personal attention pick any three".
To me the personal attention factor always ranks very high. I have found many cases where someone who cares and communicates go much further than someone who knows more and doesn't care. [1]
[1] This is simplistic of course and doesn't take into account many different factors and I use it as a rough guideline.
I wrote a blog post about switching from Gmail to FastMail last summer that may be of interest to anyone considering switching: http://www.maxmasnick.com/2013/07/19/fastmail/ (HN discussion: https://news.ycombinator.com/item?id=6069944).
- Random corruption is a thing
- Always make sure that your replication can't accidently screw you:
- Replication doesn't replace a separate backup system
- A version of your backup data must become immutable at some point
- Make sure you monitor the right metrics of your system.
And most importantly:Avoid unnecessary noise in your monitoring channel(s).
I keep preaching this; people think they can keep on top of a noisy log, but the ugly truth is that your brain becomes numb and you will miss things. At the very least, you begin to tune out since "it's not that important".
edit:fmt
At least have an automated restore scheduled, and have it report to you any error. Have that process run what-ever verification tools your DB supports to as this will catch some corruption that won't be seen in a simple restore.
Better still (though this is very app dependent so difficult to create general rules for) do some actual data verification. If you app keeps an audit trail, keep a copy of the last backup around and compare anything that should not have changed between them (as there are no relevant audit entries) still identical.
All this serves to increase the confidence that your backup will save you if/when disaster strikes.
[1] http://www.emaildiscussions.com/showpost.php?p=568675&postco...
Poor imap21.