ответ Букабая - путь вперед. По сути, подобная библиотека выполняет проверку существующих записей DNS для (почтовых) серверов в указанных доменах (A, MX или AAAA). После этого он выполняет то, что называется проверкой обратного вызова. Здесь вы подключаетесь к почтовому серверу, говорите, что хотите отправить на определенный адрес электронной почты, и смотрите, говорят ли они «ОК».
Для проверки обратного вызова, вы должны заметить, что серые списки серверов говорят «ОК» всем, поэтому 100% -ная гарантия невозможна без фактической отправки писем. Вот код, который я использовал, когда делал это вручную. Это патч для парсера адресов электронной почты от здесь .
#
# Email callback verification
# Based on http://uk2.php.net/manual/en/function.getmxrr.php
#
if (strlen($bits['domain-literal'])){
$records = array($bits['domain-literal']);
}elseif (!getmxrr($bits['domain'], $mx_records, $mx_weight)){
$records = array($bits['domain']);
}else{
$mxs = array();
for ($i = 0; $i < count($mx_records); $i++){
$mxs[$mx_records[$i]] = $mx_weight[$i];
}
asort($mxs);
$records = array_keys($mxs);
}
$user_okay = false;
for ($j = 0; $j < count($records) && !$user_okay; $j++){
$fp = @fsockopen($records[$j], 25, $errno, $errstr, 2);
if($fp){
$ms_resp = "";
$ms_resp .= send_command($fp, "HELO ******.com");
$ms_resp .= send_command($fp, "MAIL FROM:<>");
$rcpt_text = send_command($fp, "RCPT TO:<" . $email . ">");
$ms_resp .= $rcpt_text;
$ms_code = intval(substr($rcpt_text, 0, 3));
if ($ms_code == 250 || $ms_code == 451){ // Accept all user account on greylisting server
$user_okay = true;
}
$ms_resp .= send_command($fp, "QUIT");
fclose($fp);
}
}
return $user_okay ? 1 : 0;