diff --git a/email_handler.py b/email_handler.py index 8b37ef39..be092c65 100644 --- a/email_handler.py +++ b/email_handler.py @@ -842,6 +842,34 @@ def handle_reply(envelope, msg: Message, rcpt_to: str) -> (bool, str): handle_spam(contact, alias, msg, user, mailbox, email_log, is_reply=True) return False, "550 SL E15 Email detected as spam" + # replace "ra+string@simplelogin.co" by the contact email in the email body + # as this is usually included when replying + if user.replace_reverse_alias: + if msg.is_multipart(): + for part in msg.walk(): + if part.get_content_maintype() != "text": + continue + part = replace_str_in_msg(part, reply_email, contact.website_email) + + else: + msg = replace_str_in_msg(msg, reply_email, contact.website_email) + + # create PGP email if needed + if contact.pgp_finger_print and user.is_premium(): + LOG.d("Encrypt message for contact %s", contact) + try: + msg = prepare_pgp_message( + msg, contact.pgp_finger_print, contact.pgp_public_key + ) + except PGPException: + LOG.exception( + "Cannot encrypt message %s -> %s. %s %s", alias, contact, mailbox, user + ) + # to not save the email_log + db.session.rollback() + # return 421 so the client can retry later + return False, "421 SL E13 Retry later" + delete_header(msg, _IP_HEADER) delete_header(msg, "DKIM-Signature") @@ -893,37 +921,9 @@ def handle_reply(envelope, msg: Message, rcpt_to: str) -> (bool, str): envelope.rcpt_options, ) - # replace "ra+string@simplelogin.co" by the contact email in the email body - # as this is usually included when replying - if user.replace_reverse_alias: - if msg.is_multipart(): - for part in msg.walk(): - if part.get_content_maintype() != "text": - continue - part = replace_str_in_msg(part, reply_email, contact.website_email) - - else: - msg = replace_str_in_msg(msg, reply_email, contact.website_email) - if should_add_dkim_signature(alias_domain): add_dkim_signature(msg, alias_domain) - # create PGP email if needed - if contact.pgp_finger_print and user.is_premium(): - LOG.d("Encrypt message for contact %s", contact) - try: - msg = prepare_pgp_message( - msg, contact.pgp_finger_print, contact.pgp_public_key - ) - except PGPException: - LOG.exception( - "Cannot encrypt message %s -> %s. %s %s", alias, contact, mailbox, user - ) - # to not save the email_log - db.session.rollback() - # return 421 so the client can retry later - return False, "421 SL E13 Retry later" - try: sl_sendmail( alias.email,