diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c
index 69ca95b7932805e2d1a4be4fddfcd254e563911e..f5c75647704d5cab5336f4e42e304397539946af 100644
--- a/src/sbbs3/mailsrvr.c
+++ b/src/sbbs3/mailsrvr.c
@@ -1488,6 +1488,7 @@ static void smtp_thread(void* arg)
 	BOOL		telegram=FALSE;
 	BOOL		forward=FALSE;
 	BOOL		no_forward=FALSE;
+	BOOL		auth_login;
 	uint		subnum=INVALID_SUB;
 	FILE*		msgtxt=NULL;
 	char		msgtxt_fname[MAX_PATH+1];
@@ -2260,7 +2261,7 @@ static void smtp_thread(void* arg)
 			while(*p && *p<=' ') p++;
 			SAFECOPY(hello_name,p);
 			sockprintf(socket,"250-%s",startup->host_name);
-			sockprintf(socket,"250 AUTH LOGIN CRAM-MD5");
+			sockprintf(socket,"250 AUTH PLAIN LOGIN CRAM-MD5");
 			esmtp=TRUE;
 			state=SMTP_STATE_HELO;
 			cmd=SMTP_CMD_NONE;
@@ -2268,26 +2269,39 @@ static void smtp_thread(void* arg)
 			subnum=INVALID_SUB;
 			continue;
 		}
-		/* This is a stupid protocol, but it's the only one Outlook Express supports */
-		if(!stricmp(buf,"AUTH LOGIN")) {	
-			sockprintf(socket,"334 VXNlcm5hbWU6");	/* Base64-encoded "Username:" */
+		if((auth_login=(stricmp(buf,"AUTH LOGIN")==0))==TRUE 
+			|| stricmp(buf,"AUTH PLAIN")==0) {
+			if(auth_login)
+				sockprintf(socket,"334 VXNlcm5hbWU6");	/* Base64-encoded "Username:" */
+			else
+				sockprintf(socket,"334 Username:");
 			if((rd=sockreadline(socket, buf, sizeof(buf)))<0) {
 				sockprintf(socket,badarg_rsp);
 				continue;
 			}
-			if(b64_decode(user_name,sizeof(user_name),buf,rd)<1) {
-				sockprintf(socket,badarg_rsp);
-				continue;
-			}
-			sockprintf(socket,"334 UGFzc3dvcmQ6");	/* Base64-encoded "Password:" */
+			if(auth_login) {
+				if(b64_decode(user_name,sizeof(user_name),buf,rd)<1) {
+					sockprintf(socket,badarg_rsp);
+					continue;
+				}
+			} else
+				SAFECOPY(user_name,buf);
+
+			if(auth_login)
+				sockprintf(socket,"334 UGFzc3dvcmQ6");	/* Base64-encoded "Password:" */
+			else
+				sockprintf(socket,"334 Password:");
 			if((rd=sockreadline(socket, buf, sizeof(buf)))<0) {
 				sockprintf(socket,badarg_rsp);
 				continue;
 			}
-			if(b64_decode(user_pass,sizeof(user_pass),buf,rd)<1) {
-				sockprintf(socket,badarg_rsp);
-				continue;
-			}
+			if(auth_login) {
+				if(b64_decode(user_pass,sizeof(user_pass),buf,rd)<1) {
+					sockprintf(socket,badarg_rsp);
+					continue;
+				}
+			} else
+				SAFECOPY(user_pass,buf);
 			if((relay_user.number=matchuser(&scfg,user_name,FALSE))==0) {
 				if(scfg.sys_misc&SM_ECHO_PW)
 					lprintf("%04d !SMTP UNKNOWN USER: %s (password: %s)"
@@ -2323,8 +2337,8 @@ static void smtp_thread(void* arg)
 				relay_user.number=0;
 				break;
 			}
-			lprintf("%04d SMTP %s authenticated using LOGIN"
-				,socket,relay_user.alias);
+			lprintf("%04d SMTP %s authenticated using %s authentication"
+				,socket,relay_user.alias,auth_login ? "LOGIN" : "PLAIN");
 			sockprintf(socket,auth_ok);
 			continue;
 		}
@@ -2400,7 +2414,7 @@ static void smtp_thread(void* arg)
 				relay_user.number=0;
 				continue;
 			}
-			lprintf("%04d SMTP %s authenticated using CRAM-MD5"
+			lprintf("%04d SMTP %s authenticated using CRAM-MD5 authentication"
 				,socket,relay_user.alias);
 			sockprintf(socket,auth_ok);
 			continue;