Je doute que checkmx ai fonctionné ces derniers mois...
This commit is contained in:
Alan Garcia 2013-04-24 14:48:18 +00:00
parent 86a2f81f90
commit f782010273
1 changed files with 32 additions and 28 deletions

View File

@ -676,40 +676,44 @@ class m_dom {
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** /**
* vérifie la presence d'un champs mx valide sur un serveur DNS * vérifie la presence d'un champs mx valide sur un serveur DNS
* $domaine est le domaine dont on veux véririfer les MX
* $ref_domaine est le domaine avec lequel on veux comparer les MX
* si $ref_domaine == false, on prend les MX par default
* *
*/ */
function checkmx($domaine,$mx) { function checkmx($domaine,$ref_domain=false) {
//initialise variables global $L_DEFAULT_MX, $L_DEFAULT_SECONDARY_MX ;
$mxhosts = array();
if ( $ref_domain ) {
getmxrr($ref_domain, $ref_mx);
} else {
$ref_mx = array($L_DEFAULT_MX, $L_DEFAULT_SECONDARY_MX);
}
if (empty($ref_mx)) {
// No reference mx
return 3;
}
//récupére les champs mx //récupére les champs mx
if (!getmxrr($domaine,$mxhosts)) { if (!getmxrr($domaine,$mxhosts)) {
//aucune hôte mx spécifié //aucun hôte mx spécifié
return 1; return 1;
} }
else {
//vérifie qu'un des hôtes est bien sur alternc if ( empty($mxhosts) ) {
$bolmx = 0; // no mx on the target domaine
//décompose les différents champ MX coté alternc return 1;
$arrlocalmx = split(",",$mx);
//parcours les différents champ MX retournés
foreach($mxhosts as $mxhost) {
foreach($arrlocalmx as $localmx) {
if ($mxhost==$localmx) {
$bolmx = 1;
} }
}
} $intersect = array_intersect($mxhosts, $ref_mx);
//définition de l'erreur selon reponse du parcours de mxhosts
if ($bolmx == 0) { if ( empty($intersect) ) {
//aucun des champs MX ne correspond au serveur // no shared mx server
return 2; return 2;
} }
else {
//un champ mx correct a été trouvé
return 0; return 0;
}
}
} //checkmx } //checkmx
@ -1103,7 +1107,7 @@ class m_dom {
//si gestion mx uniquement, vérification du dns externe //si gestion mx uniquement, vérification du dns externe
if ($dns=="0" && $gesmx=="1" && !$force) { if ($dns=="0" && $gesmx=="1" && !$force) {
$vmx = $this->checkmx($dom,$mx); $vmx = $this->checkmx($dom);
if ($vmx == 1) { if ($vmx == 1) {
$err->raise("dom",_("There is no MX record pointing to this server, and you are asking us to host the mail here. Please fix your MX DNS pointer")); $err->raise("dom",_("There is no MX record pointing to this server, and you are asking us to host the mail here. Please fix your MX DNS pointer"));
return false; return false;