-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'];
}
}