]>
git.ipfire.org Git - thirdparty/dovecot/core.git/log
Aki Tuomi [Fri, 9 Aug 2024 09:24:39 +0000 (12:24 +0300)]
configure: Update version
Aki Tuomi [Thu, 8 Aug 2024 12:13:19 +0000 (15:13 +0300)]
NEWS: Add news for 2.3.21.1
Marco Bettini [Wed, 24 Apr 2024 10:45:46 +0000 (10:45 +0000)]
lib-mail: message-parser - Limit headers total count to 50MB by default
(including top headers and all mime-sections headers)
Marco Bettini [Fri, 12 Apr 2024 15:06:43 +0000 (15:06 +0000)]
lib-mail: message-header-parser - Limit header block to 10MB by default
Timo Sirainen [Thu, 8 Feb 2024 22:57:12 +0000 (00:57 +0200)]
lib-mail, lib-imap: Optimize parsing large number of address headers
Every header was appended to a linked list by walking through the whole
list, causing excessive CPU usage when the list became large enough.
Fixed by changing struct message_part_envelope to use struct
message_address_list, which stores also linked list tail pointers. This
allows quickly appending to the end of the linked list.
Timo Sirainen [Tue, 30 Jan 2024 20:17:38 +0000 (22:17 +0200)]
lib-mail: Add message_address_parse_full() and struct message_address_list
Timo Sirainen [Sat, 3 Feb 2024 22:26:57 +0000 (00:26 +0200)]
lib-mail: Change message_address to be doubly linked list
Timo Sirainen [Tue, 30 Jan 2024 20:42:50 +0000 (22:42 +0200)]
lib-mail: test-imap-envelope - Use test_assert_idx() where possible
Timo Sirainen [Thu, 8 Feb 2024 22:33:00 +0000 (00:33 +0200)]
lib: Add DLLIST2_JOIN()
Timo Sirainen [Thu, 8 Feb 2024 22:32:39 +0000 (00:32 +0200)]
lib: test-llist - Fix dllist2 test name
Aki Tuomi [Tue, 26 Mar 2024 12:13:42 +0000 (14:13 +0200)]
auth: mech-oauth2 - Use the iterated passdb in oauth2_find_oidc_url()
Fixes a crash when oauth2 passdb is not first. Broken in
59647f483c49c9e54c43cade168bf10f44a49292
Timo Sirainen [Wed, 13 Mar 2024 11:08:18 +0000 (13:08 +0200)]
login-common: Add client_vfuncs.iostream_change_pre/post()
Timo Sirainen [Fri, 6 Oct 2023 12:59:32 +0000 (15:59 +0300)]
lib: Fix sha2 functions to not produce wrong results with >500MB input
Marco Bettini [Tue, 3 Oct 2023 13:11:49 +0000 (13:11 +0000)]
oauth: Accept multiple entries in aud field
Marco Bettini [Mon, 28 Aug 2023 15:27:09 +0000 (15:27 +0000)]
mail-crypt: mail_crypt_mailbox_allocated() - Force cross-user copies to (de,re)encrypt the contents
Aki Tuomi [Wed, 6 Sep 2023 12:04:49 +0000 (15:04 +0300)]
NEWS: Update NEWS with changes
Aki Tuomi [Wed, 6 Sep 2023 05:34:51 +0000 (08:34 +0300)]
lib-sql: driver-mysql - Use API state to check if there is connection
db->mysql cannot be NULL.
Broken in
542877c08eb8130733567e5b718933bc3cdc8426
Aki Tuomi [Tue, 5 Sep 2023 10:39:40 +0000 (13:39 +0300)]
dsync: Destroy name128_remotesep_hash in dsync_mailbox_tree_deinit()
Forgotten in
678d0463849ba777106eb7875f27db07a5d8e3df
Ted Phelps [Sat, 2 Sep 2023 07:50:55 +0000 (17:50 +1000)]
dsync: Fix an infinite loop
Be sure to update 'name' when traversing the components of a path
in convert_name_to_remote_sep. Otherwise we end up allocating a
lot of memory and failing.
Aki Tuomi [Wed, 30 Aug 2023 10:19:47 +0000 (13:19 +0300)]
lib-sql: driver-mysql - Initialize MYSQL struct once
Calling initialize more than once will leak memory.
Aki Tuomi [Wed, 30 Aug 2023 10:21:12 +0000 (13:21 +0300)]
lib-sql: driver-mysql - Use driver_mysql_disconnect() in deinit
This ensures we call mysql_close() only in one place.
Aki Tuomi [Tue, 29 Aug 2023 12:04:04 +0000 (15:04 +0300)]
lib-sql: driver-mysql - Use container_of instead of blind cast
Aki Tuomi [Mon, 17 Jul 2023 07:36:32 +0000 (10:36 +0300)]
lib-sql: Disconnect SQL connection on error
Timo Sirainen [Thu, 22 Jun 2023 07:48:13 +0000 (10:48 +0300)]
mdbox: Fix crash still if fdatasync_path() fails
Broken still in
a8424a71d70e2f5c54d9e2aab8338cf9547b15b4
Aki Tuomi [Wed, 30 Aug 2023 12:46:20 +0000 (15:46 +0300)]
configure: Update version
Aki Tuomi [Wed, 30 Aug 2023 12:45:45 +0000 (15:45 +0300)]
NEWS: Add news for 2.3.21
Karl Fleischmann [Thu, 15 Jun 2023 11:32:11 +0000 (13:32 +0200)]
stats: Allow empty event exporters when registering metrics
Marco Bettini [Tue, 29 Aug 2023 10:13:34 +0000 (10:13 +0000)]
fts: doveadm - Add missing pool initialization in cmd_search_box()
Broken by:
467a664b5fce33f3d47a3e1171ecacb508968d1a
Aki Tuomi [Thu, 24 Aug 2023 09:26:44 +0000 (12:26 +0300)]
auth: db-oauth2 - Set default value for active_attribute and active_value to empty string
Otherwise it will always require this attribute to be present when not
configured.
Aki Tuomi [Thu, 24 Aug 2023 19:16:36 +0000 (22:16 +0300)]
login-common: If authentication is aborted, clear out final response.
Marco Bettini [Thu, 1 Jun 2023 10:47:50 +0000 (10:47 +0000)]
auth: db-oauth2 - Handle the case for check on attribute presence only
Marco Bettini [Thu, 1 Jun 2023 08:37:56 +0000 (08:37 +0000)]
auth: db_oauth2_user_is_enabled() - Flatten the code
Steve Mokris [Tue, 17 May 2022 19:19:49 +0000 (15:19 -0400)]
auth: db-oauth2 - Fail login if active_attribute is missing
If active_attribute is required by config, we should fail to
login when it's missing.
Aki Tuomi [Fri, 12 May 2023 08:48:25 +0000 (11:48 +0300)]
lib-oauth2: Do not send empty client_id or client_secret
Aki Tuomi [Fri, 12 May 2023 08:47:41 +0000 (11:47 +0300)]
lib-oauth2: Do not send client_id and client_secret as parameters in POST queries
They need to be configured in the URL as Basic auth instead.
Aki Tuomi [Fri, 12 May 2023 05:59:50 +0000 (08:59 +0300)]
lib-oauth2: Do not send client_id & client_secret as POST parameters when doing introspection
Aki Tuomi [Mon, 8 May 2023 05:38:20 +0000 (08:38 +0300)]
lib-oauth2: Validate scope when configured
Aki Tuomi [Mon, 8 May 2023 05:23:39 +0000 (08:23 +0300)]
lib-oauth2: Remove typ check
It is not really useful. And mostly just keeps breaking when people
invent new kty values.
Aki Tuomi [Mon, 8 May 2023 05:21:43 +0000 (08:21 +0300)]
lib-oauth2: Ensure aud field has client_id when set.
OpenID Connect 1.0 specification says that "aud" field must contain
OAuth 2.0 client_id of the Relying Party as an audience value.
Aki Tuomi [Mon, 15 May 2023 10:49:58 +0000 (13:49 +0300)]
auth: mech-oauth2 - Always fail with protocol specific error
Aki Tuomi [Mon, 15 May 2023 08:51:19 +0000 (11:51 +0300)]
auth: mech-oauth2 - Look for openid configuration URL if missing
Aki Tuomi [Thu, 4 May 2023 12:44:15 +0000 (15:44 +0300)]
lib-oauth2: Return failure instead of crash with invalid or missing token
Aki Tuomi [Wed, 14 Dec 2022 08:10:12 +0000 (10:10 +0200)]
auth: db-oauth2 - Add accessor for OpenID configuration URL
Aki Tuomi [Fri, 2 Jun 2023 11:20:08 +0000 (14:20 +0300)]
auth: db-oauth2 - Store request username
Aki Tuomi [Mon, 15 May 2023 09:41:39 +0000 (12:41 +0300)]
auth: Add auth_request_fail_with_reply()
Aki Tuomi [Mon, 15 May 2023 10:49:41 +0000 (13:49 +0300)]
auth: Pass along final response with failure
Aki Tuomi [Mon, 15 May 2023 09:28:53 +0000 (12:28 +0300)]
lib-auth: Move auth_client_request_continue() lower
Simplifies next commit
Aki Tuomi [Mon, 15 May 2023 11:27:55 +0000 (14:27 +0300)]
login-common: Serve final response for client on failure
Aki Tuomi [Mon, 15 May 2023 10:49:51 +0000 (13:49 +0300)]
login-common: Ignore resp when present
sergey.kitov [Wed, 3 May 2023 11:35:54 +0000 (14:35 +0300)]
acl: Fix wrong \HasChildren flags for parent mailboxes containing '*' and '%'
'*' in mailbox name is replaced with '%' while child mailboxes still
have '*' in their path, this results in wrong \HasNoChildren flag.
sergey.kitov [Wed, 3 May 2023 11:35:18 +0000 (14:35 +0300)]
lib-storage: Whitespace cleanup.
Marco Bettini [Tue, 9 May 2023 07:22:15 +0000 (07:22 +0000)]
lib-storage: Add mail_get_message_id_no_validation()
Marco Bettini [Tue, 16 May 2023 09:40:55 +0000 (09:40 +0000)]
lib-dict: redis_reply_callback() - Don't crash if there is no callback
Timo Sirainen [Mon, 17 Apr 2023 21:08:40 +0000 (00:08 +0300)]
lib-index: Delete dovecot.index.cache during purging if it becomes too large
This only happens if the file was already too large before the purging
happens. This mainly fixes assert-crashes caused by old huge >1GB cache
files.
Fixes:
Panic: file mail-index-util.c: line 10 (mail_index_uint32_to_offset): assertion failed: (offset < 0x40000000)
Timo Sirainen [Tue, 17 May 2022 10:31:40 +0000 (12:31 +0200)]
lib-master: Use ssl_require_crl setting only for server-side SSL settings
We don't currently properly support checking CRLs when acting as SSL client.
The CRL would have to be stored as part of the CAs, which isn't commonly
done. This bug has been in the code ever since it was added in
30c5c1fc3608ae575f11960281d3e338b6bf7bc8 , but it became more noticeable
with recent changes that started using lib-master for getting all SSL
client settings, e.g.
1e5324b5805bf7299cd8196f7b659fe935f027bd
Karl Fleischmann [Thu, 6 Apr 2023 07:04:35 +0000 (09:04 +0200)]
stats: stats_metrics_add_dynamic() - Validate event exporter
Marco Bettini [Thu, 23 Mar 2023 15:37:28 +0000 (15:37 +0000)]
lib-master: stats_client_deinit() - Ensure conn.output is flushed before returning
This prevents losing exported events still waiting in buffers while the process exits.
Marco Bettini [Mon, 27 Mar 2023 08:19:38 +0000 (08:19 +0000)]
lib-master: stats_event_callback() - Skip if conn.output is already closed
This also prevents further errors from happening on the closed stream.
Marco Bettini [Fri, 24 Mar 2023 14:04:00 +0000 (14:04 +0000)]
lib-master: stats_client_send_event() - Also flush conn.output and check for errors
Marco Bettini [Thu, 23 Mar 2023 15:35:49 +0000 (15:35 +0000)]
lib-master: stats_event_write() - Don't accumulate more than IO_BLOCK_SIZE bytes in str buffer
Timo Sirainen [Fri, 24 Feb 2023 12:06:14 +0000 (14:06 +0200)]
lib: event-filter-parser.y - Add workaround for nerrs being unused warning
Fixes with clang-17:
warning: variable 'event_filter_parser_nerrs' set but not used
Timo Sirainen [Fri, 24 Feb 2023 12:02:01 +0000 (14:02 +0200)]
global: Remove dead code
Timo Sirainen [Fri, 31 Dec 2021 09:29:02 +0000 (11:29 +0200)]
lib-dict: test-dict-client - Handle shutdown cleanly with ctrl-c
Aki Tuomi [Thu, 7 Jul 2022 10:58:02 +0000 (13:58 +0300)]
login-common: Handle missing ssl_iostream in get_var_expand_table()
It can be missing during connection disconnection when connection
is lost uncleanly.
Timo Sirainen [Tue, 4 Apr 2023 08:51:22 +0000 (11:51 +0300)]
notify-status: Fix crash if user initialization fails
The deinit code crashed if mail_namespaces_created hook hadn't been called
before user was deinitialized.
Aki Tuomi [Thu, 29 Jun 2023 10:40:24 +0000 (13:40 +0300)]
lib-sql: pgsql - Use orig_ioloop instead of local variable
orig_ioloop is used later, leaving it NULL here causes
problems when timeout is added by sqlpool.
Broken in
8981a973987c237552e46b68075b64caa8c1f5bb
Marco Bettini [Mon, 26 Jun 2023 10:43:00 +0000 (10:43 +0000)]
dbox: Fix for dangling pointer being passed to cleanup_interval()
Broken in
88eee28fd86d619b26ce6aebadca5b18e748dc6f
Timo Sirainen [Tue, 20 Jun 2023 15:58:13 +0000 (18:58 +0300)]
mdbox: Optimize mail_temp_scan_interval storage/ scanning
Use the generic dbox scanning code, which avoids stat()ing the directory by
keeping the timestamp in index header. Also do the scanning while at
session deinit instead of startup, so the latency isn't visible to clients.
Timo Sirainen [Tue, 20 Jun 2023 15:58:00 +0000 (18:58 +0300)]
lib-storage: Split off index_mailbox_view_update_last_temp_file_scan()
Timo Sirainen [Tue, 20 Jun 2023 19:28:35 +0000 (22:28 +0300)]
dbox: mail_temp_scan_interval - Fix deleted temp file prefix
dbox files are always created with DBOX_TEMP_FILE_PREFIX, not the mailbox
list-specific prefix. This was a problem only if dbox was used with
LAYOUT=Maildir++, which nobody was likely to do. Other layouts had
identical temp file prefixes to DBOX_TEMP_FILE_PREFIX.
Timo Sirainen [Tue, 20 Jun 2023 15:54:49 +0000 (18:54 +0300)]
dbox: Split off dbox_mailbox_list_cleanup()
Timo Sirainen [Tue, 20 Jun 2023 15:44:52 +0000 (18:44 +0300)]
mdbox: Don't do temp file scanning for mailbox directories
The intention was to delete any temporary mail files that have been left
behind by crashed processes, but mail files are written to storage/
directory.
Timo Sirainen [Tue, 20 Jun 2023 15:24:34 +0000 (18:24 +0300)]
mdbox: Fix fdatasync() path when saving mails
It was supposed to be called on the parent directory of where mails were
written, i.e. storage/ directory. The previous code was instead calling it
on the mailbox-specific directory (similarly to sdbox) where nothing was
written.
Timo Sirainen [Tue, 20 Jun 2023 15:21:38 +0000 (18:21 +0300)]
mdbox: Fix crash if fdatasync_path() fails
There is no dest_mail anymore at this stage of transaction.
sergey.kitov [Wed, 12 Apr 2023 09:06:52 +0000 (12:06 +0300)]
lib-storage: Rollback save transaction when transaction commit fails.
Timo Sirainen [Sun, 5 Feb 2023 18:51:12 +0000 (20:51 +0200)]
sdbox: Fix panic due to leaked mail_index_view if sync fails
Fixes:
Panic: Leaked view for index .../dbox-Mails/dovecot.index: Opened in mail-index-sync.c:445
Timo Sirainen [Sun, 5 Feb 2023 18:50:06 +0000 (20:50 +0200)]
lib-index: Don't update log_file_tail_offset on sync if reading dovecot.index.log failed
This is more of a theoretical issue, since dovecot.index.log read failure is
very unlikely.
Timo Sirainen [Sun, 5 Feb 2023 18:47:08 +0000 (20:47 +0200)]
lib-index: Don't update max_tail_offset if write to dovecot.index.log fails
The max_tail_offset didn't actually increase in that situation.
This fixes wrongly updating mail_index_header.log_file_tail_offset after
write to dovecot.index.log failed (due to out of disk space), which in
turn can cause some unexpected errors.
Timo Sirainen [Sun, 5 Feb 2023 18:46:34 +0000 (20:46 +0200)]
lib-index: Fix event leak if purging dovecot.index.cache fails
Aki Tuomi [Wed, 2 Nov 2022 13:56:54 +0000 (15:56 +0200)]
lib-oauth2: jwt - Allow missing 'typ' field
Aki Tuomi [Thu, 28 May 2020 12:05:08 +0000 (15:05 +0300)]
lib-oauth2: test-oauth2-jwt - Ensure we ignore 'none' algorithm
Timo Sirainen [Fri, 14 Apr 2023 08:35:30 +0000 (11:35 +0300)]
lib-login: Don't update process title if verbose_proctitle=no
Broken by
4fcd7f497577af361fc3313fbc07a61c14e17715
Timo Sirainen [Fri, 24 Mar 2023 01:26:33 +0000 (03:26 +0200)]
global: Enable login_server_settings.update_proctitle
Timo Sirainen [Fri, 24 Mar 2023 01:26:11 +0000 (03:26 +0200)]
lib-login: Add login_server_settings.update_proctitle
Update the current login state in process title when enabled.
Timo Sirainen [Fri, 24 Mar 2023 02:02:28 +0000 (04:02 +0200)]
lib-login: Keep connection in server's linked list until it's fully freed
Otherwise the connection isn't accessible from any global variables.
Timo Sirainen [Fri, 24 Mar 2023 00:29:39 +0000 (02:29 +0200)]
imap: Update process title while unhibernating
Previously the process title stayed as [idling] even though the process was
busy waiting on the imap-hibernate process to finish sending the
unhibernation request.
Timo Sirainen [Fri, 24 Mar 2023 00:00:37 +0000 (02:00 +0200)]
lib-master: Set process title to [initializing] until master_service_init_finish()
Timo Sirainen [Fri, 24 Mar 2023 00:02:58 +0000 (02:02 +0200)]
lib: Add process_title_get_counter()
Timo Sirainen [Thu, 23 Mar 2023 23:53:43 +0000 (01:53 +0200)]
master: Set VERBOSE_PROCTITLE environment to child processes
This is needed for updating process title during initialization before
settings are read.
Timo Sirainen [Thu, 23 Mar 2023 23:15:21 +0000 (01:15 +0200)]
imap: Disconnect imap-master client if it's not sending anything for 25 seconds
Timo Sirainen [Thu, 23 Mar 2023 23:45:34 +0000 (01:45 +0200)]
imap: Improve disconnection log message if it happens immediately after unhibernation
The "No commands sent after unhibernation" can mean that imap-hibernate
process saw a timeout while unhibernating and shutdown the connection.
Or it can also mean just that the client itself disconnected.
Timo Sirainen [Thu, 23 Mar 2023 23:41:37 +0000 (01:41 +0200)]
imap-hibernate: If unhibernation fails, make sure imap process won't finish it later on
Especially if unhibernation fails due to a connection timeout to imap
process due to high load, it's possible that the imap process will
eventually finish the unhibernation and continue with the client. This is
rather confusing, since imap-hibernate process already logged that the
client got disconnected.
Timo Sirainen [Thu, 13 Jan 2022 14:54:18 +0000 (16:54 +0200)]
imap: Add client.unhibernated boolean
Marco Bettini [Fri, 5 May 2023 15:20:34 +0000 (15:20 +0000)]
auth: mech_gssapi_unwrap() - Release gss_release_buffe(outbuf) before returning
Timo Sirainen [Thu, 23 Mar 2023 20:23:39 +0000 (22:23 +0200)]
master: Fix service { idle_kill } to work better on busy servers
The previous behavior was to kill a process once it had idled for idle_kill
seconds. However, on a busy server the new connections are picked up somewhat
randomly by all the idling processes, so there's never any single process
idling for a long time. This effectively prevents the idle_kill from killing
any processes, even if there are unnecessarily many of them.
The new behavior here tracks the lowest number of idling processes during
idle_kill time interval. Then it kills that many processes. If the load
stays the same, this should shrink the number of processes to the number
that is needed to handle the load, but no more.
Timo Sirainen [Thu, 23 Mar 2023 14:07:26 +0000 (16:07 +0200)]
master: Replace per-process idle_kill timeout with per-service
This is much more efficient, since it doesn't have to keep updating the
timeout constantly for busy processes.
This change still preserves the original way the idle_kill setting behaves.
Timo Sirainen [Thu, 23 Mar 2023 14:37:08 +0000 (16:37 +0200)]
master: Add asserts to make sure counters don't wrap
Timo Sirainen [Thu, 23 Mar 2023 14:36:10 +0000 (16:36 +0200)]
master: Add service.process_idling to count number of idling processes
Timo Sirainen [Thu, 23 Mar 2023 13:09:43 +0000 (15:09 +0200)]
master: Split processes list to busy and idling processes
Keep the idling processes sorted by idle_start time. This will be needed
by the next commit.
Marco Bettini [Tue, 28 Feb 2023 12:05:44 +0000 (12:05 +0000)]
dbox: dbox_cleanup_temp_files() - Fuzz scan interval adding 0..+30% based on username hash