2010-06-08 2 views
1

Je suis en train de configurer un formulaire de recherche DNS en utilisant dns_get_record. Je l'ai mis en place pour vérifier les enregistrements A et MX du domaine qui est entré. Cependant, je voudrais aussi afficher l'adresse IP des enregistrements MX affichés. Est-ce possible?dns_get_record Question

Répondre

1

Non, du moins pas en une seule étape. Vous devrez faire une autre requête DNS pour la "cible" de l'enregistrement MX, qui est l'adresse "réelle" du serveur de messagerie.

Un script simple pourrait ressembler à ceci

$email = "[email protected]"; 
list($tmp, $email) = explode("@", $email); // Gets the domain name 

$dns = dns_get_record($email, DNS_MX); 
if(count($dns) <= 0) 
    die("Error looking up dns information."); // Return value is an empty array if there aren't any MX records but domain exists 

// Looks up the first returned MX (note that there can be more than one) 
// Each MX record has a 'pri' value where the lowest value is the record with the highest priority 
$mx = dns_get_record($dns[0]['target'], DNS_A); 
if(count($mx) <= 0) 
    die("Error looking up mail server."); 
$mx = $mx[0]['ip']; 

Un complet soufflé A et enregistrement MX affichage de script

$domain = "google.com"; 

$dns = dns_get_record($domain, DNS_ANY); 
foreach($dns as $d) { 
    // Only print A and MX records 
    if($d['type'] != "A" and $d['type'] != "MX") 
     continue; 
    // First print all fields 
    echo "--- " . $d['host'] . ": <br />\n"; 
    foreach($d as $key => $value) { 
     if($key != "host") // Don't print host twice 
      echo " {$key}: {$value} <br />\n"; 
    } 
    // Print type specific fields 
    switch($d['type']) { 
     case 'A': 
      // Display annoying message 
      echo "A records always contain an IP address. <br />\n"; 
      break; 
     case 'MX': 
      // Resolve IP address of the mail server 
      $mx = dns_get_record($d['target'], DNS_A); 
      foreach($mx as $server) { 
       echo "The MX record for " . $d['host'] . " points to the server " . $d['target'] . " whose IP address is " . $server['ip'] . ". <br />\n"; 
      } 
      break; 
    } 
} 
+0

Pouvez-vous donner peut-être un exemple de la façon dont je mettrais cela? – Batfan

+0

Ajout d'un exemple (non testé). – svens

+0

Hmmm, essayé d'implémenter ceci dans mon script et j'ai des problèmes. C'est la configuration de base que j'utilise http://bit.ly/dxxush – Batfan