alecpl
2010-10-11 a392125fe82809bca9ca3b4940d1cb78f4dd7644
- Add SASL proxy authentication for SMTP (#1486693)


3 files modified
15 ■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
config/main.inc.php.dist 3 ●●●●● patch | view | raw | blame | history
program/include/rcube_smtp.php 11 ●●●● patch | view | raw | blame | history
CHANGELOG
@@ -26,6 +26,7 @@
- Add (different) attachment icon for messages of type multipart/report (#1486165)
- Prevent from inserting empty link when composing HTML message (#1486944)
- Add caching support in id2uid and uid2id functions (#1487019)
- Add SASL proxy authentication for SMTP (#1486693)
RELEASE 0.4.2
-------------
config/main.inc.php.dist
@@ -117,6 +117,9 @@
// best server supported one)
$rcmail_config['smtp_auth_type'] = '';
// Optional SMTP authorization identifier to be used as authorization proxy
$rcmail_config['smtp_authzid'] = null;
// SMTP HELO host 
// 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 
program/include/rcube_smtp.php
@@ -44,10 +44,11 @@
   * @param string Server port
   * @param string User name
   * @param string Password
   * @param string Optional authorization ID to be used as authorization proxy
   *
   * @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();
  
@@ -63,6 +64,7 @@
      'smtp_port'   => $port ? $port : $RCMAIL->config->get('smtp_port', 25),
      'smtp_user'   => $user ? $user : $RCMAIL->config->get('smtp_user'),
      '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_helo_host' => $RCMAIL->config->get('smtp_helo_host'),
      'smtp_timeout'   => $RCMAIL->config->get('smtp_timeout'),
@@ -120,6 +122,11 @@
    $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'];
    if (!empty($CONFIG['smtp_authzid'])) {
      $smtp_authz = $smtp_user;
      $smtp_user  = $CONFIG['smtp_authzid'];
    }
    // attempt to authenticate to the SMTP server
    if ($smtp_user && $smtp_pass)
    {
@@ -127,7 +134,7 @@
      if (strpos($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))
      {