From 2b84168d688f3dab2df2d406b6fd58f1dd286f4f Mon Sep 17 00:00:00 2001 From: Son Nguyen Kim Date: Fri, 17 Sep 2021 17:42:16 +0200 Subject: [PATCH] validate address in try_auto_create --- app/alias_utils.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/alias_utils.py b/app/alias_utils.py index a5c4cd81..37464953 100644 --- a/app/alias_utils.py +++ b/app/alias_utils.py @@ -1,6 +1,7 @@ import re from typing import Optional +from email_validator import validate_email, EmailNotValidError from sqlalchemy.exc import IntegrityError, DataError from app.config import BOUNCE_PREFIX_FOR_REPLY_PHASE @@ -10,6 +11,7 @@ from app.email_utils import ( send_cannot_create_domain_alias, can_create_directory_for_address, send_cannot_create_directory_alias_disabled, + get_email_local_part, ) from app.errors import AliasInTrashError from app.extensions import db @@ -34,6 +36,12 @@ def try_auto_create(address: str) -> Optional[Alias]: LOG.e("alias %s can't start with %s", address, BOUNCE_PREFIX_FOR_REPLY_PHASE) return None + try: + # NOT allow unicode for now + validate_email(address, check_deliverability=False, allow_smtputf8=False) + except EmailNotValidError: + return None + alias = try_auto_create_catch_all_domain(address) if not alias: alias = try_auto_create_directory(address)