From 517bcb632ec43cbbbaccaa67df363fa3ee90ec4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A0=20Casaj=C3=BAs?= Date: Tue, 22 Mar 2022 17:02:59 +0100 Subject: [PATCH] MR changes --- app/email/status.py | 1 + email_handler.py | 35 +++++++++-------------------------- 2 files changed, 10 insertions(+), 26 deletions(-) diff --git a/app/email/status.py b/app/email/status.py index e7a98277..05982d99 100644 --- a/app/email/status.py +++ b/app/email/status.py @@ -20,6 +20,7 @@ E211 = "250 SL E211 Bounce Forward phase handled" E212 = "250 SL E212 Bounce Reply phase handled" E213 = "250 SL E213 Unknown email ignored" E214 = "250 SL E214 Unauthorized for using reverse alias" +E215 = "250 SL E215 Handled dmarc policy" # endregion diff --git a/email_handler.py b/email_handler.py index af42d9e8..11500a6e 100644 --- a/email_handler.py +++ b/email_handler.py @@ -554,8 +554,15 @@ def apply_dmarc_policy( DmarcCheckResult.soft_fail, ): quarantine_dmarc_failed_email(alias, contact, envelope, msg) - add_quarantine_notification_for_alias(alias) - return status.E519 + Notification.create( + user_id=alias.user_id, + title=f"{alias.email} has a new mail in quarantine", + message=Notification.render( + "notification/message-quarantine.html", alias=alias + ), + commit=True, + ) + return status.E215 return None @@ -592,30 +599,6 @@ def quarantine_dmarc_failed_email(alias, contact, envelope, msg): ) -def add_quarantine_notification_for_alias(alias: Alias): - notification_title = f"{alias.email} has a new mail in quarantine" - notifications = ( - Notification.filter_by(user_id=alias.user_id) - .order_by(Notification.read, Notification.created_at.desc()) - .limit(10) - .all() - ) # load a record more to know whether there's more - already_notified = False - for notification in notifications: - if notification.title == notification_title: - already_notified = True - break - if not already_notified: - Notification.create( - user_id=alias.user_id, - title=notification_title, - message=Notification.render( - "notification/message-quarantine.html", alias=alias - ), - commit=True, - ) - - def handle_forward(envelope, msg: Message, rcpt_to: str) -> List[Tuple[bool, str]]: """return an array of SMTP status (is_success, smtp_status) is_success indicates whether an email has been delivered and