diff -ruN courier-imap-1.7.0.20030311.orig/imap/authenticate_auth.c courier-imap-1.7.0.20030311/imap/authenticate_auth.c
--- courier-imap-1.7.0.20030311.orig/imap/authenticate_auth.c	Mon Feb 17 17:38:42 2003
+++ courier-imap-1.7.0.20030311/imap/authenticate_auth.c	Fri Mar 21 18:04:53 2003
@@ -70,6 +70,8 @@
 char	*initreply=0;
 char	*tagenv;
 char	*authtype, *authdata;
+char	authservice[40];
+char	*p ;
 
 	switch (tok->tokentype)	{
 	case IT_ATOM:
@@ -116,7 +118,14 @@
 	strcat(strcpy(tagenv, "IMAPLOGINTAG="), tag);
 	putenv(tagenv);
 
-	authmod(main_argc-1, main_argv+1, "imap",
+	strcat(strcpy(authservice, "AUTHSERVICE"),
+			 getenv("TCPLOCALPORT"));
+	p=getenv(authservice);
+
+	if (!p || !*p)
+		p="imap";
+
+	authmod(main_argc-1, main_argv+1, p,
 		authtype, authdata);
 	return (-1);
 }
diff -ruN courier-imap-1.7.0.20030311.orig/imap/pop3login.c courier-imap-1.7.0.20030311/imap/pop3login.c
--- courier-imap-1.7.0.20030311.orig/imap/pop3login.c	Sun Jan  5 05:25:19 2003
+++ courier-imap-1.7.0.20030311/imap/pop3login.c	Fri Mar 21 18:04:53 2003
@@ -131,6 +131,8 @@
 char	buf[BUFSIZ];
 int	c;
 const	char *ip=getenv("TCPREMOTEIP");
+char authservice[40];
+char *q ;
 
 	if (!ip || !*ip)
 	{
@@ -246,10 +248,12 @@
 
 					if (rc == 0)
 					{
-						authmod(argc-1, argv+1,
-							"pop3",
-							authtype,
-							authdata);
+						strcat(strcpy(authservice, "AUTHSERVICE"),getenv("TCPLOCALPORT"));
+						q=getenv(authservice);
+						if (!q || !*q)
+							q="pop3";
+
+						authmod(argc-1, argv+1,	q, authtype, authdata);
 					}
 
 					if (rc == AUTHSASL_ABORTED)
@@ -271,7 +275,12 @@
 					continue;
 				}
 
-				authmod_login(argc-1, argv+1, "pop3", user, p);
+				strcat(strcpy(authservice, "AUTHSERVICE"),getenv("TCPLOCALPORT"));
+				q=getenv(authservice);
+				if (!q || !*q)
+					q="pop3";
+
+				authmod_login(argc-1, argv+1, q, user, p);
 			}
 		}
 		printf("-ERR Invalid command.\r\n");
