具有PHP和telnet的SMTP服务器可用性



我的公司正在租用很多IP。我们的客户大多是邮件发送者。IP租赁后,有时它们会使IP无法使用,因为IP在某些提供商处被阻止,例如雅虎,Gmail,AOL等。

目前,我们通过绑定 IP 并从我们的 CentOS 系统运行telnet命令来对此进行简单的检查,如下所示:

telnet -b $IP smtp.gmail.com 25

并获取输出,如果它是 220 表示正常,或者其他表明 IP 未dirty的东西。

我正在寻找的是一个PHP脚本,或者首先是如何做到这一点的想法。 基本上,我们会绑定IP,PHP会检查连接的输出并写入csv文件。

我过去做过很多php项目,但没有类似的东西。知道从哪里开始吗? 感谢您的建议。

编辑

由于我的调查,我能够做这样的事情,

$eol= system("nc  -4 -w 2 -s $Binded_IP smtp.gmail.com 25", $output );
var_dump($output); 

并得到如下输出:

-bash-4.2$ php script.php 
220 smtp.gmail.com ESMTP 13sm2795405wml.25 - gsmtp

我正在尝试使用netcat而不是远程登录。对于那些不熟悉netcat的人来说,这就是论点的含义:

-4 to bind only IPv4
-s Source IP to bind to
-w 2  Timeout

但问题是我找不到关闭该连接的方法,它只能挂在外面,并保持打开状态。如果我找到关闭该连接的方法,我可以将$output存储在文件中,过滤SMTP状态代码,然后继续使用第二个IP并检查它。

您可以使用以下脚本检查是否存在与服务器的连接。

$f = fsockopen('smtp smtp.gmail.com', 25) ;
if ($f !== false) {
$res = fread($f, 1024) ;
if (strlen($res) > 0 && strpos($res, '220') === 0) {
echo "Success!" ;
}
else {
echo "Error: " . $res ;
}
}
fclose($f) ;

最新更新