Migrating e-mail to new provider
Here I explain my migration from Gandi mail after their price hike (ycombinator.com) to the Dutch Soverin (soverin.net). Since I have my own domain name, I’m not captive to any provider, so migration is possible (although requires some planning).
Migration flow ¶
- Register with Soverin and confirmed my domain ownership by adding a
TXT
record. - Import mail using their online tool (2 accounts)
- Update
MX
andTXT
DNS records to receive mail (soverin.net)
Name | Type | Content |
---|---|---|
@ | TXT |
v=spf1 include:soverin.net ~all |
@ | MX |
10 mx.soverin.net. |
- Update
MX
andTXT
DNS records to receive plus-addressing e-mail:
Name | Type | Content |
---|---|---|
* | MX |
10 mx.soverin.net. |
* | TXT |
v=spf1 include:soverin.net ~all |
- Update DNS records to enable DKIM.1
Name | Type | Content |
---|---|---|
soverin1._domainkey | CNAME |
soverin1._domainkey.sover.in. |
soverin2._domainkey | CNAME |
soverin2._domainkey.sover.in. |
soverin3._domainkey | CNAME |
soverin3._domainkey.sover.in. |
_dmarc | CNAME |
reject._dmarc.sover.in. |
- Manually imported Notes → server-side via webmail interface in the IMAP Notes folder
- Manually import CardDAV data → client-side using macOS Contacts.app - select all, cmd-drag to copy to new account
- Manually import CalDAV calendar data → client-side using macOS Calendar.app - export per calendar to
.ics
file, then import via Roundcube web interface. - Manually import CalDAV reminder data → client-side using macOS Reminders.app - select all, cmd-drag to copy to new account
Issues ¶
Contacts.app does not copy all contacts (solved) ¶
Some contacts (88 out 530) were copied. After searching I found that all contacts not copied contained escaped characters (with \). This happens frequently, e.g. by creating a multi-line NOTE
field (which then contains \n). I created a ticket with Soverin to address this. I don’t have a workaround.
Update: Soverin has a secondary (newer?) CalDAV/CardDAV server at caldav2.soverin.net
which solves these issues for me.
To diagnose, I used the following procedure:
- Copy all contacts from old to new server in Contacts.app
- Remove new server account and add back (to clear local cache)
- Select all contacts on new server
- Switch to old server, contacts not copied are not highlighted
- Invert selection (superuser.com)
- Export all non-copied contacts as
.vcf
, then try to find the common denominator (e.g. find the shortest contact not copied)
-
It’s a bit weird that Soverin uses
sover.in
as DKIM domain as it’s bad practice to have domains outside jurisdiction where you have a stake, India could decide to reject all foreign entities and Soverin has no say in it. ↩︎