G?khan Alkan:
> I try to develop poc code for postfix content filtering. All i need is read
> the 10025/tcp and send all data which i can read to 10026/tcp. Below is my
> poc code. But i try to send email it doesn't work and postfix show me "451
> 4.3.0 Error: queue file write error".

I recommend that you use netcat.

        Wietse

>         fcntl(server_sock, F_SETFL, O_NONBLOCK);

What if fcntl() reports an error?

>         fcntl(client_sock, F_SETFL, O_NONBLOCK);

client_sock is still zero here.

What if fcntl() reports an error? 

>         client_sock = accept(server_sock, (struct sockaddr
> *)&client_addr, &addr_len);

What if accept() reports an error?  It will always return -1 because
server_sock is non-blocking. Thus, client_sock will always be -1.

>         sock_fd = socket(AF_INET, SOCK_STREAM, 0);

What if socket() reports an error?

>         while(1) {
>                 result = recv(client_sock, buff, sizeof(buff),0 );

What if recv() reports an error? At this point, client_sock is
-1 because accept() reported an error. See above.

>                 inet_pton(AF_INET, REMOTE_IP, &remote_addr.sin_addr);
>                 connect(sock_fd, (struct sockaddr *)&remote_addr,
> sizeof(remote_addr));

What if connect() reports an error?

>                 send(sock_fd, buff, (sizeof(buff)-1), 0);

What if send() reports an error?

>         }

The above program loops forever in while(1).

>         shutdown(client_sock, SHUT_RDWR);

What if shutdown() reports an error? At this point client_sock is -1
because accept() reported an error. See above.

>         close(server_sock);
>         close(client_sock);
>         close(sock_fd);

        Wietse

Reply via email to