Commit graph

222 commits

Author SHA1 Message Date
Aine
66bd1a4fab
do not add empty mime parts, fixes #51 2022-11-17 23:11:11 +02:00
Aine
225ba2ee9b
adjust auto-retry, fix banned response code, rewrite email composing to enmime, add more logs 2022-11-16 22:22:19 +02:00
Aine
fce6593cd7
send multipart email with both html and plaintext by default, closes #22 2022-11-16 20:01:30 +02:00
Aine
7457f0436e
add !pm send:html, closes #46 2022-11-16 19:30:44 +02:00
Aine
8ebe80bc4f
add automatic greylisting 2022-11-16 18:47:24 +02:00
Aine
15b90e9e4c
add banlist total 2022-11-16 17:37:27 +02:00
Aine
d0fa75b215
banlist visual adjustments 2022-11-16 15:57:31 +02:00
Aine
86cda29729
banlist 2022-11-16 14:23:42 +02:00
Aine
ebe9606aa9
real multi-domain support 2022-11-16 09:00:19 +02:00
Aine
24e9fb8a59
fix typo 2022-11-15 19:28:38 +02:00
Aine
ec266e9108
wip encrypted parent event 2022-11-15 19:22:15 +02:00
Aine
7c59ff4b2e
decrypt parent event only when really needed, lookup threadID only when really needed 2022-11-15 16:02:31 +02:00
Aine
e7be9c6fad
update deps, correctly log meta information 2022-11-15 15:37:24 +02:00
Aine
4ef139f875
rename queue config options 2022-11-15 09:45:43 +02:00
Aine
a8780a32c1
explicitly tell about enqueued email 2022-11-15 09:42:07 +02:00
Aine
eb07bc1ac7
mail queue 2022-11-14 20:02:13 +02:00
Aine
ce1599d8a3
cache and encrypt email threads metadata 2022-11-14 18:18:30 +02:00
Aine
d5f2a6b75f
fix thread replies in matrix 2022-11-14 15:56:27 +02:00
Aine
94b1d13eb7
try to find parent email by Message-Id and references 2022-11-14 10:42:10 +02:00
Aine
b9cf336a6d
fix encrypted thread reply, fix From header in thread reply 2022-11-14 00:38:17 +02:00
Aine
29cd6c4dcb
add missing References email header, fix Message-Id composing, fix email reply bugs 2022-11-13 15:33:19 +02:00
Aine
f835a7560d
bridge thread replies from matrix to email 2022-11-10 21:58:29 +02:00
Aine
307aca7f23
refactor smtp 2022-11-10 13:26:12 +02:00
Aine
9cfe0a6d4f
show multi-domain aliases everywhere 2022-11-08 21:21:06 +02:00
Aine
15d5afe90f
initial, rought, not-user-friendly support for multi-domain setup 2022-11-08 18:16:38 +02:00
Aine
2c47bc7e14
fix lowercase 2022-10-28 08:44:09 +03:00
Aine
45ff7597ed
send emails to multiple addresses at once 2022-10-24 16:50:00 +03:00
Aine
a1feaff350
fix mappings check on !pm mailbox 2022-10-24 08:34:24 +03:00
Aine
a4ade439a6
fix false-positive error message 2022-10-19 13:43:09 +03:00
Aine
4dd09dacb4
move migration to the postmoogle inital room sync 2022-10-17 19:01:21 +03:00
Aine
42cb5221a1
spamlist wildcards 2022-10-16 20:14:54 +03:00
Aine
590182c272
do not return error on empty account data, fix room account data cache key, update deps, fixes #37 2022-10-12 13:53:30 +03:00
Aine
8c2ed1b496
Merge branch 'main' into security 2022-10-10 09:49:36 +03:00
Aine
6f4da59387
feedback, typos, renaming 2022-10-10 09:41:22 +03:00
Aine
4ec51b64eb
fix possible nil 2022-10-08 18:22:31 +03:00
Aine
c6049a7451
hotfix panic, fixes #36 2022-10-08 18:20:41 +03:00
Aine
1dd996e430
rename security options 2022-10-08 11:58:14 +03:00
Aine
0767e7d0c3
security and spam options descriptions 2022-10-08 11:29:10 +03:00
Aine
99e509ea3a
Email validations 2022-10-08 00:11:48 +03:00
Aine
6f8e850103
expose security and spam options 2022-10-07 23:24:59 +03:00
Aine
70ef60c934
add 'norecipient' room option, closes #35 2022-10-07 23:07:57 +03:00
Aine
d6b6a5dc44
add catch-all mailbox, closes #25 2022-10-04 21:45:52 +03:00
Aine
f3c5c47e76
room and user account data encryption 2022-10-02 20:15:46 +03:00
Aine
ed5765b42a
move seding files and work with account data to the linkpearl level 2022-10-02 13:51:58 +03:00
Aine
c56c740c1d
add password option messages 2022-09-23 11:28:15 +03:00
Aine
4bf0f0dee3
switch to password hashes 2022-09-23 11:17:34 +03:00
Aine
ce53d85806
Merge branch 'main' into expose-mta 2022-09-23 10:44:00 +03:00
Aine
e368d26fc1
check full email in AllowAuth 2022-09-23 10:37:08 +03:00
Slavi Pantaleev
9129f8e38c Apply 1 suggestion(s) to 1 file(s) 2022-09-23 07:35:35 +00:00
Aine
3f5a1cd915
rename local to incoming 2022-09-23 10:33:25 +03:00
Aine
5a19ffad08
securely compare passwords, add notice about message removal 2022-09-23 10:19:25 +03:00
Aine
90927247fd
fix nosend description 2022-09-22 21:40:31 +03:00
Aine
070a6ffc76
use postmoogle as general purpose SMTP server and allow other apps or scripts to send emails through it 2022-09-22 18:21:17 +03:00
Aine
c9c871287d
add read receipts and typing notifications, closes #30 2022-09-21 11:18:25 +03:00
Aine
97aacbf143
export MXID patterns parsing to external lib 2022-09-14 13:46:56 +03:00
Aine
76bffd931c
correctly handle attachments mimetype and set proper msgtype, fixes #27 2022-09-13 17:21:00 +03:00
Aine
08aa23b397
fix Message-Id, fixes #20 2022-09-08 14:08:17 +03:00
Aine
a608fffea8
!pm dkim reset; switch DKIM algo to RSA 2022-09-08 09:31:09 +03:00
Aine
40f2ec9492
fix command parsing 2022-09-07 23:51:37 +03:00
Aine
715ec1ef2a
fix #19 2022-09-07 20:24:49 +03:00
Aine
4d01579505
move email sending to b.runSend() 2022-09-06 22:43:04 +03:00
Aine
db135c0cb1
deconstruct getSubject and getBody 2022-09-06 22:34:21 +03:00
Aine
bbb6bec35f
update SetMTA comment 2022-09-06 22:21:23 +03:00
Aine
af1b664274
cache empty settings 2022-09-06 22:02:21 +03:00
Aine
085cdf5dbf
refactor email2content 2022-09-06 18:39:35 +03:00
Aine
7d435f7ba8
move email composing to utils 2022-09-05 20:38:58 +03:00
Aine
2427d41ae3
move parsing of !pm send to utils, update !pm send instructions 2022-09-05 20:10:07 +03:00
Aine
12a2d4c6f9
dkim 2022-09-05 17:02:00 +03:00
Aine
fda0d62087
send emails 2022-09-04 22:09:53 +03:00
Aine
a92b4c64ae Merge branch 'only-follow-invites-for-allowed' into 'main'
Only auto-join rooms when invited by allowed users

Closes #17

See merge request etke.cc/postmoogle!28
2022-08-31 12:59:04 +00:00
Slavi Pantaleev
61cc9b21c5 Only auto-join rooms when invited by allowed users
Previously, anyone (even across federation) could invite you to a
room and the bot would join. It may not have provided a useful purpose,
but it still joined all rooms it was invited to.

We now only join rooms when we're invited by a person who is actually
allowed to use the bot.

Fixes https://gitlab.com/etke.cc/postmoogle/-/issues/17
2022-08-31 15:54:56 +03:00
Aine
a3c81ab232 Merge branch 'better-introduction' into 'main'
Improve introduction and getters usability

See merge request etke.cc/postmoogle!26
2022-08-31 07:40:25 +00:00
Aine
ab95fe5d2d
refactor to fmt.Sprintf() 2022-08-31 10:39:30 +03:00
Aine
104e948b9c
remove migrations 2022-08-31 10:33:13 +03:00
Slavi Pantaleev
4b1ce195b4 Do not append domain twice when updating mailbox (again)
Fixes:

> `mailbox` of this room set to `test@domain@domain`

Previously fixed in 97a4d6c7bc, but it seems like we unintentionally
reintroduced this bug again at some point after that.
2022-08-31 09:16:16 +03:00
Slavi Pantaleev
60d3fbbba5 Improve introduction and getters usability
When someone first joins a room, they see some commands (`mailbox`,
`owner`, ..) and they know they are getters and setters, but they have
no good example as to how to use them.

Is it `!pm mailbox SOMETHING` or `!pm mailbox=SOMETHING` or something
else?

It's better if the introduction text gives you the full command you need
to get started (e.g. `!pm mailbox SOME_MAILBOX`), instead of a partial
command that you don't know how to use (e.g. `!pm mailbox` - this is
merely a getter and will not set your mailbox to `SOME_MAILBOX`).

Starting from this, I thought it would be a good idea to make all
option getters tell you how the commands are to be used. If you send
`!pm mailbox` and it tells you "not yet set", it should also tell you
how to actually set it (e.g. `!pm mailbox VALUE`).
2022-08-31 09:08:49 +03:00
Aine
75e5ed8245 Merge branch 'improve-help-wording' into 'main'
Improve help message wording

See merge request etke.cc/postmoogle!25
2022-08-30 16:43:02 +00:00
Slavi Pantaleev
7315013912 Improve help message wording
If're an admin and mess up the `users` list, you won't see "owner"
commands.

If you're just a regular room user (not an admin, not an owner), you'll
only see the `help` command in the `help` message.

Both of these situations may make you wonder:

- is that all there is?
- earlier I saw more commands, so what's going on?

Adding "and accessible to you" hopefully clears things up, or at least
it tries to make the help message more correct.
2022-08-30 19:04:44 +03:00
Aine
233d212143
fix botSettings.Users() 2022-08-30 18:35:10 +03:00
Aine
84b1900dbb
adjust initBotUsers() 2022-08-30 18:29:16 +03:00
Aine
0c74ae02fb
fix one value 2022-08-30 16:13:10 +03:00
Aine
cec2761911
users adjustments 2022-08-30 15:43:06 +03:00
Aine
ea1ef9da7f
!pm users changes 2022-08-30 15:00:34 +03:00
Aine
00b84fba0e
cache even unexisting bot settings 2022-08-30 14:47:16 +03:00
Aine
9f66d1fee6
rename options, rename settings types 2022-08-30 14:45:07 +03:00
Aine
627e090afd
rename account data keys, rearrange code 2022-08-30 14:42:07 +03:00
Aine
5ed3a53223
diff bot and room settings 2022-08-30 14:37:19 +03:00
Aine
f97ebb604a
manage users in runtime, closes #16 2022-08-29 21:41:14 +03:00
Aine
0ba951fbe6
set default POSTMOOGLE_USERS pattern 2022-08-29 20:56:28 +03:00
Aine
89d5ec8a91
adjust !pm mailboxes, relates to #15 2022-08-29 20:31:25 +03:00
Aine
e0bd71717c
remove NOOWNER, closes #14 2022-08-29 20:21:37 +03:00
Aine
ba73b5a97c
add !pm delete, closes #13 2022-08-29 20:18:25 +03:00
Aine
505a1b42d7
removed federation, closes #12 2022-08-29 19:58:54 +03:00
Aine
5a5a649cba
add cache 2022-08-29 15:28:37 +03:00
Aine
1a87929567
rename files; show commands by access level 2022-08-29 15:19:07 +03:00
Slavi Pantaleev
bc30f59e96 Move owner commands to their own file 2022-08-29 14:25:14 +03:00
Slavi Pantaleev
d20d4aa5bf Move mailboxes admin command to a separate file 2022-08-29 14:20:20 +03:00
Slavi Pantaleev
e59f5d5502 Make Match() with empty list not return a positive result
Now that we use Match() in allowAdmin() as well, it's awkward to
have it return `true` when called with an empty admin list.
No admins defined was taken to mean "everyone is an admin".

We can either have a `len(users) == 0` check in `allowAdmin` which
rejects the request, or we can change `Match()` so that it doesn't
return positive responses when called with an empty list. Doing the
latter sounds better. It's more natural that matching against an empty list
will yield "no match".
2022-08-29 14:10:52 +03:00
Aine
6623251695
refactored 2022-08-29 12:30:43 +03:00
Slavi Pantaleev
79775c0c13 Add basic mailboxes command
This can be improved in the future, to show some additional information
about each mailbox like:

- "how many users are in that room"
- "which users are in that room"
- "who is the owner of the mailbox"

This can all be done later though.
2022-08-29 10:28:19 +03:00