开发者

PHP SMTP server using sockets: connection refused

In one of my personal project I am developing a basic SMTP server in php. It's ready and working when I launch it on its own from the command line; I access it correctly through telnet and it is responding correctly to SMTP commands and I access it correctly also from a php script sending an email using this se开发者_运维知识库rver.

Now I have an issue when I launch the server from a php script and not from the command line (I do it using exec function). The server is responding correctly when I access it through telnet but not anymore from a php script sending an email.

Could anyone help me?

Note

To send emails from php scripts I use Mail PEAR extension. When I launch the server from within a script and try to send an email in the same process I get this error:

SMTP: Failed to connect socket: Connection refused (code: -1, response: )

Summary

My server implementation is in server.php and the script sending an email is in mail-test.php.

1) If I launch the server on the command line this way: php server.php and then launch php mail-test.php the script is processed normally and the email is sent. I can also access the server via telnet 127.0.0.1 3535 and communicating with the server normally.

2) Using an another script called test.php I wanted to wrap the server management, launching the server via exec("php server.php > /dev/null 2>&1 &"); and then doing the mail sending from that script in one shot. Doing that way, the server is correctly launched (I can access it via telnet) but emails sent from test.php thus after the server launch raise an error. If I send emails from an another script before killing the test.php process the email is correctly sent however...

I hope I am enough explicit.


Strangely, I resolved this issue by setting SO_RCVTIMEO this way:

socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array('sec' => 0, 'usec' => 500))

The error message I got was not really meaningful.

I hope that it help others facing similar issue.


Now I have an issue when I launch the server from a php script and not from the command line (I do it using exec function). The server is responding correctly when I access it through telnet but not anymore from a php script sending an email.

It's impossible to tell. Maybe there are different configuration php.ini (though I'm not sure what could influence this) files, maybe the PHP executable you're calling is another one (check the PATH environment variable in both cases)...

Try running netstat to check if there any differences in the listening socket.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜