[Exim] Outlook 4.xx and AUTH

トップ ページ
このメッセージを削除
このメッセージに返信
著者: oscar
日付:  
To: exim-users
題目: [Exim] Outlook 4.xx and AUTH
Hello

I see that Outlook 4 don't work with standard AUTH.
EHLO command in normal situation replay something like this...

EHLO dns
250-reserva Hello localhost [127.0.0.1]
250-SIZE 13631488
250-8BITMIME
250-EXPN
250-PIPELINING
250-AUTH LOGIN
250 HELP

but Outlook 4.x don't understand this and don't authoritate on the server.

I have sawn that a MS Mail server replay this

EHLO dns
250-cas says hello
250-SIZE 0
250-8BITMIME
250-DSN
250-AUTH=LOGIN NTLM
250-ETRN
250 EXPN

AUTH= ?

This is the problem.

With these patches, I have added a new boolean option "auth_hack_outlook4".
If this option is set to true, exim duplicate AUTH in the EHLO reply and
Outlook 4 can work with exim AUTH.

EHLO dns
250-reserva Hello localhost [127.0.0.1]
250-SIZE 13631488
250-8BITMIME
250-EXPN
250-PIPELINING
250-AUTH=LOGIN
250-AUTH LOGIN
250 HELP

I have see that Outlook need too this prompt in AUTH LOGIN EXACTLY

server_prompts = "Username::: Password::"

I hope it will be usefull for more people

*** src/globals.c.orig    Fri Jan 26 17:02:00 2001
--- src/globals.c    Fri Jan 26 12:29:02 2001
***************
*** 37,42 ****
--- 37,43 ----


  #ifdef HAVE_AUTH
  BOOL   auth_always_advertise  = TRUE;
+ BOOL   auth_hack_outlook4     = FALSE;
  char  *auth_hosts             = NULL;
  #ifdef SUPPORT_TLS
  char  *auth_over_tls_hosts    = NULL;

*** src/globals.h.orig    Fri Jan 26 17:02:04 2001
--- src/globals.h    Fri Jan 26 12:07:19 2001
***************
*** 23,28 ****
--- 23,29 ----


  #ifdef HAVE_AUTH
  extern BOOL   auth_always_advertise;  /* If FALSE, advertise only when needed */
+ extern BOOL   auth_hack_outlook4;     /* If FALSE, advertise only when needed */
  extern char  *auth_hosts;             /* These must authenticate */
  #ifdef SUPPORT_TLS
  extern char  *auth_over_tls_hosts;    /* These must use TLS for AUTH */

*** src/smtp_in.c.orig    Fri Jan 26 12:33:20 2001
--- src/smtp_in.c    Fri Jan 26 13:19:14 2001
***************
*** 2222,2228 ****
--- 2222,2230 ----
          if (advertise)
            {
            auth_instance *au;
+           int s_auth;
            BOOL first = TRUE;
+           s_auth=ptr;
            for (au = auths; au != NULL; au = au->next)
              {
              if (au->server)
***************
*** 2240,2246 ****
                while (++saveptr < ptr) s[saveptr] = toupper(s[saveptr]);
                }
              }
!           if (!first) s = string_cat(s, &size, &ptr, "\r\n", 2);
            }
          }
        #endif
--- 2242,2256 ----
                while (++saveptr < ptr) s[saveptr] = toupper(s[saveptr]);
                }
              }
!           if (!first) 
!             {
!             s = string_cat(s, &size, &ptr, "\r\n", 2);
!             if (auth_hack_outlook4) 
!               {
!               s = string_cat(s, &size, &ptr, s+s_auth,ptr-s_auth);
!               *(s+s_auth+8)='=';
!               }
!             }
            }
          }
        #endif