postfix and php sockets

shark_255

Новичок
postfix and php sockets

Вопрос переплетен с почтовым сервером postfix и php

Задача состоит в следующем - когда приходит почта - ее обрабатывает postfix,
в это время предполагается обработать php фильтром (подобно фильтрам на вирусы
и спам) таким образом, чтобы читать входящее сообщение, сохранять его в отдельную
папочку.

Фильтр, насколько я понимаю - это сервер-слушатель - он реализован у меня на php через сокеты.


Проблема вот в чем - я получаю не тело сообщения, а только выход, то есть строчку "QUIT".
(тут вроде бы ясно, значит postfix не то передает - но я прописываю фильтр по аналогии
с другими)

Кто, что может подсказать по этому поводу - буду заранее благодарен
(понимаю что тема оффтопична, но может кто сталкивался)

код чтения прилагается:

PHP:
while (1)
{	
	set_time_limit(0);
	$address = "127.0.0.1";
	$port = 10029;
	$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
	socket_bind($socket, $address, $port);
	socket_listen($socket);
	

	//$connection = socket_accept($socket);
	//$result = trim(socket_read($connection, 100000));
	if (($connection = socket_accept($socket)) === false) {
		$err_string = "socket_accept() failed: reason: " . socket_strerror(socket_last_error($socket)) . "\n";
        echo $err_string;
        file_put_contents("error.log", $err_string);
    }
    
	if (false === ($result = socket_read($connection, 100000))) {
			$err_string = "socket_read() failed: reason: " . socket_strerror(socket_last_error($connection)) . "\n";
            echo $err_string;
			file_put_contents("error.log", $err_string);
        }
	
	socket_close($socket);
	socket_shutdown($socket);
	file_put_contents(time().".txt",$result);
	
	$port_response = 10025;
	$socket_response = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
	socket_bind($socket_response, $address, $port);
	
	socket_write($socket_response, $result);
	socket_close($socket_response);
	socket_shutdown($socket_response);
}
 

weregod

unserializer
по задаче не скажу ничего, а по коду - я бы

Код:
    set_time_limit(0); 
    $address = "127.0.0.1"; 
    $port = 10029; 
    $socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP); 
    socket_bind($socket, $address, $port); 
    socket_listen($socket);
из цикла вынес бы...
 

ys

отодвинутый новичок
shark_255

А зачем такой бубен?
Не проще ли в php скрипте получать на stdin вход с постфикса, а выплевывать в stdout результат?
Причем это делается штатными средствами самого постфикса без всяких бубнов с сокетами.
 
Сверху