I've been eyeing Mailcow for a while since it's use of Docker should ease the maintenance and update burden (you iRedMail users know what I'm talking about lol) and bring a better UI and user experience with it's admin panel. Here are some notes that I took from my migration in case it helps anyone else out.
I setup a Mailcow instance on another server so I could keep iRedMail operating during the migration. After it was completed, I used Mailcow's backup and restore feature to move it to my original server.
Migrating has three main parts, mail, contacts and calendars, and DKIM. There's also some configuration which I'll touch on too.