Commit Graph

536 Commits

Author SHA1 Message Date
Son NK
5ec0ea5f6c Report error when SPF fails on emails sent from mailbox. Return 451 instead of 550 to avoid bounce emails. 2020-05-09 14:52:39 +02:00
Sibren Vasse
001079bdc5 Enforce SPF 2020-05-09 14:15:08 +02:00
Sibren Vasse
0e4799030d Add default alias name to custom domain 2020-05-03 19:35:02 +02:00
Son NK
ba081a597a Fix: do not use spam check on disabled alias 2020-04-27 18:18:40 +02:00
Son NK
3063fee472 Use alias name in reply phase 2020-04-26 10:41:24 +02:00
Son NK
0f71eff531 handle the case some email providers might strip off the = suffix 2020-04-24 09:09:11 +02:00
Son NK
703d9385b5 Fix "Content-Transfer-Encoding" issue when encrypting emails 2020-04-14 20:49:48 +02:00
Son NK
6cfd534192 Add LOAD_PGP_EMAIL_HANDLER param. Load PGP keys if LOAD_PGP_EMAIL_HANDLER is set 2020-04-14 12:46:12 +02:00
Son NK
ed76a8ae8d reformat 2020-04-13 20:51:29 +02:00
Son NK
6a617ceeea Add custom error code for 550 SL error 2020-04-13 19:33:45 +02:00
Son NK
f3244eb274 force convert contact_from_header to string 2020-04-05 15:42:09 +02:00
Son NK
2619333cc6 remove uses of website_from 2020-04-05 15:39:48 +02:00
Son NK
18844b7011 use full email header in replace_header_when_reply 2020-04-05 15:27:35 +02:00
Son NK
f78e790b71 set contact name in get_or_create_contact, use contact.new_addrs in replace_header_when_forward 2020-04-05 15:24:09 +02:00
Son NK
b01533e9ac Update contact name in forward phase 2020-04-05 14:50:12 +02:00
Son NK
a7eefe8232 rename 2020-04-05 12:59:36 +02:00
Son NK
3a845af2fa use website_email instead of website_from in spam-email 2020-04-05 12:00:01 +02:00
Son NK
a081298756 use website_email instead of website_from in bounce-email 2020-04-05 11:59:24 +02:00
Son NK
b2f22db9f6 use website_email instead of website_from for automatic-disable-alias email 2020-04-05 11:58:13 +02:00
Son NK
c163bdc14f use warning for grey listing 2020-04-04 21:59:42 +02:00
Son NK
0657f3dbc2 rename 2020-04-04 20:06:35 +02:00
Son NK
f7e5ab1e34 reaname 2020-04-04 19:21:31 +02:00
Son NK
eab45beef2 Use error level when greylisting happens 2020-04-04 18:07:22 +02:00
Son NK
8caebc0142 Return 421 when there's too much activity on an alias or mailbox 2020-04-04 16:27:22 +02:00
Son NK
661547ec3a refactor: avoid calling "with app.app_context()" all the time 2020-04-04 16:09:24 +02:00
Son NK
c1f5c07d86 Move alias auto-creation to alias_utils 2020-04-04 15:24:27 +02:00
Son NK
27d048f70b add send-from-alias-from-unknown-sender template in html 2020-04-03 23:39:07 +02:00
Son NK
3550447a66 use BytesIO as input when encrypting 2020-04-02 21:30:36 +02:00
Son NK
ed8caa237a use email.message_from_bytes instead of Parser(policy=SMTPUTF8).parsestr 2020-04-02 21:30:36 +02:00
Son NK
55b1ce2067 use a different s3 folder for spams 2020-04-02 21:30:36 +02:00
Son NK
55190ff358 use msg.as_bytes() instead of msg.as_string().encode() 2020-04-02 21:30:36 +02:00
Son NK
0517fcfd48 Remove the X-Sender during the reply phase 2020-04-01 20:33:27 +02:00
Son NK
c8ba6e8013 Special handling for self-forward case 2020-04-01 20:32:26 +02:00
Son NK
62e028c30f Remove the workaround 2020-03-31 22:19:15 +02:00
Son NK
f34c1f555f quick workaround for prod 2020-03-30 22:37:41 +02:00
Son NK
3925ebce1e reformat 2020-03-30 22:12:35 +02:00
Son NK
bb12b35d2c delete "Received" header in reply phase 2020-03-30 22:05:51 +02:00
Son NK
9500cc6cee Take into account spamassassin spam report 2020-03-30 22:05:31 +02:00
Son NK
33a80236d3 Handle the case the msg is sent from the mailbox to alias. Happen when reply-all 2020-03-30 22:02:22 +02:00
Son NK
ca5e3ac477 Refactoring: better naming 2020-03-30 21:46:52 +02:00
Son NK
019f5307c9 Always replace To and Cc header in reply phase 2020-03-30 21:45:18 +02:00
Son NK
59a336f5cd use warning level for bounce log message 2020-03-29 23:13:12 +02:00
Son NK
da6441b4b8 Handle on-click unsubcribe 2020-03-28 23:19:25 +01:00
Son NK
7f49312255 use user preferred sender format 2020-03-28 22:37:00 +01:00
Son NK
5771eaeb63 Handle multiple rcpt_to 2020-03-28 21:24:43 +01:00
Son NK
e9cd043760 do not put alias again when reply all 2020-03-28 21:20:59 +01:00
Son NK
aa3a13c3ca Replace To or CC header when forward/reply 2020-03-28 19:16:55 +01:00
Son NK
fee69d9546 refactor: create generate_reply_email() 2020-03-28 11:12:20 +01:00
Son NK
f10d18c020 Add SL prefix to 550 to facilitate search 2020-03-28 11:05:14 +01:00
Son NK
9afcae534b return 550 instead of 510 when alias not exist 2020-03-28 11:04:58 +01:00
Son NK
0c43c2dd45 reformat: rename website -> contact whenever possible 2020-03-26 11:19:20 +01:00
Son NK
c521052042 use {website_email} via SimpleLogin FROM header 2020-03-26 11:15:18 +01:00
Son NK
bc3a3dae02 reformat 2020-03-22 16:56:08 +01:00
Son NK
86ef7f54d9 RefusedEmail.path can be null 2020-03-22 16:51:21 +01:00
Son NK
22ac3fa153 strip from/to header 2020-03-22 14:21:19 +01:00
Son NK
7f5f3e68ba make sure to set user_id when creating EmailLog 2020-03-20 09:55:52 +01:00
Son NK
6e54b4fed8 make sure to set user_id when creating contact 2020-03-20 09:54:38 +01:00
Son NK
8ce9d56e84 only premium user can encrypt emails with PGP 2020-03-19 19:19:04 +01:00
Son NK
c6138828c2 fix to_header 2020-03-19 11:33:21 +01:00
Son NK
ca4f02426c fix alias != address 2020-03-19 11:15:02 +01:00
Son NK
4a2523d20e refactor handle_bounce 2020-03-17 12:12:11 +01:00
Son NK
a597fb3832 fix should_append_alias 2020-03-17 12:10:13 +01:00
Son NK
2d90d35647 rename gen_email_id -> alias_id 2020-03-17 12:01:18 +01:00
Son NK
4f281bdbbb rename GenEmail -> Alias, gen_email to alias whenever possible 2020-03-17 11:51:40 +01:00
Son NK
bea870ef8b rename ForwardEmailLog to EmailLog 2020-03-17 11:10:50 +01:00
Son NK
f2d630e597 rename forward_id to contact_id 2020-03-17 11:05:53 +01:00
Son NK
17974de746 rename ForwardEmail to Contact 2020-03-17 10:56:59 +01:00
Son NK
027cbb10d9 use parseaddr instead of get_email_part 2020-03-15 22:32:48 +01:00
Son NK
6b6fca2281 use email.utils.parseaddr and formataddr instead of get_email_name 2020-03-15 22:29:53 +01:00
Son NK
b19be41a5e Support download email file in browser 2020-03-15 18:39:59 +01:00
Son NK
b3977e5efd reformat 2020-03-15 12:26:35 +01:00
Son NK
9cdf766825 Send refused email notif to user email instead of mailbox 2020-03-15 12:15:11 +01:00
Son NK
0525e5822a Not include original email in automatic disable alias email 2020-03-15 10:50:46 +01:00
Son NK
5db92b049d Inform refused email to mailbox 2020-03-14 23:00:33 +01:00
Son NK
69198ff08a delete all unnecessary headers in PGP 2020-03-14 22:24:02 +01:00
Son NK
0bb9830680 Store the bounced email in email handling. 2020-03-14 16:34:23 +01:00
Son NK
e713efee98 reformat 2020-03-13 10:34:41 +01:00
Son NK
be9d2cdbe3 delete sender header 2020-03-13 10:34:02 +01:00
Son NK
5674cab390 fix KeyError exception: use add_or_replace_header instead of msg.replace_header 2020-03-10 09:56:47 +01:00
Son NK
1f370abf4d Merge branch 'master' into staging 2020-03-09 13:35:42 +01:00
Son NK
cdea0e08ce improve logging 2020-03-09 08:45:16 +01:00
Son NK
612e4f6717 encrypt forwarded emails to gpg-enabled mailbox 2020-03-08 23:07:23 +01:00
Son NK
a1bdd94ef1 append alias into the TO header if it's not present in To or CC 2020-03-05 21:13:36 +01:00
Son NK
a6f4059d5d make sure to set mailbox_id when creating GenEmail 2020-03-05 17:03:07 +01:00
Son NK
b15eeb10c5 If POSTFIX_SUBMISSION_TLS, use port 587 2020-03-03 10:49:27 +01:00
Son Nguyen Kim
773e24dd9a
Merge pull request #90 from simple-login/handle-bounced
Handle bounced
2020-02-22 22:37:11 +07:00
Son NK
19e179e268 use warning level for alias deleted before log 2020-02-22 21:49:19 +07:00
Son NK
f80de382fe Prettify alias log 2020-02-22 21:09:07 +07:00
Son NK
78ef1cb8d4 notify user when emails sent to alias are bounced. 2020-02-22 20:57:19 +07:00
Son NK
f416dc6af6 refactor and fix catch-all domain 2020-02-20 15:36:02 +07:00
Son NK
98aaed6c8c refactor email handler: extract get_or_create_forward_email() 2020-02-19 22:49:40 +07:00
Son NK
e4e1429aae refactor email-handler: move handle_forward, handle_reply to outside of MailHandler class 2020-02-19 22:17:13 +07:00
Son NK
fc09f911a4 refactor email-handler: extract try_auto_create() 2020-02-19 22:15:27 +07:00
Son NK
78ed6eab5a Handle envelop can have several recipients 2020-02-19 21:50:38 +07:00
Son NK
1454973681 fix formatting 2020-02-15 21:05:49 +07:00
Son NK
b663703232 if alias has been deleted before, do not auto-create it with directory or catch-all domain 2020-02-15 21:05:49 +07:00
Son NK
4d69f813c1 Handle the bounce case where bounce report is sent to reply-email 2020-02-15 17:04:22 +07:00
Son NK
7598a167d0 Improve emails that inform unauthorized user 2020-02-11 22:58:30 +07:00
Son NK
b41a61165c use mailbox_email when notifying user attempt to send from his alias 2020-02-11 22:46:53 +07:00
Son NK
2efe8cd160 take into account mailbox in reply phase: check the reply must come from mailbox 2020-02-10 23:24:14 +07:00
Son NK
7407f678ce take into account mailbox in forward phase 2020-02-10 23:23:40 +07:00
Son NK
a2bbd49232 handle the case reply_email not exist 2020-02-02 18:53:26 +07:00
Son NK
98fd940b02 use warning log for reply from alias sent by unknown email 2020-01-31 12:06:34 +07:00
Son NK
1e8a7e4bca use can_create_new_alias() check when creating alias on-the-fly instead of is_premium() check 2020-01-30 14:43:31 +07:00
Son Nguyen Kim
4d7cd74190
Merge pull request #60 from SibrenVasse/master
Hide seperator from 'from header' if no name present
2020-01-30 00:01:50 +07:00
Sibren Vasse
d7aae24ebb
Hide seperator from 'from header' if no name present 2020-01-29 14:31:54 +01:00
Son NK
097e96832f Update From header for forward-email if changed 2020-01-29 10:47:13 +07:00
Son NK
e27cb63413 Merge branch 'master' into notify-user-reply 2020-01-22 23:28:20 +01:00
Son NK
bae556f521 log msg["From"] for the failed reply from alias 2020-01-22 23:21:36 +01:00
Son NK
00dac9a95a notify user if reply from alias is NOT sent from their personal email 2020-01-22 23:18:27 +01:00
Son NK
bdf75951f1 support ALIAS_DOMAINS
- use verify_prefix_suffix() in /api/alias/custom/new
-
2020-01-22 10:24:17 +01:00
Son NK
abab161d2d Allow catch-all on the alias default domain 2020-01-20 23:01:40 +01:00
Son NK
6f414ba405 Support + and # as directory separator 2020-01-19 22:06:36 +01:00
Son NK
3f0aae6f02 send email notifying user that alias creation works only in premium plan 2020-01-16 22:06:36 +01:00
Son NK
1e084f306e log more info 2020-01-10 18:23:37 +01:00
Son Nguyen Kim
cdd69b381e
Merge pull request #27 from simple-login/staging
Fix postfix-python bouncing problem
2020-01-10 13:27:32 +01:00
doanguyen
ef2e390df3 Merge branch 'staging' of https://github.com/simple-login/app into staging 2020-01-10 11:28:08 +01:00
doanguyen
be6db8fab1 fix error email bouncing between postfix and email_handler 2020-01-10 11:26:51 +01:00
Son NK
851ddce5a5 Merge remote-tracking branch 'origin/master' into directory
# Conflicts:
#	email_handler.py
2020-01-09 10:37:33 +01:00
Son NK
ecce1eff99 remove support for directory+anything@EMAIL_DOMAIN 2020-01-08 22:09:46 +01:00
Son NK
b8dc368c78 fix formatting 2020-01-08 21:54:22 +01:00
Son NK
ce9402e1e6 Fix directory name parsing 2020-01-08 21:52:14 +01:00
Son NK
9377e2a0ed Create alias on the fly if it belongs to a directory 2020-01-08 21:38:41 +01:00
Son NK
aea4426e1e make sure user original email not revealed in Received-SPF header 2020-01-08 12:44:29 +01:00
Son NK
27b9312057 fix formatting 2020-01-07 19:50:36 +01:00
Son NK
f1befd7024 delete Reply-To header in reply phase 2020-01-07 19:50:24 +01:00
Son NK
ba46d8f7e0 add delete_header() 2020-01-07 19:49:26 +01:00
Son NK
3bca9fde6b refactor: move add_or_replace_header to email_utils 2020-01-07 19:46:57 +01:00
Son NK
072e73187b make sure to replace Reply-To header in reply phase 2020-01-07 19:14:36 +01:00
Son Nguyen Kim
f62a7ffe47
Merge pull request #21 from simple-login/staging
change the smtp response code
2020-01-04 14:40:15 +01:00
doanguyen
0e7016b2e0 change the smtp response code 2020-01-04 11:36:55 +01:00
Son NK
0dc901d05d make email lowercase before processing them 2020-01-04 10:25:19 +01:00
Son NK
28a0f9c616 Set automatic_creation flag when alias is created with catch-all feature 2019-12-30 18:48:25 +01:00
Son NK
f08ca682c0 Create alias on-the-fly if the corresponding custom domain allows catch-all 2019-12-30 18:26:07 +01:00
Son NK
4fd6b617c8 fix domain used in dkim signature 2019-12-25 17:33:24 +00:00
Son NK
c62bfb292a add DKIM signature for domain that is dkim verified 2019-12-25 17:23:43 +00:00
Son NK
2daeb9501d remove email subject logging 2019-12-18 18:07:20 +02:00
Son NK
569fda47a9 fix DKIM fail on reply phase: the DKIM-signature should be added at the end of processing 2019-12-17 21:43:31 +02:00
Son NK
4799721667 remove DKIM-Signature if any 2019-12-17 19:06:17 +02:00
Son NK
a61b900675 Sign DKIM at app level
- add DKIM_PRIVATE_KEY_PATH param
- create email_utils.add_dkim_signature
- add DKIM signature for transactional emails
- add DKIM signature for forward & reply emails. In reply phase, only non-custom-domain emails have DKIM added.
2019-12-17 18:50:26 +02:00
Son NK
f8293bc618 make ADMIN_EMAIL optional 2019-12-16 19:36:59 +02:00
Son NK
615e2a4d91 use send_by_postfix instead of sending bounce email directly 2019-12-15 18:55:18 +02:00
Son NK
7e76c3a0a9 send bounce directly instead of return 550 2019-12-15 18:55:18 +02:00
Son NK
881525dfc2 use random_string for email_handler as reply email is not user-facing 2019-12-15 18:55:18 +02:00
Son NK
c5bf95fffe forward reply email can only by used by user email 2019-12-15 18:55:18 +02:00
Son NK
46b0872710 handle both emails with reply+ and ra+ prefix 2019-12-15 18:55:18 +02:00
Son NK
8c3834c957 generate a reply_email, make sure it is unique 2019-12-15 18:55:18 +02:00
Son NK
62e0ae27a0 move get_email_name, get_email_part to email_utils 2019-12-15 18:55:18 +02:00
Son NK
ec62fad3a0 remove notify_admin, replace by general stats 2019-12-15 18:55:18 +02:00
Son NK
b0f4ab8a6d use sendmail instead of send_message in reply phase to avoid unicode problem 2019-12-15 18:55:18 +02:00
Son NK
572ce1de57 fix db connections leaks in email_handler: override the default app.teardown_appcontext 2019-12-15 18:55:18 +02:00
Son NK
7f908a9da8 display website_from on alias log 2019-12-15 18:55:18 +02:00
Son NK
8d60ebd456 handle the case email from header has the format "First Last <ab@cd.com>" 2019-12-15 18:55:17 +02:00
Son NK
c37ba0e1de website_email: use From header instead of envelope from 2019-12-15 18:55:17 +02:00
Son NK
29d48b7d0f reduce sleep time in email_handler 2019-12-15 18:55:17 +02:00
Son NK
1435a77130 send raw message instead of using EmailMessage object 2019-12-15 18:55:17 +02:00
Son NK
a9112c0480 remove DKIM-Signature for custom domain 2019-12-15 18:55:17 +02:00
Son NK
66b59a265a remove redundant check in handle_RCPT to support custom domain. Add check to reply phase. 2019-12-15 18:55:16 +02:00
Son NK
fbf4a97a3e do NOT modify "to" header as it's not displayed in mail client anyway 2019-12-15 18:55:15 +02:00
Son NK
e0bf5245a3 remove DKIM-Signature as Postfix will add this header 2019-12-15 18:55:15 +02:00
Son NK
64f7d04960 fix forward phase: use reply email as envelope-from 2019-12-15 18:55:15 +02:00
Son NK
1cb8282cb2 change the to: header so target is user email 2019-12-15 18:55:15 +02:00
Son NK
9eb85abac4 remove srs 2019-12-15 18:55:15 +02:00
Son NK
837e1ffcf6 add List-Unsubscribe-Post header. Block alias directly if POST, otherwise ask user confirmation. 2019-12-15 18:55:15 +02:00
Son NK
cb14277bc7 add List-Unsubscribe header to block quickly an alias 2019-12-15 18:55:15 +02:00
Son NK
75e07fff04 put original name and email to from: header 2019-12-15 18:55:15 +02:00
Son NK
5b1819e891 do not modify subject 2019-12-15 18:55:15 +02:00
Son NK
7207312ec9 refactor email_handler: create handle_forward and handle_reply 2019-12-15 18:55:15 +02:00
Son NK
34cf72eaee create POSTFIX server 2019-12-15 18:55:15 +02:00
Son NK
0ae7f2d68a no need to modify reply-to. Remove this header if present. 2019-12-15 18:55:15 +02:00
Son NK
a70928d166 Modify From: header to reply_email so email passes DMARC 2019-12-15 18:55:15 +02:00
Son NK
a28c90f110 Change subject to let user know the email is forwarded from SL 2019-12-15 18:55:15 +02:00
Son NK
cf3a2258b2 return 510 if no such alias 2019-12-15 18:55:15 +02:00
Son NK
49d66c4226 tentative to fix UnicodeEncodeError https://sentry.io/organizations/son/issues/1339911828/?project=1478143&query=is%3Aunresolved 2019-12-15 18:55:15 +02:00
Son NK
032322a3d4 log forwarded emails 2019-12-15 18:55:14 +02:00
Son NK
a5a3bbbd63 if an alias is disabled, accept email but not forward to user inbox 2019-12-15 18:55:14 +02:00
Son NK
e335ae7d52 fix replace_header 2019-12-15 18:55:13 +02:00
Son NK
8b67a13581 fix case where reply-to is already present 2019-12-15 18:55:13 +02:00
Son NK
6015dbd4d1 Revert "try fixing spam issue: use personal email in forward phase"
This reverts commit 2f46a225e1b9099c2905a771132445caf42b4284.
2019-12-15 18:55:13 +02:00
Son NK
bfb1c27528 try fixing spam issue: use personal email in forward phase 2019-12-15 18:55:13 +02:00
Son NK
b80dbdf60b notify admin if someone uses reply phase 2019-12-15 18:55:13 +02:00
Son NK
a01c94187f v1 of email handler, forward and reply phase work! 2019-12-15 18:55:13 +02:00
Son NK
80babefdb9 use 1.1.1.1 as host IP 2019-12-15 18:55:13 +02:00
Son NK
8f878b4c5d try to make working with postfix outside docker (in host) 2019-12-15 18:55:13 +02:00
Son NK
c2546cb0de fix test 2019-12-15 18:55:13 +02:00
Son NK
d3985e2cf3 email handler: forward phase. Todo: reply phase 2019-12-15 18:55:13 +02:00