Migration depuis le guide pour Jessie - Debian 9.0 Stretch
Rédigé par Marc GUILLAUME | Aucun commentaireTraduction de la page : https://workaround.org/ispmail/stretch/migrate-from-jessie
Mettre à jour la version ou réinstaller ?
Je préconise que vous configuriez un nouveau serveur et que vous vous assuriez que le serveur fonctionne correctement avant de démarrer la migration des utilisateurs vers ce serveur. Vous pouvez argumenter en disant que Debian peut être facilement mis à jour en utilisant la commande apt-get dist-upgrade
, mais c'est très dangereux sur un serveur de mail en production. Des changements automatiques dans les configurations peuvent avoir de mauvais effets bord et vous pouvez perdre des mails. Au minimum vous allez provoquer une sérieuse interruption de service pour vos utilisateurs.
Si vous suivez mon conseil, alors prenez un nouveau server et installez-y Debian Stretch. Une fois que les utilisateurs seront migrés correctement et que tout fonctionnera comme il faut vous pourrez démanteler le vieux serveur.
Cependant si vous êtes vraiment courageux vous pouvez tenter une mise à jour en place. Les changements entre Jessie et Stretch ne sont heureusement pas si fondamentaux que ça. Sauf pour rspamd.
Lisez avant de vous lancer
Suivez ce guide jusqu'à la fin. Alors seulement commencez à tenter une migration. Informez vos utilisateurs à ce sujet et fixez un moment où vous tenterez de déplacer les comptes mails vers le nouveau serveur. Le changement de serveur requière un changement de DNS qui demande un délai pour être visible dans le monde entier, vos utilisateus connaîtront une période pendant laquelle la réception du courrier sera ralentie. Si vous vous y prenez comme il faut, pas un seul mail ne sera perdu.
Donc vous avez votre nouveau serveur tournant sous Stretch configuré et fonctionnel ? Ok alors allons-y en commençant par…
Preparez les enregistrements DNS
L'enregistrement MX du DNS pour votre domaine, contient le nom de votre serveur de mai. Quand vous basculez sur le nouveau serveur vous devez soit modifier votre enregistrement MX (si votre nouveau serveur a un nom différent) ou l'enregistrement A pour le serveur de mail actuel. Tout enregistrement DNS a un TTL (Time-To-Live, une durée de vie) qui définit la période pendant laquelle un enregistrement DNS restera valide même après un changement. En général ce TTL est assez élevé du genre 86400 secondes (1 jour). Modifiez-le temporairement à 60 secondes de manière à ce que le reste d'Internet aille chercher vos modifications plus rapidement.
Migrez la base de données
Vous devez copier la base de données qui contient les informations de contrôle de vos domaines de mail et de vos comptes. Connectez-vous sur l'ancien serveur (Jessie) en tant que root et sauvegardez la base de données mailserver. Il suffit pour cela de lancer la commande :
mysqldump mailserver > mailserver.sql
Copiez ce fichier sur le nouveau serveur (en utilisant scp) et importez-le dans la base de données :
mysql mailserver < mailserver.sql
Bien entendu, tout changement dans la base de données de l'ancien serveur devra être répercuté sur le nouveau serveur.
Migration des mails à chaud
Par chance Dovecot utilise le format maildir qui enregistre les mails sur le disque dans de simples fichiers texte. Connectez-vous sur le nouveau serveur (Stretch) et utilisez rsync pour copier les mails depuis l'ancien serveur (Jessie) :
rsync -va jessieserver:/var/vmail/ /var/vmail/
(Faîtes bien attention aux slashes finaux. Utilisez les exactement comme indiqué ci-dessus sous peine de voir vos fichiers ne pas atterrir à la bonne place.)
Il n'est pas nécessaire d'arrêter Dovecot sur votre serveur Jessie en production. Copier les fichiers pendant que Dovecot est lancé ne cassera rien. C'est ce qu'on appelle une « copie à chaud ». Cette copie peut ne pas être totalement cohérente, mais elle fera gagner du temps pour la synchronisation finale.
Interruption du service
Vous avez prévenu vos utilisateurs de l'interruption de service n'est-ce pas ? Et bien le temps est venu de cette interruption. Arrêtez Dovecot sur les deux serveurs.
Migrez les mails à froid
Faites une nouvelle synchronisation avec rsync qui copiera uniquement les fichiers ayant changé ou ayant été rajoutés depuis la dernière synchronisation, ce qui la rend beaucoup plus rapide que la première à chaud. Sur votre nouveau serveur lancez :
rsync -va --delete jessieserver:/var/vmail/ /var/vmail/
(L'option --delete
s'assure que les fichiers ayant été effacés sur l'ancien serveur depuis la dernière synchronisation seront également effacés sur le nouveau serveur.)
Basculez les enregistrements DNS
Pour tous vos domaines vous devrez changer les enregistrements MX ou A pour les faire pointer sur votre nouveau serveur.
Activez le soft_bounce
Des accidents peuvent arriver. Et vous ne voulez pas perdre de mails. Donc activez votre filet de sécurité sur le nouveau serveur avec la commande :
postconf soft_bounce=yes
Maintenant Postfix va conserver sans limite de temps dans sa file d'attente des mails qui autrement seraient rejetés. Démarrez Postfix et Dovecot sur le nouveau serveur. Regardez votre fichier /var/log/mail.log et lancez de temps en temps la commande mailq
pour voir quels sont les emails qui restent bloqués dans la file d'attente. Si vous êtes certain que ces emails peuvent être supprimés alors utilisez la commande postsuper -d QUEUE-ID
(comme elle apparaît dans la sortie de mailq).
Une fois que vous êtes certain que les mails sont reçus et envoyés correctement vous pouvez désactiver de nouveau le mode soft_bounce :
postconf soft_bounce=no
Arrêtez l'ancien serveur
Si possible faites une sauvegarde finale de votre ancien serveur. Si vous ne recevez pas de plaintes de la part des utilisateurs, vous pouvez désactiver l'ancien serveur après une semaine.