2017-08-10 8 views
-1

私はmxレコードの詳細を取得したいと思います...しかし、私のコードでmxレコードターゲットを取得する方法がわかりません... 私はmxレコードの詳細を取得します。私のコードにmxターゲットを表示するにはどうすればいいですか? PHPを使ってSMTPサーバーにpingをかけ、MXレコードをチェックしますか?私は、このようなスクリプトを書くために喜んだ:ドメインのmxレコードを取得する方法

私のコードは次のとおりです。

// Queries the DNS server for MX entries of a certain domain. 
protected function mx_query($domain) { 
    $hosts = array(); 
    $weight = array(); 
    if (function_exists('getmxrr')) { 
     getmxrr($domain, $hosts, $weight); 
    } else { 
     $this->getmxrr($domain, $hosts, $weight); 
    } 
    return array($hosts, $weight); 
} 

// Provides a windows replacement for the getmxrr function. 
protected function getmxrr($hostname, &$mxhosts, &$mxweights) { 
    if (!is_array($mxhosts)) { 
     $mxhosts = array(); 
    } 
    if (!is_array($mxweights)) { 
     $mxweights = array(); 
    } 
    if (empty($hostname)) { 
     return; 
    } 
    $cmd = 'nslookup -type=MX ' . escapeshellarg($hostname); 
    if (!empty($this->mx_query_ns)) { 
     $cmd .= ' ' . escapeshellarg($this->mx_query_ns); 
    } 
    exec($cmd, $output); 
    if (empty($output)) { 
     return; 
    } 
    $i = -1; 
    foreach ($output as $line) { 
     $i++; 
     if (preg_match("/^$hostname\tMX preference = ([0-9]+), mail exchanger = (.+)$/i", $line, $parts)) { 
      $mxweights[$i] = trim($parts[1]); 
      $mxhosts[$i] = trim($parts[2]); 
     } 
     if (preg_match('/responsible mail addr = (.+)$/i', $line, $parts)) { 
      $mxweights[$i] = $i; 
      $mxhosts[$i] = trim($parts[1]); 
     } 
    } 
    return ($i != -1); 
} 

     if($this->check_mx){ 
     $check_mx = $this->check_mx($domain); 
     if(!$check_mx){ 
      $output['result']['errors']['check_mx'] = 'Domain failed MX check.'; 
      $output['result']['success'] = 0; 
     }else{ 
      $output['result']['report']['check_mx'] = $output['result']['report']['target']; 


     } 
    } 

答えて

0

はPHP dns_get_record(およびdns_get_mx)メソッド(およびdocumentation pagesに与えられた例)を見てみましょう。

関連する問題