ID: 50025 Updated by: [email protected] Reported By: wooptoo at gmail dot com Status: Feedback Bug Type: Streams related Operating System: Linux x86_64 PHP Version: 5.3.0 New Comment:
For each SMTP command you send, the server send you a reply (e.g. "200 ok"). Before enabling TLS, you need to read everything that was sent unencrypted by the server. Previous Comments: ------------------------------------------------------------------------ [2009-10-27 22:28:38] [email protected] Thank you for this bug report. To properly diagnose the problem, we need a short but complete example script to be able to reproduce this bug ourselves. A proper reproducing script starts with <?php and ends with ?>, is max. 10-20 lines long and does not require any external resources such as databases, etc. If the script requires a database to demonstrate the issue, please make sure it creates all necessary tables, stored procedures etc. Please avoid embedding huge scripts into the report. ------------------------------------------------------------------------ [2009-10-27 20:23:50] wooptoo at gmail dot com Description: ------------ You have to fgets() the output from the socket after STARTTLS or stream_socket_enable_crypto() won't work on SMTP. This is on SMTP. I didn't test on other protocols. Why is the fgets() necessary? Reproduce code: --------------- <?php $conn = fsockopen($server, $port, $errno, $errstr, $timeout); fputs($conn, 'HELO localhost'."\r\n"); fputs($conn, 'STARTTLS'."\r\n"); // why is this necessary? : fgets($conn); stream_socket_enable_crypto($conn, true, STREAM_CRYPTO_METHOD_TLS_CLIENT); fputs($conn, 'HELO localhost'."\r\n"); ?> ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=50025&edit=1
