【发布时间】:2017-09-06 22:23:27
【问题描述】:
我的公司正在租用大量 IP。我们的客户大多是邮寄者。在 IP 租用后,有时他们会使 IP 无法使用,因为 IP 在某些提供商处被阻止,例如 Yahoo、Gmail、AOL 等。
目前,我们通过绑定 IP 并从我们的 CentOS 系统运行 telnet 命令来进行简单的检查,如下所示:
telnet -b $IP smtp.gmail.com 25
获取输出,如果是 220 表示 OK,或者其他表明 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 而不是telnet。对于不熟悉netcat的人来说,这就是参数的含义:
-4 to bind only IPv4
-s Source IP to bind to
-w 2 Timeout
但问题是我找不到关闭该连接的方法,它只会挂起并保持打开状态。如果我找到关闭该连接的方法,我可以将 $output 存储在文件中,过滤 SMTP 状态代码,然后继续使用第二个 IP 并检查它。
【问题讨论】:
-
你不能通过 PHP 的 exec() 来运行它吗?或者,可能更好,只是做一个通过文本文件或其他东西中的 IP 运行的 bash 脚本?
-
@junkfoodjunkie 是的,我也考虑过 bash,但是卡住了如何终止并获取现有连接的输出
-
这里的脚本应该可以帮助stackoverflow.com/questions/3675897/…