added authenticated smtp server support
authorlkehresman <lkehresman@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Fri, 13 Apr 2001 15:25:01 +0000 (15:25 +0000)
committerlkehresman <lkehresman@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Fri, 13 Apr 2001 15:25:01 +0000 (15:25 +0000)
git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@1226 7612ce4b-ef26-0410-bec9-ea0150e637f0

ChangeLog
config/conf.pl
functions/imap_mailbox.php
functions/smtp.php

index 8f86cd2a3f2e8050bb72a569d70da6b084538f51..7506568d0855c33d62d6bdce55b4841f78a80ff2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,12 @@
 Version 1.1.0 -- DEVELOPMENT
 ----------------------------
+- Added ability to read HTML messages by default instead of plain text (Display Options)
+- Added authenticated SMTP server support (configure in conf.pl)
+- Rewrote attachment handling code in compose.php
 - If aliases are typed in To, Cc, or Bcc, they are automatically lookedup in
   in the addressbook and converted to the associated addresses.
-- Added collapseable folder listing (an option that can be turned on)
-- Added alternating row colors to improve interface
+- Added collapseable folder listing (an option that can be turned on in Folder Options)
+- Added alternating row colors to improve interface (Display Options)
 - Added Croatian translation by Albert Novak <anovak@pu.carnet.hr>
 
 Version 1.0.5 -- DEVELOPMENT
index 2cc338ccaad409e2212c658f7e1b3b0cea9e9ca3..ab645573a43065ed97dee59508d78dd84101af34 100755 (executable)
@@ -242,6 +242,9 @@ if (!$force_username_lowercase) {
 if (!$optional_delimiter) {
        $optional_delimiter = "detect";
 }
+if (!$use_authenticated_smtp) {
+    $use_authenticated_smtp = "false";
+}
 
 #####################################################################################
 if ($config_use_color == 1) {
@@ -298,10 +301,11 @@ while (($command ne "q") && ($command ne "Q")) {
       } else {
          print "6.    SMTP Server        : $WHT$smtpServerAddress$NRM\n";
          print "7.    SMTP Port          : $WHT$smtpPort$NRM\n";
+         print "8.    Authenticated SMTP : $WHT$use_authenticated_smtp$NRM\n";
       }
-      print "8.  Server               : $WHT$imap_server_type$NRM\n";
-      print "9.  Invert Time          : $WHT$invert_time$NRM\n";
-      print "10. Delimiter            : $WHT$optional_delimiter$NRM\n";
+      print "9.  Server               : $WHT$imap_server_type$NRM\n";
+      print "10. Invert Time          : $WHT$invert_time$NRM\n";
+      print "11. Delimiter            : $WHT$optional_delimiter$NRM\n";
       print "\n";
       print "R   Return to Main Menu\n";
    } elsif ($menu == 3) {
@@ -454,9 +458,10 @@ while (($command ne "q") && ($command ne "Q")) {
          elsif ($command == 5)  { $sendmail_path      = command15 (); }
          elsif ($command == 6)  { $smtpServerAddress  = command16 (); }
          elsif ($command == 7)  { $smtpPort           = command17 (); }
-         elsif ($command == 8)  { $imap_server_type   = command18 (); }
-         elsif ($command == 9)  { $invert_time        = command19 (); }
-         elsif ($command == 10) { $optional_delimiter = command110 (); }
+         elsif ($command == 8)  { $use_authenticated_smtp   = command18 (); }
+         elsif ($command == 9)  { $imap_server_type   = command19 (); }
+         elsif ($command == 10) { $invert_time        = command110 (); }
+         elsif ($command == 11) { $optional_delimiter = command111 (); }
       } elsif ($menu == 3) {
          if    ($command == 1) { $default_folder_prefix          = command21 (); }
          elsif ($command == 2) { $show_prefix_option             = command22 (); }
@@ -651,8 +656,27 @@ sub command17 {
    }
    return $new_smtpPort;
 }
-# imap_server_type 
+
+# authenticated server 
 sub command18 {
+   print "Do you wish to use an authenticated SMTP server?  Your server must\n";
+   print "support this in order for SquirrelMail to work with it.  We implemented\n";
+   print "it according to RFC 2554.\n";
+   
+   $YesNo = 'n';
+   $YesNo = 'y' if ($use_authenticated_smtp eq "true");
+
+   print "Use authenticated SMTP server (y/n) [$WHT$YesNo$NRM]: $WHT";
+
+   $new_use_authenticated_smtp = <STDIN>;
+   $new_use_authenticated_smtp =~ tr/yn//cd;
+   return "true" if ($new_use_authenticated_smtp eq "y");
+   return "false" if ($new_use_authenticated_smtp eq "n");
+   return $use_authenticated_smtp;
+}   
+
+# imap_server_type 
+sub command19 {
    print "Each IMAP server has its own quirks.  As much as we tried to stick\n";
    print "to standards, it doesn't help much if the IMAP server doesn't follow\n";
    print "the same principles.  We have made some work-arounds for some of\n";
@@ -674,7 +698,7 @@ sub command18 {
 }
 
 # invert_time
-sub command19 {
+sub command110 {
    print "Sometimes the date of messages sent is messed up (off by a few hours\n";
    print "on some machines).  Typically this happens if the system doesn't support\n";
    print "tm_gmtoff.  It will happen only if your time zone is \"negative\".\n";
@@ -696,7 +720,7 @@ sub command19 {
    return $invert_time;
 }   
 
-sub command110 {
+sub command111 {
        print "This is the delimiter that your IMAP server uses to distinguish between\n";
        print "folders.  For example, Cyrus uses '.' as the delimiter and a complete\n";
        print "folder would look like 'INBOX.Friends.Bob', while UW uses '/' and would\n";
@@ -1536,16 +1560,17 @@ sub save_data {
 
    print FILE "\n";
 
-   print FILE "\t\$domain               = \"$domain\";\n";
-   print FILE "\t\$imapServerAddress    = \"$imapServerAddress\";\n";
-   print FILE "\t\$imapPort             =  $imapPort;\n";
-   print FILE "\t\$useSendmail          =  $useSendmail;\n";
-   print FILE "\t\$smtpServerAddress    = \"$smtpServerAddress\";\n";
-   print FILE "\t\$smtpPort             =  $smtpPort;\n";
-   print FILE "\t\$sendmail_path        = \"$sendmail_path\";\n";
-   print FILE "\t\$imap_server_type     = \"$imap_server_type\";\n";
-   print FILE "\t\$invert_time          = $invert_time;\n";
-       print FILE "\t\$optional_delimiter   = \"$optional_delimiter\";\n";
+   print FILE "\t\$domain                 = \"$domain\";\n";
+   print FILE "\t\$imapServerAddress      = \"$imapServerAddress\";\n";
+   print FILE "\t\$imapPort               =  $imapPort;\n";
+   print FILE "\t\$useSendmail            =  $useSendmail;\n";
+   print FILE "\t\$smtpServerAddress      = \"$smtpServerAddress\";\n";
+   print FILE "\t\$smtpPort               =  $smtpPort;\n";
+   print FILE "\t\$sendmail_path          = \"$sendmail_path\";\n";
+   print FILE "\t\$use_authenticated_smtp = $use_authenticated_smtp;\n";
+   print FILE "\t\$imap_server_type       = \"$imap_server_type\";\n";
+   print FILE "\t\$invert_time            = $invert_time;\n";
+   print FILE "\t\$optional_delimiter     = \"$optional_delimiter\";\n";
    
    print FILE "\n";
 
index f88a5995e287c4ef166927e3c091a435ad7e3dff..b121978433b4d65180d0d1e4191034a79c6f3258 100755 (executable)
          //$boxes[$g]['unformatted-disp'] = ereg_replace('^' . $folder_prefix, '', $mailbox);
          if (substr($mailbox,0,strlen($folder_prefix))==$folder_prefix) { 
             $boxes[$g]['unformatted-disp'] = substr($mailbox, strlen($folder_prefix));
+         } else if (strtolower($mailbox) == "inbox") {
+            $boxes[$g]['unformatted-disp'] = $mailbox;
          }
          $boxes[$g]['id'] = $g;
 
index 09a1a7e4a1e0c311d9fb79256d6edbbed9f28f12..6b53378749bf4e659fe50acf586be1094f81f49c 100644 (file)
 
    function sendSMTP($t, $c, $b, $subject, $body, $more_headers) {
       global $username, $popuser, $domain, $version, $smtpServerAddress, $smtpPort,
-         $data_dir, $color;
+         $data_dir, $color, $use_authenticating_smtp;
 
       $to = expandAddrs(parseAddrs($t));
       $cc = expandAddrs(parseAddrs($c));
       $cc_list = getLineOfAddrs($cc);
 
       /** Lets introduce ourselves */
-      fputs($smtpConnection, "HELO $domain\r\n");
-      $tmp = fgets($smtpConnection, 1024);
-      errorCheck($tmp, $smtpConnection);
+      if (! isset ($use_authenticating_smtp)) {
+         fputs($smtpConnection, "HELO $domain\r\n");
+         $tmp = fgets($smtpConnection, 1024);
+         errorCheck($tmp, $smtpConnection);
+      } else {
+         fputs($smtpConnection, "EHLO $domain\r\n");
+         $tmp = fgets($smtpConnection, 1024);
+         errorCheck($tmp, $smtpConnection);
+
+         fputs($smtpConnection, "AUTH LOGIN\r\n");
+         $tmp = fgets($smtpConnection, 1024);
+         errorCheck($tmp, $smtpConnection);
+
+         fputs($smtpConnection, base64_encode ($username) . "\r\n");
+         $tmp = fgets($smtpConnection, 1024);
+         errorCheck($tmp, $smtpConnection);
+
+         fputs($smtpConnection, base64_encode ($OneTimePadDecrypt($key, $onetimepad)) . "\r\n");
+         $tmp = fgets($smtpConnection, 1024);
+         errorCheck($tmp, $smtpConnection);
+      }
 
       /** Ok, who is sending the message? */
       fputs($smtpConnection, "MAIL FROM: <$from_addr>\r\n");
                      $status = 0;
                      break;
 
-
+         case 235:   return; break;
          case 250:   $message = 'Requested mail action okay, completed';
                      $status = 5;
                      break;
          case 251:   $message = 'User not local; will forward';
                      $status = 5;
                      break;
+         case 334:   return; break;
          case 450:   $message = 'Requested mail action not taken:  mailbox unavailable';
                      $status = 0;
                      break;
    }
 
    function sendMessage($t, $c, $b, $subject, $body, $reply_id) {
-      global $useSendmail, $msg_id, $is_reply, $mailbox;
+      global $useSendmail, $msg_id, $is_reply, $mailbox, $onetimepad;
       global $data_dir, $username, $domain, $key, $version, $sent_folder, $imapServerAddress, $imapPort;
       $more_headers = Array();