From 357f9c831a7b1d01a6f7dfd40f44f77acde15a54 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Tue, 21 Jan 2014 07:12:06 -0500
Subject: [PATCH] Support SMTP socket context options via new config option 'smtp_conn_options'

---
 program/lib/Roundcube/rcube_smtp.php |    3 ++-
 CHANGELOG                            |    1 +
 config/defaults.inc.php              |   13 +++++++++++++
 3 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 6beb463..b8c8237 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
+- Support SMTP socket context options via new config option 'smtp_conn_options'
 - Fix compatibility with PHP 5.2 in html.php file (#1489514)
 - Remove expand/collapse with plus/minus keys (on numeric keypad) (#1489513)
 - Fix issue where filesystem path was added to all-attachments (zip) file (#1489507)
diff --git a/config/defaults.inc.php b/config/defaults.inc.php
index b1e3bc8..8c9b96f 100644
--- a/config/defaults.inc.php
+++ b/config/defaults.inc.php
@@ -235,6 +235,19 @@
 // timeout > 0 causes connection errors (https://bugs.php.net/bug.php?id=54511)
 $config['smtp_timeout'] = 0;
 
+// SMTP socket context options
+// See http://php.net/manual/en/context.ssl.php
+// The example below enables server certificate validation, and
+// requires 'smtp_timeout' to be non zero.
+// $config['smtp_conn_options'] = array(
+//   'ssl'         => array(
+//     'verify_peer'     => true,
+//     'verify_depth     => 3,
+//     'cafile'          => '/etc/openssl/certs/ca.crt',
+//   ),
+// );
+$config['smtp_conn_options'] = null;
+
 // ----------------------------------
 // LDAP
 // ----------------------------------
diff --git a/program/lib/Roundcube/rcube_smtp.php b/program/lib/Roundcube/rcube_smtp.php
index 60b1389..5f1200b 100644
--- a/program/lib/Roundcube/rcube_smtp.php
+++ b/program/lib/Roundcube/rcube_smtp.php
@@ -67,6 +67,7 @@
             'smtp_auth_type' => $rcube->config->get('smtp_auth_type'),
             'smtp_helo_host' => $rcube->config->get('smtp_helo_host'),
             'smtp_timeout'   => $rcube->config->get('smtp_timeout'),
+            'smtp_conn_options'   => $rcube->config->get('smtp_conn_options'),
             'smtp_auth_callbacks' => array(),
         ));
 
@@ -106,7 +107,7 @@
         // IDNA Support
         $smtp_host = rcube_utils::idn_to_ascii($smtp_host);
 
-        $this->conn = new Net_SMTP($smtp_host, $smtp_port, $helo_host);
+        $this->conn = new Net_SMTP($smtp_host, $smtp_port, $helo_host, false, 0, $CONFIG['smtp_conn_options']);
 
         if ($rcube->config->get('smtp_debug')) {
             $this->conn->setDebug(true, array($this, 'debug_handler'));

--
Gitblit v1.9.1