From bcdcdd11b1aef22b2ba7e4a096e9cb0a9a9791e7 Mon Sep 17 00:00:00 2001
From: Julian Rother <julian@cccv.de>
Date: Wed, 20 Oct 2021 17:13:10 +0200
Subject: [PATCH] Fixed postfix lookup order emulation

---
 server.py | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/server.py b/server.py
index e46ace6..3fbfc67 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 '
-- 
GitLab