Hi

No reply on that message? Any chance the patch gets checked in?

Emmanuel Dreyfus <[email protected]> wrote:

> A.L.E.C <[email protected]> wrote:
> 
> > I propose to add 'smtp_conn_options' option where you could specify the
> > whole options array as above. In comments we should provide an example
> > and link to http://us1.php.net/manual/en/context.ssl.php
> 
> Here is the patch to do it. It took me some time to discover that certificate
> validation does not work with socket timeout set to 0. Hence, while there, 
> I fixed smtp_timeout that was not honoured. 
> 
> --- program/include/rcube_smtp.php.orig
> +++ program/include/rcube_smtp.php
> @@ -70,8 +70,9 @@
>        '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'),
> +      'smtp_conn_options' => $RCMAIL->config->get('smtp_conn_options'),
>        'smtp_auth_callbacks' => array(),
>      ));
>  
>      $smtp_host = rcube_parse_host($CONFIG['smtp_server']);
> @@ -106,9 +107,13 @@
>  
>      // IDNA Support
>      $smtp_host = rcube_idn_to_ascii($smtp_host);
>  
> -    $this->conn = new Net_SMTP($smtp_host, $smtp_port, $helo_host);
> +    if (!empty($CONFIG['smtp_conn_options'])) {
> +        $this->conn = new Net_SMTP($smtp_host, $smtp_port, $helo_host,
 false, 0, $CONFIG['smtp_conn_options']);
> +    } else {
> +        $this->conn = new Net_SMTP($smtp_host, $smtp_port, $helo_host);
> +    }
>  
>      if ($RCMAIL->config->get('smtp_debug'))
>        $this->conn->setDebug(true, array($this, 'debug_handler'));
>  
> @@ -135,9 +140,9 @@
>        }
>      }
>  
>      // try to connect to server and exit on failure
> -    $result = $this->conn->connect($smtp_timeout);
> +    $result = $this->conn->connect($CONFIG['smtp_timeout']);
>  
>      if (PEAR::isError($result)) {
>        $this->response[] = "Connection failed: ".$result->getMessage();
>        $this->error = array('label' => 'smtpconnerror', 'vars' => 
array('code' => $this->conn->_code));
> --- config/main.inc.php.dist.orig 
> +++ config/main.inc.php.dist 
>  
>  // SMTP connection timeout, in seconds. Default: 0 (no limit)
>  $rcmail_config['smtp_timeout'] = 0;
>  
> +// SMTP socket contect options
> +// See http://us1.php.net/manual/en/context.ssl.php
> +// The example below enable server certificate validation, and
> +// requires $rcmail_config['smtp_timeout'] to be non zero.
> +// $rcmail_config['smtp_conn_options'] = array(
> +//   'ssl'         => array( 
> +//     'verify_peer'     => TRUE,
> +//     'verify_depth     => 3,
> +//     'cafile'          => '/etc/openssl/certs/ca.crt',
> +//   ),
> +// );
> +
>  // ----------------------------------
>  // SYSTEM
>  // ----------------------------------
>  


-- 
Emmanuel Dreyfus
http://hcpnet.free.fr/pubz
[email protected]
_______________________________________________
Roundcube Development discussion mailing list
[email protected]
http://lists.roundcube.net/mailman/listinfo/dev

Reply via email to