Commit Graph

336 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