From 0c43c2dd451e1d03c5a910353c15d6843aefab41 Mon Sep 17 00:00:00 2001 From: Son NK Date: Thu, 26 Mar 2020 11:19:20 +0100 Subject: [PATCH] reformat: rename website -> contact whenever possible --- email_handler.py | 43 +++++++++++++++++++------------------------ 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/email_handler.py b/email_handler.py index 0b536e81..ef8e176b 100644 --- a/email_handler.py +++ b/email_handler.py @@ -1,32 +1,32 @@ """ Handle the email *forward* and *reply*. phase. There are 3 actors: -- website: who sends emails to alias@sl.co address +- contact: who sends emails to alias@sl.co address - SL email handler (this script) -- user personal email: to be protected. Should never leak to website. +- user personal email: to be protected. Should never leak to contact. This script makes sure that in the forward phase, the email that is forwarded to user personal email has the following envelope and header fields: Envelope: - mail from: @website + mail from: @contact rcpt to: @personal_email Header: - From: @website + From: @contact To: alias@sl.co # so user knows this email is sent to alias Reply-to: special@sl.co # magic HERE And in the reply phase: Envelope: - mail from: @website - rcpt to: @website + mail from: @contact + rcpt to: @contact Header: - From: alias@sl.co # so for website the email comes from alias. magic HERE - To: @website + From: alias@sl.co # so for contact the email comes from alias. magic HERE + To: @contact The special@sl.co allows to hide user personal email when user clicks "Reply" to the forwarded email. It should contain the following info: - alias -- @website +- @contact """ @@ -329,21 +329,16 @@ def handle_forward(envelope, smtp: SMTP, msg: Message, rcpt_to: str) -> str: # change the from header so the sender comes from @SL # so it can pass DMARC check # replace the email part in from: header - website_from_header = msg["From"] - website_name, website_email = parseaddr(website_from_header) - # new_website_name = ( - # website_name - # + (" - " if website_name else "") - # + website_email.replace("@", " at ") - # ).strip() - new_website_name = f"{website_email} via SimpleLogin" - from_header = formataddr((new_website_name, contact.reply_email)) - add_or_replace_header(msg, "From", from_header.strip()) + contact_from_header = msg["From"] + contact_name, contact_email = parseaddr(contact_from_header) + new_contact_name = f"{contact_email} via SimpleLogin" + new_from_header = formataddr((new_contact_name, contact.reply_email)).strip() + add_or_replace_header(msg, "From", new_from_header) LOG.d( - "new from header:%s, website_name %s, website_email %s", - from_header.strip(), - website_name, - website_email, + "new from header:%s, contact_name %s, contact_email %s", + new_from_header, + contact_name, + contact_email, ) # append alias into the TO header if it's not present in To or CC @@ -367,7 +362,7 @@ def handle_forward(envelope, smtp: SMTP, msg: Message, rcpt_to: str) -> str: LOG.d( "Forward mail from %s to %s, mail_options %s, rcpt_options %s ", - website_email, + contact_email, mailbox_email, envelope.mail_options, envelope.rcpt_options,