使用PHP和telnet的SMTP服务器可用性
我的公司正在租赁大量的知识产权。我们的客户大多是邮递员。在IP租赁之后,有时他们会使IP无法使用,因为IP在某些提供商(如Yahoo、Gmail、AOL等)被屏蔽 目前,我们通过绑定IP并从CentOS系统运行使用PHP和telnet的SMTP服务器可用性,php,bash,smtp,telnet,Php,Bash,Smtp,Telnet,我的公司正在租赁大量的知识产权。我们的客户大多是邮递员。在IP租赁之后,有时他们会使IP无法使用,因为IP在某些提供商(如Yahoo、Gmail、AOL等)被屏蔽 目前,我们通过绑定IP并从CentOS系统运行telnet命令来进行简单检查,如下所示: telnet -b $IP smtp.gmail.com 25 如果是220表示OK,或者其他表示IP不是脏的东西,则获取输出 我要找的是一个PHP脚本,或者首先是如何实现这一点的想法。 基本上,我们会绑定IP,例如PHP会检查连接的输出并写入
telnet
命令来进行简单检查,如下所示:
telnet -b $IP smtp.gmail.com 25
如果是220表示OK,或者其他表示IP不是脏的东西,则获取输出
我要找的是一个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
而不是telnet。对于那些不熟悉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) ;
你不能通过PHPs exec()运行这个吗?或者,也许更好,只需编写一个通过ip在文本文件或其他文件中运行的bash脚本?@junkfoodjunkie是的,我也考虑过bash,但遇到了如何终止和获取现有连接的输出的问题。这个脚本应该有帮助是的,但它将通过主ip发送请求,而不是绑定的ip。服务器的主IP是
192.168.1.1
,我想测试10.0.0.0/24
子网。因此,我将把`10.0.0.0/24绑定到我的接口,然后我将使用这些IP来执行请求。Ofc,这些都是私有IP,我只是举了个例子。试试这个,我想这会很有用