From 41e2283d9369e7c1250466faa2dfb4942c9da6a2 Mon Sep 17 00:00:00 2001 From: Son NK <> Date: Sat, 1 Aug 2020 12:31:43 +0200 Subject: [PATCH] domain catch-all alias belongs to domain mailboxes --- app/alias_utils.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/alias_utils.py b/app/alias_utils.py index 1a4f4162..e9506055 100644 --- a/app/alias_utils.py +++ b/app/alias_utils.py @@ -98,7 +98,7 @@ def try_auto_create_catch_all_domain(address: str) -> Optional[Alias]: # try to create alias on-the-fly with custom-domain catch-all feature # check if alias is custom-domain alias and if the custom-domain has catch-all enabled alias_domain = get_email_domain_part(address) - custom_domain = CustomDomain.get_by(domain=alias_domain) + custom_domain: CustomDomain = CustomDomain.get_by(domain=alias_domain) if not custom_domain: return None @@ -116,13 +116,19 @@ def try_auto_create_catch_all_domain(address: str) -> Optional[Alias]: try: LOG.d("create alias %s for domain %s", address, custom_domain) + mailboxes = custom_domain.mailboxes alias = Alias.create( email=address, user_id=custom_domain.user_id, custom_domain_id=custom_domain.id, automatic_creation=True, - mailbox_id=domain_user.default_mailbox_id, + mailbox_id=mailboxes[0].id, ) + db.session.flush() + for i in range(1, len(mailboxes)): + AliasMailbox.create( + alias_id=alias.id, mailbox_id=mailboxes[i].id, + ) db.session.commit() return alias except AliasInTrashError: