我的公司正在租用很多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) ;