alecpl
2010-10-22 63d4d61148cdaac48973baea2ab783d3e965a9c2
- Re-implemented SMTP proxy authorization support


3 files modified
23 ■■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
config/main.inc.php.dist 7 ●●●● patch | view | raw | blame | history
program/include/rcube_smtp.php 15 ●●●● patch | view | raw | blame | history
CHANGELOG
@@ -44,6 +44,7 @@
- Add SASL-IR support in IMAP (RFC 4959)
- Add LOGINDISABLED support (RFC 2595)
- Add support for AUTH=PLAIN in IMAP authentication
- Re-implemented SMTP proxy authorization support
RELEASE 0.4.2
-------------
config/main.inc.php.dist
@@ -117,8 +117,11 @@
// best server supported one)
$rcmail_config['smtp_auth_type'] = '';
// Optional SMTP authorization identifier to be used as authorization proxy
$rcmail_config['smtp_authzid'] = null;
// Optional SMTP authentication identifier to be used as authorization proxy
$rcmail_config['smtp_auth_cid'] = null;
// Optional SMTP authorization password to be used for smtp_auth_cid
$rcmail_config['smtp_auth_pw'] = null;
// SMTP HELO host 
// Hostname to give to the remote server for SMTP 'HELO' or 'EHLO' messages 
program/include/rcube_smtp.php
@@ -44,11 +44,10 @@
   * @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, $authz=null)
  public function connect($host=null, $port=null, $user=null, $pass=null)
  {
    $RCMAIL = rcmail::get_instance();
  
@@ -64,7 +63,8 @@
      '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_cid'  => $RCMAIL->config->get('smtp_auth_cid'),
      'smtp_auth_pw'   => $RCMAIL->config->get('smtp_auth_pw'),
      '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'),
@@ -110,8 +110,8 @@
    // try to connect to server and exit on failure
    $result = $this->conn->connect($smtp_timeout);
    if (PEAR::isError($result))
    {
    if (PEAR::isError($result)) {
      $this->response[] = "Connection failed: ".$result->getMessage();
      $this->error = array('label' => 'smtpconnerror', 'vars' => array('code' => $this->conn->_code));
      $this->conn = null;
@@ -122,9 +122,10 @@
    $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'])) {
    if (!empty($CONFIG['smtp_auth_cid'])) {
      $smtp_authz = $smtp_user;
      $smtp_user  = $CONFIG['smtp_authzid'];
      $smtp_user  = $CONFIG['smtp_auth_cid'];
      $smtp_pass  = $CONFIG['smtp_auth_pw'];
    }
    // attempt to authenticate to the SMTP server