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