mox/imapserver
Mechiel Lukkien d84c96eca5
imapserver: allow creating mailboxes with characters &#*%, and encode mailbox names in imap with imaputf7 when needed
the imapserver started with imap4rev2-only and utf8=only.  to prevent potential
issues with imaputf7, which makes "&" special, we refused any mailbox with an
"&" in the name. we already tried decoding utf7, falling back to using a
mailbox name verbatim. that behaviour wasn't great. we now treat the enabled
extensions IMAP4rev2 and/or UTF8=ACCEPT as indication whether mailbox names are
in imaputf7. if they are, the encoding must be correct.

we now also send mailbox names in imaputf7 when imap4rev2/utf8=accept isn't
enabled.

and we now allow "*" and "%" (wildcard characters for matching) in mailbox
names. not ideal for IMAP LIST with patterns, but not enough reason to refuse
them in mailbox names. people that migrate may run into this, possibly as
blocker.

we also allow "#" in mailbox names, but not as first character, to prevent
potential clashes with IMAP namespaces in the future.

based on report from Damian Poddebniak using
https://github.com/duesee/imap-flow and issue #110, thanks for reporting!
2024-01-01 13:27:29 +01:00
..
append_test.go add per-account quota for total message size disk usage 2023-12-20 20:54:12 +01:00
authenticate_test.go implement the plus variants of scram, to bind the authentication exchange to the tls connection 2023-12-23 23:19:36 +01:00
condstore_test.go expose fewer internals in packages, for easier software reuse 2023-12-14 15:39:36 +01:00
copy_test.go add per-account quota for total message size disk usage 2023-12-20 20:54:12 +01:00
create_test.go imapserver: allow creating mailboxes with characters &#*%, and encode mailbox names in imap with imaputf7 when needed 2024-01-01 13:27:29 +01:00
delete_test.go only send \NonExistent for IMAP4rev2, and automatically subscribe to imported mailboxes 2023-02-17 18:35:11 +01:00
error.go for imap/smtp syntax errors, only echo the remaining buffer if the connection is authenticated 2023-03-10 11:32:34 +01:00
expunge_test.go mox! 2023-01-30 14:27:06 +01:00
fetch.go add per-account quota for total message size disk usage 2023-12-20 20:54:12 +01:00
fetch_test.go mox! 2023-01-30 14:27:06 +01:00
fuzz_test.go switch to slog.Logger for logging, for easier reuse of packages by external software 2023-12-14 13:45:52 +01:00
idle_test.go imap continuations must have a space after the "+" 2023-07-24 19:54:55 +02:00
list.go imapserver: allow creating mailboxes with characters &#*%, and encode mailbox names in imap with imaputf7 when needed 2024-01-01 13:27:29 +01:00
list_test.go imapserver: always send special-use attributes for mailboxes 2023-09-23 21:00:26 +02:00
lsub_test.go mox! 2023-01-30 14:27:06 +01:00
move_test.go mox! 2023-01-30 14:27:06 +01:00
pack.go add two new log levels for tracing sensitive auth protocol messages, and bulk data messages 2023-02-03 20:33:19 +01:00
parse.go imapserver: allow creating mailboxes with characters &#*%, and encode mailbox names in imap with imaputf7 when needed 2024-01-01 13:27:29 +01:00
prefixconn.go mox! 2023-01-30 14:27:06 +01:00
protocol.go add condstore & qresync imap extensions 2023-07-24 21:25:50 +02:00
protocol_test.go add condstore & qresync imap extensions 2023-07-24 21:25:50 +02:00
rename_test.go imapserver: only send OLDNAME in LIST responses when IMAP4rev2 was enabled 2023-12-14 20:20:17 +01:00
search.go switch to slog.Logger for logging, for easier reuse of packages by external software 2023-12-14 13:45:52 +01:00
search_test.go add webmail 2023-08-07 21:57:03 +02:00
selectexamine_test.go implement storing non-system/well-known flags (keywords) for messages and mailboxes, with imap 2023-06-24 00:24:43 +02:00
server.go imapserver: allow creating mailboxes with characters &#*%, and encode mailbox names in imap with imaputf7 when needed 2024-01-01 13:27:29 +01:00
server_test.go add per-account quota for total message size disk usage 2023-12-20 20:54:12 +01:00
starttls_test.go add per-account quota for total message size disk usage 2023-12-20 20:54:12 +01:00
status_test.go improve message parsing: allow bare carriage return (unless in pedantic mode), allow empty header, and no longer treat a message with only headers as a message with only a body 2023-08-11 14:07:49 +02:00
store_test.go add webmail 2023-08-07 21:57:03 +02:00
subscribe_test.go mox! 2023-01-30 14:27:06 +01:00
unselect_test.go mox! 2023-01-30 14:27:06 +01:00
unsubscribe_test.go mox! 2023-01-30 14:27:06 +01:00
utf7.go imapserver: allow creating mailboxes with characters &#*%, and encode mailbox names in imap with imaputf7 when needed 2024-01-01 13:27:29 +01:00
utf7_test.go imapserver: allow creating mailboxes with characters &#*%, and encode mailbox names in imap with imaputf7 when needed 2024-01-01 13:27:29 +01:00