我正在使用a basic PHP class在远程服务器上运行SpamAssassin Network Protocol命令。我安装了SpamAssassin following a guide,只是跳过了PostFix部分。
无论我运行什么命令(CHECK
,REPORT
,PING
等),我只会得到一个空白或空的回复。
根据手册SPAMD/1.5 0 PONG\r\n
,这是应该返回的PING的基本示例。相反,它是一个空洞的回应。
$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>");
我的写作/阅读有问题吗?我应该在远程服务器上检查哪些设置?
答案 0 :(得分: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.
我需要使用-A
明确允许我的本地IP。
因此,我需要使用spamd -D -i my.remote.ip -p 783 -A my.local.ip
从我的远程服务器上的命令行启动spamd。
现在运行我的示例会显示warn: spamd: bad protocol: header error: (EOF during headers)
错误,因为我在简单示例中打开了套接字。如果我使用GitHub repo I linked,它现在可以正确返回。