я использую базовый класс PHP запустить SpamAssassin Сетевой протокол Команды на удаленном сервере. Я установил SpamAssassin следуя руководству, просто пропустив часть PostFix.
Неважно, какую команду я запускаю (CHECK
, REPORT
, PING
и т. д.), я получаю только пустой или пустой ответ.
Вот базовый пример 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>");
Что-то не так с моим письмом / чтением? Какие настройки я должен проверить на своем удаленном сервере?
Оказывается, в моем удаленном соединении отказали. Я понял это, запустив 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 из командной строки на моем удаленном сервере с spamd -D -i my.remote.ip -p 783 -A my.local.ip
,
Выполнение моего примера теперь показывает warn: spamd: bad protocol: header error: (EOF during headers)
ошибка, из-за того, как я открываю сокет в моем простом примере. Если я использую GitHub репо я связал, теперь он возвращается правильно.
Других решений пока нет …