Migrating e-mail from Gandi to Soverin 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 (soverin.com).
- Import mail using their online tool (2 accounts)
- Update
MX
andTXT
DNS records to receive mail (soverin.com)
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 |
---|---|---|
* | TXT | v=spf1 include:soverin.net ~all |
* | MX | 10 mx.soverin.net. |
- Update DNS records to enable DKIM/DMARC.1
Name | Type | Content |
---|---|---|
soverin1._domainkey | CNAME | soverin1._domainkey.soverin.net. |
soverin2._domainkey | CNAME | soverin2._domainkey.soverin.net. |
soverin3._domainkey | CNAME | soverin3._domainkey.soverin.net. |
_dmarc | CNAME | reject._dmarc.soverin.net. |
- 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
- Check DNS settings with e.g. MX toolbox (mxtoolbox.com).
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. – Update March 2025: it seems soverin is now usingsoverin.net
for all their domain. ↩︎