Commit graph

360 commits

Author SHA1 Message Date
Son NK
cbdd080587 revert port binding on email handler 2020-08-16 19:34:00 +02:00
Son NK
6835c5b69d handle case cannot parse mailbox_id 2020-08-16 18:55:14 +02:00
Son NK
a3a99ac3f4 use lock to handle 1 email at a time 2020-08-16 18:51:12 +02:00
Son NK
d99d186bc0 revert the ignore AssertionError commit 2020-08-16 18:50:20 +02:00
Son NK
61a8f1e676 ignore the "Popped wrong app context" Assertion Error raised by AppContext 2020-08-16 15:34:44 +02:00
Son NK
d4a6269e43 bind email handler to 127.0.0.1 instead of 0.0.0.0 2020-08-16 14:51:40 +02:00
Son NK
98a9e88ce4 fix spamassassin: add ending linebreak 2020-08-16 14:34:50 +02:00
Son NK
1ab9c926dd set email_log.spam_score 2020-08-16 14:28:47 +02:00
Son NK
d738997c4e return 421 if any unexpected error happen 2020-08-16 11:10:01 +02:00
Son NK
79853b7736 use a timeout for get_spam_score 2020-08-16 10:22:16 +02:00
Son NK
bf555ed605 detect spam in reply phase 2020-08-15 16:53:57 +02:00
Son NK
673b08712c use SPAMASSASSIN server if available 2020-08-15 16:38:16 +02:00
Son NK
7e5deef34f add time measures to email_handler 2020-08-11 17:32:04 +02:00
Son NK
dc206b41c7 lighten mail handler 2020-08-11 16:31:08 +02:00
Son NK
d89e41d0e5 use user.max_spam_score if present 2020-07-23 11:11:43 +02:00
Son NK
6faaacc972 add more logging 2020-07-23 10:32:10 +02:00
Son NK
6437ee46e0 use LOG.exception instead of LOG.error to provide stacktrace 2020-07-17 12:59:07 +02:00
Son NK
7a20261aae add more info to error message 2020-07-05 16:25:54 +02:00
Son NK
85bb30abb0 Notify user can reply cannot be sent 2020-06-20 16:19:01 +02:00
Son NK
c61e7c697d call forward_email_to_mailbox on the msg copy 2020-06-12 00:02:45 +02:00
Son NK
9c9319c94e handle emails sent to sender 2020-06-10 13:57:23 +02:00
Son NK
0c4e48c906 remove bounced_email param from send_email_with_rate_control 2020-06-10 12:17:04 +02:00
Son NK
c36870daa8 force convert header to string if needed 2020-06-10 09:34:58 +02:00
Son NK
53e9281204 avoid forward email to invalid mailbox 2020-06-09 17:16:32 +02:00
Son NK
9b1ca0a2f1 return 421 when pgp encryption fails 2020-06-08 13:54:42 +02:00
Son NK
b962d6a2c1 encrypt sent email if contact has PGP enabled 2020-06-07 13:40:24 +02:00
Son NK
f4beb81195 refactor load_pgp_public_keys 2020-06-07 12:46:59 +02:00
Son NK
16df2acb29 stop the email handler process when PGP error 2020-06-07 11:41:35 +02:00
Son NK
708816cb05 use warning level for SPF fail message 2020-06-06 23:38:19 +02:00
Sibren Vasse
5c50628d36 Fix reverse alias replacement multipart message 2020-05-28 20:25:51 +02:00
Son NK
c8c06aa10e do not automatically disable alias if it cannot be disabled 2020-05-27 14:12:32 +02:00
Son NK
a512fbc6e5 use POSTFIX_PORT instead of 25 if it's set 2020-05-21 20:43:12 +02:00
Son Nguyen Kim
57e3e29e70
Merge pull request #200 from SibrenVasse/dkim_fix
Fix reverse alias replacement
2020-05-21 20:08:38 +02:00
Son NK
5ada83d48d use warning level for "Cannot parse original message" error 2020-05-21 20:05:07 +02:00
Son NK
9a423f3247 make should_append_alias case insensitive 2020-05-20 22:35:28 +02:00
Son NK
3898d2d7a6 fix 2020-05-20 22:34:06 +02:00
Son NK
93d972df09 make sure to use lowercase for alias email 2020-05-20 18:12:14 +02:00
Sibren Vasse
1df9f8a95c Do reverse alias replacement before DKIM signing and replace by contact email 2020-05-20 10:56:42 +02:00
Sibren Vasse
e905e151ca Create user setting for replacing reverse alias (default: false) 2020-05-17 19:40:46 +02:00
Son NK
b84b7c332e replace the "ra+string@simplelogin.co" by the alias 2020-05-17 14:11:24 +02:00
Son NK
6300c0eaa1 an alias can still be disabled even of original message cannot be parsed. 2020-05-17 14:01:55 +02:00
Son NK
f35b9e7542 do not encrypt if alias disables PGP 2020-05-16 20:51:07 +02:00
Son NK
80f614da6c refactor: remove unused var 2020-05-16 20:51:07 +02:00
Son NK
f577adc0d4 log more info 2020-05-16 18:24:51 +02:00
Son NK
362d101bab Merge branch 'master' into multiple-mailboxes
# Conflicts:
#	app/dashboard/templates/dashboard/custom_alias.html
#	email_handler.py
#	templates/emails/com/newsletter/mobile-darkmode.html
2020-05-16 11:28:25 +02:00
Son Nguyen Kim
ec8f46f01a
Merge pull request #191 from SibrenVasse/spam
Also enable spam check when pgp is enabled
2020-05-15 18:06:57 +02:00
Sibren Vasse
8769383724 Also enable spam check when pgp is enabled 2020-05-15 16:34:07 +02:00
Son NK
3d4b44dd15 handle the case contact_from_header can be None 2020-05-15 15:46:37 +02:00
Son NK
c43fa65cd4 If From header is empty, try creating contact with envelope sender 2020-05-13 22:35:27 +02:00
Son NK
54ce1dc964 remove unnecessary max_nb_email limit in spf 2020-05-11 14:46:18 +02:00
Son NK
36a8e311ea Merge branch 'master' into multiple-mailboxes 2020-05-11 10:21:59 +02:00
Son NK
7c55c5c44a return 250 instead of 451 when SPF fails 2020-05-11 10:21:44 +02:00
Son NK
0d117126db save the mailbox that a bounce affects 2020-05-10 20:09:54 +02:00
Son NK
5b71b34f9e handle alias unsubscribe 2020-05-10 20:09:54 +02:00
Son NK
336bdb196d Detect unknown mailbox using envelope mail_from 2020-05-10 20:09:54 +02:00
Son NK
33d578c78e parse _MAILBOX_ID_HEADER to handle bounce message 2020-05-10 20:09:54 +02:00
Son NK
8d65175ac5 set mailbox ID in X-SimpleLogin-Mailbox-ID header 2020-05-10 20:09:54 +02:00
Son NK
97e1c334af call strip() on rcpt_to just to be sure 2020-05-10 20:09:54 +02:00
Son NK
4b479defa8 Support alias having multiple mailboxes in forward phase 2020-05-10 20:09:54 +02:00
Son NK
7f6ba313fd add strip() to rcpt_to just in case 2020-05-10 20:09:54 +02:00
Son NK
2755e67c31 simplify code: replace mailbox_email by mailbox.email 2020-05-10 20:09:54 +02:00
Son NK
59036972f1 refactor handle_forward: move the disabled alias case to the beginning 2020-05-10 20:09:54 +02:00
Son NK
b5e7f05bfc allow user sends emails to his alias from his mailbox 2020-05-10 20:09:54 +02:00
Son NK
f59ccd4018 optimize import email_handler 2020-05-10 20:09:54 +02:00
Son NK
9ddb8ff2d4 add more info to spf alert email. Set the max number of emails per 24h to 1 2020-05-10 10:37:56 +02:00
Son NK
a48f7db599 refactor: create handle_unknown_mailbox() 2020-05-09 23:12:30 +02:00
Son NK
9234527ea6 refactor: put spf handling into a method 2020-05-09 23:09:11 +02:00
Son NK
178515dbde alert user when spf fails 2020-05-09 23:00:30 +02:00
Son NK
c6e293ef8e small refactor 2020-05-09 22:54:55 +02:00
Son NK
7833d4609f Use send_email_with_rate_control when alerting user 2020-05-09 20:45:04 +02:00
Son NK
e84e4d50c7 add logging 2020-05-09 17:48:57 +02:00
Son NK
0add756654 make sure SPF exception does not stop reply-phase 2020-05-09 17:34:49 +02:00
Son NK
7654992fc2 refactoring: replace "X-SimpleLogin-Client-IP" by constant 2020-05-09 17:31:37 +02:00
Son NK
bd68a52158 make sure to remove "X-SimpleLogin-Client-IP" during forward 2020-05-09 17:30:21 +02:00
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