--- src/auth/passdb-shadow.c.orig	Thu Apr 17 14:25:47 2014
+++ src/auth/passdb-shadow.c	Sun Jul 10 14:50:51 2016
@@ -8,6 +8,7 @@
 #include "safe-memset.h"
 
 #include <shadow.h>
+#include <string.h>
 
 #define SHADOW_CACHE_KEY "%u"
 #define SHADOW_PASS_SCHEME "CRYPT"
@@ -17,7 +18,18 @@
 {
 	auth_request_log_debug(request, AUTH_SUBSYS_DB, "lookup");
 
-	*spw_r = getspnam(request->user);
+	char *Login = NULL;
+	if((request->user != NULL) && ((Login = strdup(request->user)) != NULL))
+	{
+		if(strtok(Login, "@") != NULL)
+		{
+			*spw_r = getspnam(Login);
+		}
+	}
+	else
+	{
+		*spw_r = getspnam(request->user);
+	}
 	if (*spw_r == NULL) {
 		auth_request_log_unknown_user(request, AUTH_SUBSYS_DB);
 		return PASSDB_RESULT_USER_UNKNOWN;
