Son NK
|
5e1a68cdee
|
retry 1 more if SMTPServerDisconnected
|
2020-11-25 14:43:02 +01:00 |
|
Son NK
|
4f211bba61
|
fix subject not correctly decoded in spf-fail email
|
2020-11-25 09:53:27 +01:00 |
|
Son NK
|
272c5628bb
|
fix
|
2020-11-24 17:02:09 +01:00 |
|
Son NK
|
297857a140
|
Remove _MAILBOX_ID_HEADER
|
2020-11-24 16:50:55 +01:00 |
|
Son NK
|
5231483026
|
add doc
|
2020-11-24 16:38:54 +01:00 |
|
Son NK
|
fb465ba03e
|
use exception log for the case where mailbox is an alias
|
2020-11-24 16:38:49 +01:00 |
|
Son NK
|
54942cdf65
|
set EmailLog.mailbox_id in forward and reply phase. A EmailLog for each mailbox in forward phase.
|
2020-11-24 16:38:34 +01:00 |
|
Son NK
|
c28872288b
|
black
|
2020-11-24 11:28:14 +01:00 |
|
Son NK
|
c707342695
|
Use pgp_enabled() instead of pgp_finger_print
|
2020-11-24 11:22:41 +01:00 |
|
Son NK
|
bcdf522174
|
create normalize_reply_email(): handle case where reply email contains space, quote, etc
|
2020-11-22 13:07:09 +01:00 |
|
Son NK
|
f069d2f083
|
use getaddresses to parse multiple address from To, CC header. Remove get_addrs_from_header()
|
2020-11-21 19:15:02 +01:00 |
|
Son NK
|
c53fe90484
|
fix email subject
|
2020-11-18 16:16:37 +01:00 |
|
Son NK
|
30185a2798
|
handle the case where reply_email is not ascii
|
2020-11-18 16:11:00 +01:00 |
|
Son NK
|
78cb49095a
|
fix reply_email not set
|
2020-11-18 11:48:09 +01:00 |
|
Son NK
|
319078fceb
|
use contact email when generating reply-email
|
2020-11-18 10:24:39 +01:00 |
|
Son NK
|
9154b4656d
|
refactor: create is_reply_email()
|
2020-11-16 19:22:19 +01:00 |
|
Son NK
|
75ba1669e0
|
Create generate_reply_email() and refactor
|
2020-11-16 19:15:09 +01:00 |
|
Son NK
|
496be08639
|
handle case where contact address is empty/invalid
|
2020-11-14 15:55:53 +01:00 |
|
Son NK
|
b4d1b3950d
|
log SA report
|
2020-11-12 12:11:39 +01:00 |
|
Son NK
|
c3f73b25b2
|
decode the subject
|
2020-11-09 21:16:50 +01:00 |
|
Son NK
|
21839d579c
|
log more
|
2020-11-09 17:03:47 +01:00 |
|
Son NK
|
2cc7cb6a37
|
use to_bytes instead of .as_bytes()
|
2020-11-09 17:02:10 +01:00 |
|
Son NK
|
4d03d2fe04
|
Fix subject
|
2020-11-07 17:23:28 +01:00 |
|
Son NK
|
78f5f27d5d
|
add more debugging
|
2020-11-07 16:12:28 +01:00 |
|
Son NK
|
6a68141d8d
|
Use mailbox generic subject for forwarded emails
|
2020-11-07 13:00:45 +01:00 |
|
Son NK
|
5ef3ab4d74
|
disable handle_bounce_reply_phase
|
2020-11-05 10:26:19 +01:00 |
|
Son NK
|
d0ca773376
|
not forward email that has invalid from address
|
2020-11-05 10:26:09 +01:00 |
|
Son NK
|
352cd978bd
|
add debug
|
2020-11-04 19:42:20 +01:00 |
|
Son NK
|
6585aef443
|
use warning level
|
2020-11-04 16:11:32 +01:00 |
|
Son NK
|
3dee121bec
|
improve handle_bounce_reply_phase
|
2020-11-04 15:38:26 +01:00 |
|
Son NK
|
3a03dec077
|
simplify code
|
2020-11-04 14:55:54 +01:00 |
|
Son NK
|
009236e623
|
add debug code when bounce message cannot be parsed
|
2020-11-04 13:37:33 +01:00 |
|
Son NK
|
6c626520d3
|
handle_bounce_reply_phase
|
2020-11-04 12:32:15 +01:00 |
|
Son NK
|
5a7df14d58
|
use msg.as_bytes() to sign instead of as_string()
|
2020-11-03 13:30:37 +01:00 |
|
Son NK
|
8d0e243c83
|
sign PGP forwarded email if PGP_SENDER_PRIVATE_KEY
|
2020-11-02 19:09:57 +01:00 |
|
Son NK
|
63788125da
|
save bounce email sent to an alias when
|
2020-11-02 15:10:03 +01:00 |
|
Son NK
|
c41c36acaa
|
set "date" header in forward phase if needed
|
2020-11-02 14:53:22 +01:00 |
|
Son NK
|
38877598cf
|
fix handle_reply: do not delete _MIME_HEADERS headers, add Date header
|
2020-11-02 14:51:37 +01:00 |
|
Son NK
|
756e8080ab
|
handle case msg.get_payload(decode=True) is None
|
2020-11-01 18:38:21 +01:00 |
|
Son NK
|
1d0aa0f900
|
fix doc
|
2020-11-01 18:13:50 +01:00 |
|
Son NK
|
7337110110
|
Remove all headers in reply phase
|
2020-11-01 18:12:09 +01:00 |
|
Son NK
|
593e81705b
|
Handle case Content-Type and Mime-Version are missing in prepare_pgp_message
|
2020-11-01 18:06:28 +01:00 |
|
Son NK
|
53e57eee42
|
clone orig message in prepare_pgp_message
|
2020-11-01 18:06:05 +01:00 |
|
Son NK
|
7ca74eaa6f
|
replace-reverse-alias and pgp encryption before modifying message header in reply phase
|
2020-11-01 18:02:43 +01:00 |
|
Son NK
|
0307793666
|
use pgpy as fallback for gpg
|
2020-10-28 17:07:53 +01:00 |
|
Son NK
|
5a190ed840
|
use pgpy if python-gnupg fails
|
2020-10-28 12:21:24 +01:00 |
|
Son NK
|
9210459a72
|
add pgpy
- add pgpy to poetry
- add test PGP keys to local_data
- add encrypt_file_with_pgpy()
- use randomly pgpy
|
2020-10-28 11:50:14 +01:00 |
|
Son NK
|
aa1cac521b
|
Set X-SimpleLogin-Envelope-From header in forward phase
|
2020-10-27 11:03:56 +01:00 |
|
Son NK
|
8f6550f992
|
update contact.mail_from and contact.from_header if needed
|
2020-10-27 10:40:54 +01:00 |
|
Son NK
|
4a7b73a218
|
use warning log for disabled account
|
2020-10-26 10:33:53 +01:00 |
|
Son NK
|
bdec727cd1
|
allow mailbox's authorized address to unsubscribe alias
|
2020-10-23 13:29:20 +02:00 |
|
Son NK
|
bfa59dcdd9
|
fix
|
2020-10-22 12:26:45 +02:00 |
|
Son NK
|
ea45ac119e
|
Refactor: create Alias.unsubscribe_link
|
2020-10-22 10:37:02 +02:00 |
|
Son NK
|
f624085aa3
|
handle newsletter unsubscribe when the subject=user_id*
|
2020-10-22 10:34:52 +02:00 |
|
Son NK
|
1fcf166c00
|
small refactor: add should_add_dkim_signature
|
2020-10-15 16:24:04 +02:00 |
|
Son NK
|
e79522b638
|
take into account Premium domains
|
2020-10-15 16:21:31 +02:00 |
|
Son NK
|
805e78cad1
|
rename email_belongs_to_alias_domains -> email_belongs_to_default_domains
|
2020-10-14 18:46:05 +02:00 |
|
Son NK
|
8268568f08
|
add mailbox.disabled column. Disable a mailbox if it fails tests for 10 days consecutive.
|
2020-10-12 13:28:21 +02:00 |
|
Son NK
|
6993721ae2
|
disable email forwards/sending if user is disabled
|
2020-10-04 12:49:43 +02:00 |
|
Son NK
|
6253a4eb23
|
set SpamAssassin timeout to 300s
|
2020-09-30 14:03:19 +02:00 |
|
Son NK
|
abc42df0fb
|
create get_spam_score() as a sync function, use a simpler version for running MailHandler. Remove async/await
|
2020-09-30 11:05:21 +02:00 |
|
Son NK
|
61e4455406
|
logging more for spamassassin
|
2020-09-29 16:00:53 +02:00 |
|
Son NK
|
d7ca639dc1
|
format
|
2020-09-29 13:11:04 +02:00 |
|
Son NK
|
65938d2fb7
|
improve email template
|
2020-09-29 13:03:15 +02:00 |
|
Son NK
|
e8ccbced59
|
refactor code: wrap smtp.sendmail into sl_sendmail()
|
2020-09-29 12:57:14 +02:00 |
|
Son NK
|
17ef292779
|
update reply-must-use-personal-email template
|
2020-09-29 11:00:50 +02:00 |
|
Son NK
|
0a7643b367
|
take into account mailbox authorized address when check for spoofing
|
2020-09-28 17:43:09 +02:00 |
|
Son NK
|
063885ccf7
|
Add get_mailbox_from_mail_from()
|
2020-09-28 17:41:16 +02:00 |
|
Son NK
|
740d31871d
|
remove asyncio.shield
|
2020-09-17 17:03:20 +02:00 |
|
Son NK
|
5f8fff5af3
|
wrap shield around aiospamc.check to avoid the task being canceled
|
2020-09-16 19:47:12 +02:00 |
|
Son NK
|
25118dff9b
|
use parseaddr_unicode instead of parseaddr
|
2020-09-16 17:28:15 +02:00 |
|
Son NK
|
5c8d31111c
|
add contact to handle_unknown_mailbox logging
|
2020-09-16 17:24:42 +02:00 |
|
Son NK
|
b9b442294b
|
remove unnecessary sanitize on mailbox email
|
2020-09-14 20:02:46 +02:00 |
|
Son NK
|
cb2033443c
|
fill up contact mail_from, from_header if possible
|
2020-09-14 18:22:26 +02:00 |
|
Son NK
|
1ab36bd22b
|
remove unnecessary email address sanitize
|
2020-09-14 17:38:48 +02:00 |
|
Son NK
|
ed2e748d1e
|
sanitize envelope mail_from and rcpt_tos
|
2020-09-14 17:30:01 +02:00 |
|
Son NK
|
e6dd2f1717
|
do not forward to unverified mailbox
|
2020-09-10 09:38:30 +02:00 |
|
Son NK
|
0c9106717b
|
handle case where contact is concurrently created
|
2020-09-09 17:00:07 +02:00 |
|
Son NK
|
15d7f6407e
|
fix compatible with mailvelope add name=encrypted.asc
|
2020-09-08 11:10:22 +02:00 |
|
Son NK
|
e36768824f
|
handle the case contact already added
|
2020-09-03 19:42:52 +02:00 |
|
Son NK
|
b83c513607
|
use warning level
|
2020-09-03 15:43:33 +02:00 |
|
Son NK
|
0dbc755790
|
use warning level when not able to parse email-log-id
|
2020-09-03 15:43:01 +02:00 |
|
Son NK
|
a25559dace
|
able to choose port to listen on in email_handler. Default to 20381
|
2020-09-02 17:36:11 +02:00 |
|
Son NK
|
d97966a2e8
|
use warning level when cannot parse mailbox-id
|
2020-09-02 10:26:46 +02:00 |
|
Son NK
|
5ea3d1bd42
|
use warning level for when email_log cannot be parsed
|
2020-09-02 10:25:12 +02:00 |
|
Son NK
|
b7b4c07cd3
|
use warning level for SMTPRecipientsRefused error
|
2020-09-02 10:20:04 +02:00 |
|
Son NK
|
c03bb70755
|
handle SMTPRecipientsRefused in forward phase
|
2020-09-02 10:16:13 +02:00 |
|
Son NK
|
916e6a1a7f
|
remove whitespace for rcpt in forward phase
|
2020-09-02 09:58:58 +02:00 |
|
Son NK
|
85b87bbacb
|
improve send_email_with_rate_control to use on any day range
|
2020-08-31 17:32:46 +02:00 |
|
Son NK
|
8079746e47
|
handle case where alias mailbox is invalid
|
2020-08-30 19:22:21 +02:00 |
|
Son NK
|
171100eda7
|
return 421 in case mailbox is invalid
|
2020-08-30 19:08:53 +02:00 |
|
Son NK
|
e117726cd9
|
send alert email when a mailbox is an email alias
|
2020-08-30 19:06:50 +02:00 |
|
Son NK
|
e4271f725c
|
update "reply must from mailbox" email wording
|
2020-08-27 11:12:48 +02:00 |
|
Son NK
|
a6df989a8f
|
update cycle email subject
|
2020-08-27 11:10:16 +02:00 |
|
Son NK
|
4a90ea9aca
|
send warning about email cycle at most once
|
2020-08-27 10:43:48 +02:00 |
|
Son NK
|
fdedc24358
|
black new version
|
2020-08-27 10:20:48 +02:00 |
|
Son NK
|
bb6e2a35ca
|
send at max 1 email / day for the cycle email issue
|
2020-08-27 10:16:13 +02:00 |
|
Son NK
|
26ecf38760
|
use warning log level for cycle email issue
|
2020-08-27 10:15:40 +02:00 |
|
Son NK
|
828d9e4fe1
|
ignore spoof check if alias.disable_email_spoofing_check
|
2020-08-26 14:39:51 +02:00 |
|
Son NK
|
ab911fd55e
|
do not forward cycle email: email sent to alias from its mailbox
|
2020-08-25 12:51:19 +02:00 |
|
Son NK
|
ce791567f1
|
delete header if empty when replacing header
|
2020-08-25 12:51:19 +02:00 |
|
Son NK
|
61fd81489f
|
Set _EMAIL_LOG_ID_HEADER header for reply phase
|
2020-08-25 12:51:19 +02:00 |
|
Son NK
|
b53cc94310
|
set "X-SimpleLogin-Type" header for reply phase
|
2020-08-25 12:51:19 +02:00 |
|
Son NK
|
d410b34b50
|
set a custom Message-ID header
|
2020-08-25 12:51:19 +02:00 |
|
Son NK
|
0bb10d8fc3
|
add spam score processing time for forward phase
|
2020-08-24 18:39:16 +02:00 |
|
Son NK
|
ffa9304d00
|
log waiting time for get_spam_score
|
2020-08-24 17:47:56 +02:00 |
|
Son NK
|
9cf807f7bd
|
special handling for case when alias can't be disabled
|
2020-08-24 10:48:54 +02:00 |
|
Son NK
|
29b6b52a62
|
try to get email log and mailbox from bounce report
|
2020-08-24 10:23:49 +02:00 |
|
Son NK
|
06c48244e4
|
black
|
2020-08-21 12:03:23 +02:00 |
|
Son NK
|
dc8c2f403e
|
try to fix Message.as_bytes() by trying different policies
|
2020-08-21 12:01:11 +02:00 |
|
Son NK
|
01afb7557c
|
small refactoring
|
2020-08-21 10:47:10 +02:00 |
|
Son NK
|
2b2512e775
|
no need to create a copy of message when there's only 1 mailbox
|
2020-08-21 10:41:50 +02:00 |
|
Son NK
|
5bb4c20fba
|
fix nb_bounced computation
|
2020-08-21 10:32:10 +02:00 |
|
Son NK
|
90eae05e9e
|
better logging
|
2020-08-21 10:20:08 +02:00 |
|
Son NK
|
386fcbdc3a
|
refactoring
|
2020-08-21 10:18:58 +02:00 |
|
Son NK
|
a3e052cc7b
|
black
|
2020-08-20 14:28:57 +02:00 |
|
Son NK
|
db0e197500
|
set the email log that has been bounced
|
2020-08-20 14:27:05 +02:00 |
|
Son NK
|
1de57119c4
|
add missing commit
|
2020-08-20 11:58:46 +02:00 |
|
Son NK
|
50683be4f8
|
increase spamassassin timeout to 300s
|
2020-08-17 11:42:46 +02:00 |
|
Son NK
|
38bf117f29
|
move the lock sync to _handle
|
2020-08-17 11:40:58 +02:00 |
|
Son NK
|
d8a415c00a
|
do not use aiostmpd controller
|
2020-08-17 11:39:13 +02:00 |
|
Son NK
|
24d8babe46
|
handle case spamassassin can't be reached
|
2020-08-16 21:54:19 +02:00 |
|
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 |
|
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 |
|