0

我正在使用一个基本的 PHP 类在远程服务器上运行SpamAssassin 网络协议命令。我按照指南安装了 SpamAssassin ,只是跳过了 PostFix 部分。

无论我运行什么命令(CHECKREPORTPING等),我只会得到一个空白或空响应。

根据手册,这是一个应该返回的 PING 的基本示例SPAMD/1.5 0 PONG\r\n:相反,这是一个空洞的回应。

$socket = fsockopen($hostname = 'my-remote-server-ip', $port = 783, $errno, $errstr);
fwrite($socket, "PING SPAMC/1.5\r\n");
$response = fread($socket,99999);
die("<pre>" . print_r($response,1) . "</pre>");

我的写作/阅读有问题吗?我应该在远程服务器上检查哪些设置?

4

1 回答 1

0

原来我的远程连接被拒绝了。我通过运行来解决这个问题spamd -D -i my.remote.ip -p 783,它会主动向您显示 spamd 的调试信息。

该日志向我展示了 warn: spamd: unauthorized connection from my.full.local.addr [my.local.ip] at port 54006 at /usr/sbin/spamd line 1271.

我需要明确允许我的本地 IP 使用-A. 因此,我需要从远程服务器上的命令行使用spamd -D -i my.remote.ip -p 783 -A my.local.ip.

现在运行我的示例会显示一个warn: spamd: bad protocol: header error: (EOF during headers)错误,因为我在简单示例中是如何打开套接字的。如果我使用我链接的 GitHub 存储库,它现在可以正确返回。

于 2015-01-06T14:08:56.473 回答