Roundcube behoeft geen introductie, het is de defacto webmail standaard en hoewel ik persoonlijk een echt mail programma prefereer is het een goede oplossing voor velen om email af te handelen.

Recent moest ik een verouderde 1.3 installatie updaten naar de nieuwste versie, en hoewel er een upgrade optie is wordt dat al snel een uitdaging als je PHP versies teveel uiteenlopen en je twee versies tijdelijk naast elkaar wilt draaien.

Een schone installatie, met de nieuwste versie PHP en MariaDB voorzien van de oude data is dan een betere optie. Maar wat als er kleine verschillen zijn in de tabellen structuur?

Dan is het nog steeds geen probleem, want je kan dumps maken die complete insert commando’s bevatten zodat de tabellen niet 1:1 hetzelfde hoeven te zijn.

De Roundcube database bevat een vijftal tabellen waar data in wordt opgeslagen per gebruiker, de relaties worden intern via id velden in de tabellen gelegd, het is dus zaak dat je de complete set overzet omdat anders adresboeken verbonden worden aan een andere gebruiker.

De tabellen zijn:

– users
– identities
– contacts
– contactgroups
– contactgroupmembers

We kunnen deze tabellen dumpen met dit commando:

mysqldump --complete-insert --no-create-info roundcube users > users.dump
mysqldump --complete-insert --no-create-info roundcube identities > identities.dump
mysqldump --complete-insert --no-create-info roundcube contacts > contacts.dump
mysqldump --complete-insert --no-create-info roundcube contactgroups > contactgroups.dump
mysqldump --complete-insert --no-create-info roundcubemail contactgroupmembers > contactgroupmembers.dump

Vervolgens kunnen we deze bestanden overzetten naar de nieuwe server, scp of rsync zijn je vriend.

Voordat je de dumps inleest kan je controleren dat de tabellen inderdaad leeg zijn.
Dat kan via de commandline of via een client zoals https://sequel-ace.com/ op Mac of https://www.heidisql.com/

Inlezen deed ik ook op de commandline:

mysql roundcube < users.dump
mysql roundcube < identities.dump
mysql roundcube < contacts.dump
mysql roundcube < contactgroups.dump
mysql roundcube < contactgroupmembers.dump

 

Hiermee is de migratie afgerond, het is dan een kwestie van de data controleren en als het allemaal in orde is kan je de nieuwe installatie in gebruik nemen door de DNS aan te passen zodat de gebruikers naar de nieuwe installatie gaan. Laat de oude nog even in stand, mocht er toch iets mis zijn dan is er alleen een DNS aanpassing nodig om de situatie te herstellen.

Als alles in orde is kan de oude installatie verwijderd worden.

En het is helemaal ok als Roundcube draait op een andere machine dan de mailserver zelf, dat is zelfs te adviseren want splitsing van taken is altijd goed en het geeft flexibiliteit op het moment dat het nodig is.