This is part 1 of a series documenting the migration of a macOS E-Mail server, due to Apple’s announcement in early 2018 that macOS Server will be deprecated.
Many reading this post have probably already read about Apple deprecating a big part of their Server application offering with the next major macOS Server release. OS X Server for Snow Leopard was the first version that I ever used and it absolutely breaks my heart seeing this piece of software go after using it for all these years. macOS Server was the first true server I ever controlled, the first time I really dove into command line operations and the first time I learned the hard lesson that messing around on production servers will almost always lead to data loss. Breaking my configuration multiple times made me seek knowledge online, lead me to chat with Brian Stucki on Twitter and ultimately allowed me to land a job at MacStadium working with a computing platform I truly enjoy. I only have a job today doing the things I do on a daily basis because of the legacy the Mac and it’s various server offerings of the past have built. It’s an incredibly dynamic operating system enabling the user to do great things paired with absolutely rock solid hardware. Macs make for awesome servers and I’d be willing to get into a knife fight over this.
I mainly use macOS Server as an E-Mail server, which is powered by open source projects like Dovecot and Postfix. One feature I don’t want to miss in particular is native push notifications on iOS thanks to a proprietary Dovecot plugin. Reading up on the topic lead me to be quite bummed out to learn that it’s entirely built on a special song-and-dance iOS goes through when negotiating features with the IMAP server. This process is entirely undocumented and proprietary since it uses Apple’s own Push Notification system, which also happens to be used by all third party applications on iOS and macOS. The system in of itself is incredibly reliable and might be the single best example to prove that Apple is good at services if it’s mission critical to the product that made it the most profitable company in the world.
In order to migrate away from macOS Server onto another system I decided to give the Cyrus IMAP server in combination with Postfix as the MTA a try. Cyrus appears to be less known compared to Dovecot but presents itself as pretty well documented and backed by a for-profit, bootstrapped company: Fastmail. Fastmail has been doing E-Mail for a long time and I can absolutely endorse their service but mission critical E-Mail, at least for me, remains on servers that I own on German soil.
In late 2015 Fastmail announced support for native Push Notification support on iOS on their blog, specifically thanking Apple in their blog post. For some reason this rubbed me a bit in the wrong way.
Since Fastmail builds on Cyrus there is some support for it built in, but the daemon which handles signup of iOS devices and connects to Apples APNS servers appears to be closed source.
Having read up on this topic extensively I was relieved to find that a lot of people missed this feature as well from their own self-hosted E-Mail servers and have developed various plugins for Dovecot and scripts that hook into Cyrus’ notification system.
I doubt that a lot of people run Cyrus on macOS so a move from macOS to a Linux flavor, that I haven’t yet decided on, is probably going to be a wise choice. I’m planning to build experimental E-Mail servers on VPS’ to fully dial in my setup in the upcoming weeks but I will ultimately move my server into the N@Work datacenter in Hamburg that already houses my FreeNAS replication storage server. Colocating has not been fashionable for a long while thanks to the ✨ magic of the cloud ✨ but I have physical access to my servers 24⁄7, it does not break my bank and I’m able to choose which hardware configuration I’d like to run. It might not work for most, but it does for me. If you think that there is a slight chance that this might work out for you I can only recommend to inform yourself about options in your city, and can highly endorse N@Work in Hamburg.
I will post all of the configuration files on my Github in the upcoming weeks and document this move as best as I can hoping to help others in the future.