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.
