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