diff --git a/server.py b/server.py
index e46ace65725fbe695cd5f4c08de184df25dcc39f..3fbfc67f01a4730ace33fb27bafeba0118729b47 100644
--- a/server.py
+++ b/server.py
@@ -151,13 +151,16 @@ class SocketmapsRequestHandler(socketserver.BaseRequestHandler):
 			# "user@domain" first, then "user", then "@domain", until it finds
 			# a match. With socketmap virtual(5) only attempts to lookup "user@domain".
 			# To be a drop-in replacement for LDAP, we have to emulate this behaviour.
-			if '@' not in key:
-				return 'PERM Key is not a mail address', logging.WARNING
-			user, domain = key.split('@', 1)
-			results = self.api.get_aliases(f'{user}@{domain}')
-			if not results:
+			if '@' in key:
+				user, domain = key.split('@', 1)
+			else:
+				user, domain = key, ''
+			results = []
+			if user and domain:
+				results = self.api.get_aliases(f'{user}@{domain}')
+			if not results and user:
 				results = self.api.get_aliases(f'{user}')
-			if not results:
+			if not results and domain:
 				results = self.api.get_aliases(f'@{domain}')
 			if not results:
 				return 'NOTFOUND '