v1 of email handler, forward and reply phase work!

This commit is contained in:
Son NK 2019-11-08 11:05:34 +01:00
parent 80babefdb9
commit a01c94187f
1 changed files with 10 additions and 10 deletions

View File

@ -1,18 +1,18 @@
"""
Handle the email *forward* and *reply*. phase There are 3 actors:
Handle the email *forward* and *reply*. phase. There are 3 actors:
- website: who sends emails to alias@sl.co address
- SL email handler (this script)
- user personal email
- user personal email: to be protected. Should never leak to website.
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: srs@sl.co # managed by SRS
rcpt to: @real
rcpt to: @personal_email
Header:
From: @website
To: alias@sl.co
Reply-to: special@sl.co # magic here
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:
@ -20,7 +20,7 @@ Envelope:
rcpt to: @website
Header:
From: alias@sl.co # magic here
From: alias@sl.co # so for website the email comes from alias. magic HERE
To: @website
The special@sl.co allows to hide user personal email when user clicks "Reply" to the forwarded email.
@ -80,7 +80,7 @@ class MailHandler:
# LOG.debug(message_data)
# host IP, setup via Docker network
client = SMTP("1.1.1.1", 25)
smtp = SMTP("1.1.1.1", 25)
msg = Parser(policy=default).parsestr(message_data)
if not envelope.rcpt_tos[0].startswith("reply+"): # Forward case
@ -123,7 +123,7 @@ class MailHandler:
envelope.rcpt_options,
)
client.send_message(
smtp.send_message(
msg,
from_addr=envelope.mail_from,
to_addrs=[gen_email.user.email], # user personal email
@ -153,7 +153,7 @@ class MailHandler:
envelope.rcpt_options,
)
client.send_message(
smtp.send_message(
msg,
from_addr=alias,
to_addrs=[forward_email.website_email],
@ -168,7 +168,7 @@ if __name__ == "__main__":
controller = Controller(MailHandler(), hostname="0.0.0.0", port=20381)
controller.start()
print(">>", controller.hostname, controller.port)
LOG.d("Start mail controller %s %s", controller.hostname, controller.port)
while True:
time.sleep(10)