From 276dc3ffda5ea43a08ed19ece1e1cafd95fee71b Mon Sep 17 00:00:00 2001 From: Dario Ernst Date: Fri, 11 Jan 2019 11:51:56 +0100 Subject: [PATCH] Reverse the resolution order of user and alias MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since it’s common for wildcard~ish systems to prefer concrete objects over wildcards, and aliases can be broad-wildcards (think catchall, %@xxx.tld), it may be more intuitive for users that user-names rank higher than aliases. This makes it impossible for user-names to be unreachable, since they can be completely overridden by a catchall otherwise. This changes default behavior, and is not configurable. closes #815 --- core/admin/mailu/models.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/core/admin/mailu/models.py b/core/admin/mailu/models.py index 9130ae65..540800c4 100644 --- a/core/admin/mailu/models.py +++ b/core/admin/mailu/models.py @@ -266,16 +266,6 @@ class Email(object): if os.environ.get('RECIPIENT_DELIMITER') in localpart: localpart_stripped = localpart.rsplit(os.environ.get('RECIPIENT_DELIMITER'), 1)[0] - pure_alias = Alias.resolve(localpart, domain_name) - stripped_alias = Alias.resolve(localpart_stripped, domain_name) - - if pure_alias and not pure_alias.wildcard: - return pure_alias.destination - elif stripped_alias: - return stripped_alias.destination - elif pure_alias: - return pure_alias.destination - user = User.query.get('{}@{}'.format(localpart, domain_name)) if not user and localpart_stripped: user = User.query.get('{}@{}'.format(localpart_stripped, domain_name)) @@ -288,6 +278,16 @@ class Email(object): destination = [user.email] return destination + pure_alias = Alias.resolve(localpart, domain_name) + stripped_alias = Alias.resolve(localpart_stripped, domain_name) + + if pure_alias and not pure_alias.wildcard: + return pure_alias.destination + elif stripped_alias: + return stripped_alias.destination + elif pure_alias: + return pure_alias.destination + def __str__(self): return self.email