- Add SASL proxy authentication for SMTP (#1486693)

release-0.6
alecpl 14 years ago
parent 14015da434
commit a392125fe8

@ -26,6 +26,7 @@ CHANGELOG Roundcube Webmail
- Add (different) attachment icon for messages of type multipart/report (#1486165) - Add (different) attachment icon for messages of type multipart/report (#1486165)
- Prevent from inserting empty link when composing HTML message (#1486944) - Prevent from inserting empty link when composing HTML message (#1486944)
- Add caching support in id2uid and uid2id functions (#1487019) - Add caching support in id2uid and uid2id functions (#1487019)
- Add SASL proxy authentication for SMTP (#1486693)
RELEASE 0.4.2 RELEASE 0.4.2
------------- -------------

@ -117,6 +117,9 @@ $rcmail_config['smtp_pass'] = '';
// best server supported one) // best server supported one)
$rcmail_config['smtp_auth_type'] = ''; $rcmail_config['smtp_auth_type'] = '';
// Optional SMTP authorization identifier to be used as authorization proxy
$rcmail_config['smtp_authzid'] = null;
// SMTP HELO host // SMTP HELO host
// Hostname to give to the remote server for SMTP 'HELO' or 'EHLO' messages // Hostname to give to the remote server for SMTP 'HELO' or 'EHLO' messages
// Leave this blank and you will get the server variable 'server_name' or // Leave this blank and you will get the server variable 'server_name' or

@ -44,10 +44,11 @@ class rcube_smtp
* @param string Server port * @param string Server port
* @param string User name * @param string User name
* @param string Password * @param string Password
* @param string Optional authorization ID to be used as authorization proxy
* *
* @return bool Returns true on success, or false on error * @return bool Returns true on success, or false on error
*/ */
public function connect($host=null, $port=null, $user=null, $pass=null) public function connect($host=null, $port=null, $user=null, $pass=null, $authz=null)
{ {
$RCMAIL = rcmail::get_instance(); $RCMAIL = rcmail::get_instance();
@ -63,6 +64,7 @@ class rcube_smtp
'smtp_port' => $port ? $port : $RCMAIL->config->get('smtp_port', 25), 'smtp_port' => $port ? $port : $RCMAIL->config->get('smtp_port', 25),
'smtp_user' => $user ? $user : $RCMAIL->config->get('smtp_user'), 'smtp_user' => $user ? $user : $RCMAIL->config->get('smtp_user'),
'smtp_pass' => $pass ? $pass : $RCMAIL->config->get('smtp_pass'), 'smtp_pass' => $pass ? $pass : $RCMAIL->config->get('smtp_pass'),
'smtp_authzid' => $authz ? $authz : $RCMAIL->config->get('smtp_authzid'),
'smtp_auth_type' => $RCMAIL->config->get('smtp_auth_type'), 'smtp_auth_type' => $RCMAIL->config->get('smtp_auth_type'),
'smtp_helo_host' => $RCMAIL->config->get('smtp_helo_host'), 'smtp_helo_host' => $RCMAIL->config->get('smtp_helo_host'),
'smtp_timeout' => $RCMAIL->config->get('smtp_timeout'), 'smtp_timeout' => $RCMAIL->config->get('smtp_timeout'),
@ -120,6 +122,11 @@ class rcube_smtp
$smtp_pass = str_replace('%p', $RCMAIL->decrypt($_SESSION['password']), $CONFIG['smtp_pass']); $smtp_pass = str_replace('%p', $RCMAIL->decrypt($_SESSION['password']), $CONFIG['smtp_pass']);
$smtp_auth_type = empty($CONFIG['smtp_auth_type']) ? NULL : $CONFIG['smtp_auth_type']; $smtp_auth_type = empty($CONFIG['smtp_auth_type']) ? NULL : $CONFIG['smtp_auth_type'];
if (!empty($CONFIG['smtp_authzid'])) {
$smtp_authz = $smtp_user;
$smtp_user = $CONFIG['smtp_authzid'];
}
// attempt to authenticate to the SMTP server // attempt to authenticate to the SMTP server
if ($smtp_user && $smtp_pass) if ($smtp_user && $smtp_pass)
{ {
@ -127,7 +134,7 @@ class rcube_smtp
if (strpos($smtp_user, '@')) if (strpos($smtp_user, '@'))
$smtp_user = idn_to_ascii($smtp_user); $smtp_user = idn_to_ascii($smtp_user);
$result = $this->conn->auth($smtp_user, $smtp_pass, $smtp_auth_type, $use_tls); $result = $this->conn->auth($smtp_user, $smtp_pass, $smtp_auth_type, $use_tls, $smtp_authz);
if (PEAR::isError($result)) if (PEAR::isError($result))
{ {

Loading…
Cancel
Save