Vroeg of laat komt elke sysadmin ervoor te staan: data migreren van een oude naar een nieuwe server. Sommige data kopieer je gewoon via scp, maar bij andere data komt er meer aan te pas. Een voorbeeld daarvan zijn emailboxen. We tonen je kort enkele migratiestrategieën en mogelijke valkuilen.

Er bestaan verschillende formaten om e-mails te bewaren op een mailserver. Twee van de meest gebruikte formaten zijn mbox en Maildir. mbox bewaart alle e-mails van een mailbox in hetzelfde bestand, terwijl Maildir voor elke mailbox een directory aanmaakt en e-mails als afzonderlijke bestanden bewaart. Eigenlijk is er geen enkele reden om mbox te gebruiken, want Maildir werkt efficiënter en is minder gevoelig voor datacorruptie. Toch vind je het mbox-formaat nog terug op elk Linux-systeem. Heb je geen speciale mailserver geconfigureerd, dan komt de output van cron-commando’s terecht in mbox-bestanden onder /var/mail of /var/spool/mail. Die kan je lezen met het mail-commando of door de bestanden te openen in een teksteditor.

Kopiëren

Gebruikt je nieuwe server exact hetzelfde formaat als de oude server? Dan volstaat het in principe om de directory met alle emailboxen te kopiëren naar de nieuwe server. Zorg er wel voor dat de benodigde gebruikersaccounts al bestaan: dat kunnen zowel systeemgebruikers zijn als virtuele gebruikers (in bijvoorbeeld een MySQL-database). Stop daarna de IMAP- of POP3-service, kopieer de oude emailboxen over de nieuwe -nog lege- emailboxen en start de services opnieuw. Over het algemeen is die strategie veilig als je dezelfde IMAP-server gebruikt op beide systemen. Sommige programma’s gebruiken immers eigen extensies aan het Maildir-formaat. Dat kan tot onverwachte resultaten leiden als je bestanden van één programma in een ander probeert te importeren.

Converteren

Meestal zal je een of andere vorm van conversie moeten toepassen. Ook al ondersteunt je nieuwe mailserver hetzelfde formaat als de oude, soms is het gewoon beter om over te stappen op een ander formaat, bijvoorbeeld om nieuwe features te gebruiken. Daarvoor bestaan verschillende tools. Voor conversie tussen mbox en Maildir vind je tientallen scripts op internet. Maar let op: niet al die scripts werken even goed! Het loont dus om de moeite te nemen om de conversie grondig te testen voordat je emailboxen definitief migreert. Gelukkig bevat heel wat IMAP-software ook zelf de nodige tools om emailboxen in een ander formaat te importeren. Voor Dovecot is bijvoorbeeld dsync, dat alle door Dovecot ondersteunde formaten kan omzetten. Met dsync is het zelfs mogelijk om actieve emailboxen te kopiëren naar een ander formaat. Zo kan je bijvoorbeeld eerst emailboxen in Maildir-formaat importeren van je oude server en ze nadien (terwijl de gebruikers al op je nieuwe server zitten) omzetten naar Dovecots native formaat.

Synchroniseren

Toch kom je soms met conversietools in de problemen. De tools moeten namelijk zowel het bronformaat als het doelformaat ondersteunen. Is dat niet het geval, dan zou je een extra conversiestap kunnen toevoegen, bijvoorbeeld van het bronformaat naar Maildir en van Maildir naar het doelformaat. Ideaal is dat niet, want bij elke conversie bestaat de kans dat je data verliest. De emailboxen bevatten immers niet alleen de mails zelf, maar ook flags (zoals gelezen of gemarkeerd), message UID’s (op basis waarvan de client weet welke mails al gedownload zijn) en mailbox subscription lists. Ook die data wil je natuurlijk niet verliezen. Een laatste methode om emailboxen te migreren, is dan ook een synchronisatie tussen twee IMAP-servers. Daarvoor bestaan verschillende tools, bijvoorbeeld offlineimap en imapsync.

Master users

De procedure is erg eenvoudig: de tools loggen in als een bepaalde gebruiker op de oude mailserver, lezen alle emailboxen in en kopiëren die naar de nieuwe server. Daarvoor moet je natuurlijk de wachtwoorden kennen van alle IMAP-gebruikers. Voor dergelijke migraties is het dan ook handig om master users te configureren op beide servers. Met een master user account heb je slechts één wachtwoord nodig om toegang te krijgen tot alle emailboxen. De eigenlijke migratie voer je het beste in twee stappen uit. Een eerste synchronisatie voer je op voorhand uit, zodat het merendeel van de data al gekopieerd is. Wanneer je achteraf de gebruikerstoegang tot de oude mailserver afzet, voer je een tweede sync uit. Op dat moment hoeft niet veel data meer gekopieerd te worden, waardoor de downtime beperkt blijft. Hét grote voordeel van een IMAP-synchronisatie is dat die methode bruikbaar is voor elke denkbare IMAP-server. Is er geen eenvoudig migratietraject voor jouw situatie? Dan is een IMAP-synchronisatie wellicht de eenvoudigste en meest betrouwbare oplossing!