CHANGELOG | ●●●●● patch | view | raw | blame | history | |
config/main.inc.php.dist | ●●●●● patch | view | raw | blame | history | |
program/include/rcmail.php | ●●●●● patch | view | raw | blame | history | |
program/lib/imap.inc | ●●●●● patch | view | raw | blame | history |
CHANGELOG
@@ -1,6 +1,7 @@ CHANGELOG RoundCube Webmail =========================== - Support STARTTLS in IMAP connection (#1485284) - Fix DEL key problem in search boxes (#1485528) - Support several e-mail addresses per user from virtuser_file (#1485678) - Fix drag&drop with scrolling on IE (#1485786) config/main.inc.php.dist
@@ -51,7 +51,7 @@ // the mail host chosen to perform the log-in // leave blank to show a textbox at login, give a list of hosts // to display a pulldown menu or set one host as string. // To use SSL connection, enter ssl://hostname:993 // To use SSL/TLS connection, enter hostname with prefix ssl:// or tls:// $rcmail_config['default_host'] = ''; // TCP port used for IMAP connections program/include/rcmail.php
@@ -436,11 +436,13 @@ if ($a_host['host']) { $host = $a_host['host']; $imap_ssl = (isset($a_host['scheme']) && in_array($a_host['scheme'], array('ssl','imaps','tls'))) ? $a_host['scheme'] : null; $imap_port = isset($a_host['port']) ? $a_host['port'] : ($imap_ssl ? 993 : $config['default_port']); if(!empty($a_host['port'])) $imap_port = $a_host['port']; else if ($imap_ssl && $imap_ssl != 'tls') $imap_port = 993; } else $imap_port = $config['default_port']; $imap_port = $imap_port ? $imap_port : $config['default_port']; /* Modify username with domain if required Inspired by Marco <P0L0_notspam_binware.org> program/lib/imap.inc
@@ -335,6 +335,7 @@ } if ($bye && strncmp($string, '* BYE ', 6) == 0) { return true; } return false; } @@ -381,6 +382,12 @@ } return false; } function iil_C_ClearCapability(&$conn) { $conn->capability = array(); $conn->capability_readed = false; } function iil_C_Authenticate(&$conn, $user, $pass, $encChallenge) { @@ -564,7 +571,7 @@ $result = false; //initialize connection // initialize connection $conn = new iilConnection; $conn->error = ''; $conn->errorNum = 0; @@ -598,16 +605,15 @@ $iil_errornum = -1; return false; } if (!$ICL_PORT) { $ICL_PORT = 143; } //check for SSL if ($ICL_SSL) { if ($ICL_SSL && $ICL_SSL != 'tls') { $host = $ICL_SSL . '://' . $host; } //open socket connection $conn->fp = fsockopen($host, $ICL_PORT, $errno, $errstr, 10); if (!$conn->fp) { $iil_error = "Could not connect to $host at port $ICL_PORT: $errstr"; @@ -625,6 +631,29 @@ $conn->message .= $line; // TLS connection if ($ICL_SSL == 'tls' && iil_C_GetCapability($conn, 'STARTTLS')) { if (version_compare(PHP_VERSION, '5.1.0', '>=')) { iil_PutLine($conn->fp, 'stls000 STARTTLS'); $line = iil_ReadLine($conn->fp, 4096); if (!iil_StartsWith($line, 'stls000 OK')) { $iil_error = "Server responded to STARTTLS with: $line"; $iil_errornum = -2; return false; } if (!stream_socket_enable_crypto($conn->fp, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) { $iil_error = "Unable to negotiate TLS"; $iil_errornum = -2; return false; } // Now we're authenticated, capabilities need to be reread iil_C_ClearCapability($conn); } } if (strcasecmp($auth_method, "check") == 0) { //check for supported auth methods if (iil_C_GetCapability($conn, 'AUTH=CRAM-MD5') || iil_C_GetCapability($conn, 'AUTH=CRAM_MD5')) {