Pour avoir la liste des domaines défini sur Xeamsin, récupérer le fichier /opt/Xeams/config/hosts.txt
On place ce fichier sur le serveur EFA dans /root/
Pour chacun des domaines existant dans le fichier, on vérifie certains paramètres:
- Verifier l’enregistrement MX du domaine, on s’assure qu’il pointe bien actuellement sur xeasmin.valtechnet.com
- On verifie que l’on a bien le controle des DNS pour pouvoir les modifier nous-mêmes, sinon dresser la liste de domaine qu’il va falloir demander aux proprietaires de changer le pointage du MX.
Script à executer sur EFA après avoir recuperer le fichier hosts.txt de Xeams
#!/bin/bash while IFS='' read -r line || [[ -n "$line" ]]; do if [[ $line = \#* ]] ; then continue fi domain=`echo $line | awk '{print $1}'` ipdest=`echo $line | awk '{print $2}'` #echo "Domaine: $domain - [$ipdest]" #Get MX mx=`dig @8.8.8.8 $domain mx +short | awk '{print $2}'` if [ "$mx" = "xeamsin.valtechnet.com." ] then echo "Le domaine $domain est sur le bon serveur $mx, on l'ajoute au fichier transport" echo "$domain smtp:[$ipdest]" >> /etc/postfix/transport else #echo "Mauvais mx ($mx) pour $domain. on continue." echo "$domain $mx" >> /root/domaine_non_traite continue fi #Get DNS dns=`dig @8.8.8.8 $domain ns +short | awk 'NR==1{print $1}'` #echo "$domain: $dns" if [ "$dns" = "ns1.valtechnet.com." ] then echo "Le ns ($dns) est sous notre controle pour $domain" echo "$domain" >> /root/domaine_dns_a_faire else if [ "$dns" = "ns2.valtechnet.com." ] then echo "Le ns ($dns) est sous notre controle pour $domain" echo "$domain" >> /root/domaine_dns_a_faire else echo "Le ns ($dns) n'est PAS sous notre controle pour $domain" echo "$domain" >> /root/domaine_dns_a_demander fi fi done < /root/hosts.txt exit
Résultats
Fichier domaine_dns_a_faire
Liste les domaine intégré dans efa avec succès. Ce fichier sera utiliser sur les serveur de noms pour modifier les mx automatiquement
Fichier domaine_dns_a_demander
Liste les domaines intégré avec succès dans efa. Il va falloir demander aux proprietaires de chacun des domaines de cette liste de modifier les mx pour le faire pointer sur efa.valtechnet.com
Fichier domaine_non_traiter
Liste les domaine qui ne pointaient pas sur xeamsin, donc a ne pas faire pointer sur efa.
Modifier les DNS
Pour avoir la liste des domaines pour modifier les dns, on récupère le fichier /root/domaine_dns_a_faire sur le serveur EFA, crée par le script précédent.
On place ce fichier sur le serveur WHM1 et WHM2 dans /root/
Pour chacun des domaines existant dans le fichier, on vérifie si la zone est présente dans /var/named.
Si c’est le cas, on modifier l’enregistrement MX de xeamsin.valtechnet.com pour efa.valtechnet.com
Et l’on modifie le serial du domaine, avec le script ci-dessous.
Script à executer sur whm1 et whm2 après avoir récuperer le fichier domaine_dns_a_faire de EFA
#!/bin/bash while IFS='' read -r line || [[ -n "$line" ]]; do if [[ $line = \#* ]] ; then continue fi domain=`echo $line | awk '{print $1}'` if [ -e "/var/named/$domain.db" ] then #Get Current Serial serialold=`grep "Serial Number" /var/named/$domain.db | sed "s/://g" | cut -d/ -f4 | awk 'NR==1{print $1}'` #Modify serial grep "Serial Number" /var/named/$domain.db | sed "s/://g" | cut -d/ -f4 | awk -v domain="$domain" 'NR==1{system("replace "$1" "strftime("%Y%m%d")"00 -- /var/named/"domain".db")}' serialnew=`grep "Serial Number" /var/named/$domain.db | sed "s/://g" | cut -d/ -f4 | awk 'NR==1{print $1}'` echo "Domaine: $domain -- $serialold -- $serialnew" #Change MX replace "xeamsin.valtechnet.com" "efa.valtechnet.com" -- /var/named/$domain.db echo "$domain" >> /root/domaine_traite else #echo "Domaine: $domain fichier non trouve" echo "$domain" >> /root/domaine_non_traite fi done < /root/domaine_dns_a_faire exit
Résultats
Une fois le script executer, on fait un restart du service named
service named restart
Puis dans l’interface de whm1, on synchronise toutes les zones sur tous les serveurs.
Fichier domaine_traite
Liste les domaine traité.
Fichier domaine_non_traiter
Liste les domaines non traiter car la zone n’est pas sur ce serveur.