Allow a different server address for the POP server to be configured when using POP...
authorpdontthink <pdontthink@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Sat, 19 Jul 2008 17:27:54 +0000 (17:27 +0000)
committerpdontthink <pdontthink@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Sat, 19 Jul 2008 17:27:54 +0000 (17:27 +0000)
git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@13239 7612ce4b-ef26-0410-bec9-ea0150e637f0

ChangeLog
class/deliver/Deliver_SMTP.class.php
config/conf.pl
config/config_default.php
functions/compose.php
src/compose.php
src/configtest.php
src/read_body.php

index 09304d8..0c87ca9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -259,6 +259,8 @@ Version 1.5.2 - SVN
     have long been in the file-based prefs backend
   - Removed the Address Take (abook_take) plugin; please see the Add Address
     (third party) plugin.
+  - Allow a different server address for the POP server to be configured when
+    using POP before SMTP.
 
 Version 1.5.1 (branched on 2006-02-12)
 --------------------------------------
index 5ac0437..d245872 100644 (file)
@@ -62,11 +62,11 @@ class Deliver_SMTP extends Deliver {
         }
     }
 
-    function initStream($message, $domain, $length=0, $host='', $port='', $user='', $pass='', $authpop=false) {
+    function initStream($message, $domain, $length=0, $host='', $port='', $user='', $pass='', $authpop=false, $pop_host='') {
         global $use_smtp_tls,$smtp_auth_mech;
 
         if ($authpop) {
-            $this->authPop($host, '', $user, $pass);
+            $this->authPop($pop_host, '', $user, $pass);
         }
 
         $rfc822_header = $message->rfc822_header;
index 423fe16..4f3206e 100755 (executable)
@@ -372,6 +372,7 @@ close FILE;
 $useSendmail = 'false'                  if ( lc($useSendmail) ne 'true' );
 $sendmail_path = "/usr/sbin/sendmail"   if ( !$sendmail_path );
 $pop_before_smtp = 'false'              if ( !$pop_before_smtp );
+$pop_before_smtp_host = ''              if ( !$pop_before_smtp_host );
 $default_unseen_notify = 2              if ( !$default_unseen_notify );
 $default_unseen_type = 1                if ( !$default_unseen_type );
 $config_use_color = 0                   if ( !$config_use_color );
@@ -1333,13 +1334,38 @@ sub command18a {
     $YesNo = 'n';
     $YesNo = 'y' if ( lc($pop_before_smtp) eq 'true' );
 
-    print "Use pop before SMTP (y/n) [$WHT$YesNo$NRM]: $WHT";
+    print "Use POP before SMTP (y/n) [$WHT$YesNo$NRM]: $WHT";
 
     $new_pop_before_smtp = <STDIN>;
     $new_pop_before_smtp =~ tr/yn//cd;
-    return 'true'  if ( $new_pop_before_smtp eq "y" );
-    return 'false'  if ( $new_pop_before_smtp eq "n" );
-    return $pop_before_smtp;
+    if ( $new_pop_before_smtp eq "y" ) {
+        $new_pop_before_smtp = "true";
+    } elsif ( $new_pop_before_smtp eq "n" ) {
+        $new_pop_before_smtp = "false";
+    } else {
+        $new_pop_before_smtp = $pop_before_smtp;
+    }
+
+    # if using POP before SMTP, allow setting of custom POP server address
+    if ($new_pop_before_smtp eq "true") {
+        print "$NRM\nIf the address of the POP server is not the same as\n";
+        print "your SMTP server, you may specify it here. Leave blank (to\n";
+        print "clear this, enter only spaces) to use the same address as\n";
+        print "your SMTP server.\n";
+        print "POP before SMTP server address [$WHT$pop_before_smtp_host$NRM]: $WHT";
+
+        $new_pop_before_smtp_host = <STDIN>;
+        if ( $new_pop_before_smtp_host eq "\n" ) {
+            $new_pop_before_smtp_host = $pop_before_smtp_host;
+        } elsif ($new_pop_before_smtp_host =~ /^\s+$/) {
+            $new_pop_before_smtp_host = '';
+        } else {
+            $new_pop_before_smtp_host =~ s/[\r|\n]//g;
+        }
+        $pop_before_smtp_host = $new_pop_before_smtp_host;
+    }
+
+    return $new_pop_before_smtp;
 }
 
 # imap_server_type
@@ -4570,6 +4596,8 @@ sub save_data {
         # boolean
         print CF "\$pop_before_smtp        = $pop_before_smtp;\n";
         # string
+        print CF "\$pop_before_smtp_host   = '$pop_before_smtp_host';\n";
+        # string
         print CF "\$imap_server_type       = '$imap_server_type';\n";
         # boolean
         print CF "\$invert_time            = $invert_time;\n";
index 549a97a..7495608 100644 (file)
@@ -322,6 +322,17 @@ $optional_delimiter = 'detect';
  */
 $pop_before_smtp = false;
 
+/**
+ * POP before SMTP server address
+ *
+ * When using POP3 before SMTP, if the POP server address is
+ * not the same as the SMTP server address, specify it here.
+ * If this is left empty, the SMTP server address will be
+ * used by default.
+ * @global bool $pop_before_smtp_host
+ */
+$pop_before_smtp_host = '';
+
 
 /*** Folder Settings ***/
 /**
index dd8ddca..5839a59 100644 (file)
@@ -130,14 +130,16 @@ function sq_send_mail($to, $subject, $body, $from, $cc='', $bcc='', $message='')
    if (!$useSendmail) {
       require_once(SM_PATH . 'class/deliver/Deliver_SMTP.class.php');
       $deliver = new Deliver_SMTP();
-      global $smtpServerAddress, $smtpPort, $pop_before_smtp, $domain;
+      global $smtpServerAddress, $smtpPort, $pop_before_smtp,
+             $domain, $pop_before_smtp_host;
 
       $authPop = (isset($pop_before_smtp) && $pop_before_smtp) ? true : false;
+      if (empty($pop_before_smtp_host)) $pop_before_smtp_host = $smtpServerAddress;
       $user = '';
       $pass = '';
       get_smtp_user($user, $pass);
       $stream = $deliver->initStream($message,$domain,0,
-                $smtpServerAddress, $smtpPort, $user, $pass, $authPop);
+                $smtpServerAddress, $smtpPort, $user, $pass, $authPop, $pop_before_smtp_host);
    } else {
       require_once(SM_PATH . 'class/deliver/Deliver_SendMail.class.php');
       global $sendmail_path, $sendmail_args;
index 5eba287..8ff6393 100644 (file)
@@ -1577,12 +1577,13 @@ function deliverMessage(&$composeMessage, $draft=false) {
     if (!$useSendmail && !$draft) {
         require_once(SM_PATH . 'class/deliver/Deliver_SMTP.class.php');
         $deliver = new Deliver_SMTP();
-        global $smtpServerAddress, $smtpPort, $pop_before_smtp;
+        global $smtpServerAddress, $smtpPort, $pop_before_smtp, $pop_before_smtp_host;
 
         $authPop = (isset($pop_before_smtp) && $pop_before_smtp) ? true : false;
+        if (empty($pop_before_smtp_host)) $pop_before_smtp_host = $smtpServerAddress;
         get_smtp_user($user, $pass);
         $stream = $deliver->initStream($composeMessage,$domain,0,
-                $smtpServerAddress, $smtpPort, $user, $pass, $authPop);
+                $smtpServerAddress, $smtpPort, $user, $pass, $authPop, $pop_before_smtp_host);
     } elseif (!$draft) {
         require_once(SM_PATH . 'class/deliver/Deliver_SendMail.class.php');
         global $sendmail_path, $sendmail_args;
index 306dbe4..3400c8c 100644 (file)
@@ -660,15 +660,16 @@ if($useSendmail) {
 
     /* POP before SMTP */
     if($pop_before_smtp) {
-        $stream = fsockopen($smtpServerAddress, 110, $err_no, $err_str);
+        if (empty($pop_before_smtp_host)) $pop_before_smtp_host = $smtpServerAddress;
+        $stream = fsockopen($pop_before_smtp_host, 110, $err_no, $err_str);
         if (!$stream) {
-            do_err("Error connecting to POP Server ($smtpServerAddress:110) "
+            do_err("Error connecting to POP Server ($pop_before_smtp_host:110) "
                 . $err_no . ' : ' . htmlspecialchars($err_str));
         }
 
         $tmp = fgets($stream, 1024);
         if (substr($tmp, 0, 3) != '+OK') {
-            do_err("Error connecting to POP Server ($smtpServerAddress:110)"
+            do_err("Error connecting to POP Server ($pop_before_smtp_host:110)"
                 . ' '.htmlspecialchars($tmp));
         }
         fputs($stream, 'QUIT');
index 378f43c..b04b473 100644 (file)
@@ -255,11 +255,12 @@ function SendMDN ( $mailbox, $passed_id, $message, $imapConnection) {
     } else {
         require_once(SM_PATH . 'class/deliver/Deliver_SMTP.class.php');
         $deliver = new Deliver_SMTP();
-        global $smtpServerAddress, $smtpPort, $pop_before_smtp;
+        global $smtpServerAddress, $smtpPort, $pop_before_smtp, $pop_before_smtp_host;
         $authPop = (isset($pop_before_smtp) && $pop_before_smtp) ? true : false;
+        if (empty($pop_before_smtp_host)) $pop_before_smtp_host = $smtpServerAddress;
         get_smtp_user($user, $pass);
         $stream = $deliver->initStream($composeMessage,$domain,0,
-                                       $smtpServerAddress, $smtpPort, $user, $pass, $authPop);
+                                       $smtpServerAddress, $smtpPort, $user, $pass, $authPop, $pop_before_smtp_host);
     }
     $success = false;
     if ($stream) {