Qmail : Nom de domaine partagé sur plusieurs serveurs

Pour un développeur spécialisé en PHP / Mysql on peut dire que je ne poste pas beaucoup dans mes langages de prédilection en ce moment. Chaque chose en son temps. En ce moment, c’est avec des serveurs web que je m’amuse et là je poste un petit billet de rappel sur ce qu’il ne faut pas oublier de faire quand on prend son nom de domaine et qu’on décide de le partager sur deux serveurs dédiés.

Donc voilà, remettons nous dans le contexte :

J’ai un nom de domaine configuré sur un serveur dédié A. Je veux migrer uniquement les boites mails sur le serveur B, je n’ai qu’a changer les zones DNS de ce domaine?

Oui mais non, il n’y a pas que ça à faire !

Pour le travail, je me suis retrouvé à devoir migrer les boites mails de notre serveur dédié principal (Linux Plesk 9.3 / CentOs) vers un autre de nos serveurs dédiés (Gentoo release 2 OVH). J’avais tout de préparé :

  • Crée les zones DNS pop.domaine.com et smtp.domaine.com dans Plesk (Plesk n’a que « mail.domaine.com » pour la gestion des emails)
  • Basculé quelques jours auparavant ces zones sur une IP fail-over pour que la propagation des DNS puisse se faire
  • Crée manuellement les boites mails sur le nouveau serveur (Plesk gère tout en base de données, pas de fichier pour les mots de passe ou les .forward … obligé de tout recréer à la main)
  • Exporté les mailling lists du serveur Plesk et importé massivement dans le serveur Gentoo (là aussi, c’est pas le même soft … pas trouvé pour exporter la liste, heureusement il y avait une interface web qui m’a permis de faire un copier coller. L’importation sur le serveur Gentoo dans ezmlm s’est ensuite faite avec deux petites ligne de commande)

Mais un petit oubli peut poser des problèmes si on ne s’en rend pas compte tout de suite :)

Le transfert s’est très bien déroulé. L’ip fail-over a bien fait son office, en quelques secondes tous les mails sont passés du serveur Plesk au serveur Gentoo. Tout semblait fonctionner. Oui mais voilà, le lendemain, je passes faire un tour sur l’ancien webmail et je trouves des mails automatiques que je me postais via des applications PHP ou Shell …

Car il faut savoir que même si les DNS sont réglés sur une autre IP que celle du serveur du site, PHP (ou autre) invoquera Qmail directement sans vérifier les DNS et si le nom de domaine apparait dans la liste de qmail il ne vérifiera même pas les DNS ! Pire que ça, dans Plesk, j’avais « au cas où » désactivé le service mail sur ce nom de domaine mais Plesk gérant tout à sa sauce, avait quand même laissé une trace dans les listes de qmail (va comprendre pourquoi …). Pour éviter ce genre de désagréments il faut éditer les fichiers « virtualdomains » et « rcpthosts » de qmail pour supprimer le nom de domaine de ces listes.

Voici donc maintenant, l’ordre des choses à faire pour migrer uniquement les comptes mails d’un serveur à un autre :

Taches à exécuter pour migrer uniquement les comptes mails d’un serveur à un autre

  1. Quelques jours avant (2 jours idéal), ajouter une IP fail-over au serveur A et créer aussi cette IP sur le serveur B.
  2. Dans le manager OVH, régler l’IP fail-over sur le serveur A
  3. Modifier les zones DNS du nom de domaine et les placer sur cette IP. Si besoin, créer les zones qui sont présentes sur le deuxième serveur (serveur B)
  4. Créer les comptes mails sur le serveur B (ou les copier via la commande scp si les structures sont identiques)
  5. Quelques jours plus tard, supprimer l’IP fail-over du serveur A. Sur Plesk, on est obligé de re-modifier les zones DNS pour les mettre sur une autre IP puis supprimer l’IP puis re-re-modifier les zones DNS car Plesk empeche la suppression d’une IP si elle est utilisée.
  6. Dans le manager OVH, basculer l’IP fai-over du serveur A vers le serveur B
  7. Sur le serveur A, éditer les fichiers
    • /var/qmail/control/virtualdomains
    • /var/qmail/control/rcpthosts

    et supprimer le nom de domaine de ces listes

  8. Redémarrer Qmail sur le serveur A :
/etc/init.d/qmail stop
/etc/init.d/qmail start

Et voila, tout est migré proprement et il n’y aura pas de couacs ;)
Note : si vous avez un problème pour relancer qmail, consultez cette petite astuce : Relancer Qmail sans erreur Fatale sur le multilog (unable to lock directory /var/log/qmail/: temporary failure).

Note : pour importer une liste d’adresses dans le gestionnaire de mailing-lists ezmlm :
# on passe sur le compte de vpopmail
su vpopmail

# affiche le fichier + appelle ezmlm-sub + url de la ml "news@domaine.com"
cat mon-fichier.txt | xargs /usr/local/bin/ezmlm/ezmlm-sub /home/vpopmail/domains/domaine.com/news
Cet article vous a plu ? Partagez le !
  • Twitter
  • Facebook
  • Google Bookmarks
  • Wikio
  • Digg
  • Sphinn
  • del.icio.us
  • Mixx
  • LinkedIn
  • Live
  • MySpace
  • Scoopeo
  • Wikio IT
  • Yahoo! Buzz

3 commentaires sur ce billet.

  1. [...] le partage d’un nom de domaine sur plusieurs serveurs, on passe au webmail ! La dernière fois, j’avais partagé le nom de domaine de la société [...]

  2. Merci pour le partage de cette information claire et efficace ! j’étais justement confronté à ce problème depuis 24h

  3. De rien, c’est là pour ça :)

    PS : désolé pour le temps d’activation du comm, je l’avais pas remarqué et mes vacances n’ont pas arrangées ça ^^

Respond to this post