]>
git.ipfire.org Git - thirdparty/dovecot/core.git/log
Aki Tuomi [Mon, 15 Dec 2025 09:44:10 +0000 (11:44 +0200)]
lib-var-expand: Handle default rule as error
Aki Tuomi [Mon, 15 Dec 2025 10:25:21 +0000 (12:25 +0200)]
lib-var-expand: Do not clobber error in var_expand_parser_error()
Aki Tuomi [Mon, 15 Dec 2025 09:52:18 +0000 (11:52 +0200)]
lib-var-expand: Check that there is program before switching it as previous program
Aki Tuomi [Mon, 15 Dec 2025 09:45:15 +0000 (11:45 +0200)]
lib-var-expand: Remove stray 'y'
It was left there by accident in
07838de2f838fce4f23c45059242e2bd4be23e73
Aki Tuomi [Mon, 15 Dec 2025 09:30:27 +0000 (11:30 +0200)]
lib-var-expand: Reuse previous literal when adding new one
If the previous program was already a literal-only program,
append next literal to it, instead of creating a new program.
Aki Tuomi [Sat, 13 Dec 2025 15:04:45 +0000 (17:04 +0200)]
lib-var-expand: expansion-program - Limit input size
Allow at most 8192 bytes.
Aki Tuomi [Thu, 11 Dec 2025 07:01:14 +0000 (09:01 +0200)]
m4: dovecot.m4 - Add Control-flow protection support
Aki Tuomi [Thu, 11 Dec 2025 06:53:27 +0000 (08:53 +0200)]
m4: dovecot.m4 - Add Straight-Line Speculation (SLS) mitigation support
Aki Tuomi [Thu, 11 Dec 2025 06:45:05 +0000 (08:45 +0200)]
m4: dovecot.m4 - Add LTO support
alexandre.roux [Wed, 3 Dec 2025 05:00:47 +0000 (14:00 +0900)]
lib-settings: Add comments to settings-history-core.txt
alexandre.roux [Tue, 18 Nov 2025 08:24:40 +0000 (17:24 +0900)]
lib-settings: Update settings-history.py to skip comments from input_file
alexandre.roux [Wed, 3 Dec 2025 08:41:21 +0000 (17:41 +0900)]
lib-settings: Update settings-history.py to parse both Pro and CE tag
Stephan Bosch [Fri, 21 Nov 2025 04:10:41 +0000 (05:10 +0100)]
imap: notify - Properly encode mailbox names in mUTF7
Stephan Bosch [Fri, 21 Nov 2025 04:25:26 +0000 (05:25 +0100)]
imap: imap-notify - Add client local variable in imap_notify_list()
Stephan Bosch [Fri, 21 Nov 2025 04:04:56 +0000 (05:04 +0100)]
imap: cmd-notify - Add client local variable in imap_notify_box_send_status()
Timo Sirainen [Sat, 6 Dec 2025 08:53:53 +0000 (10:53 +0200)]
acl: acl_lookup_dict_rebuild() - Avoid excessive data stack growth
Timo Sirainen [Sat, 6 Dec 2025 08:25:01 +0000 (10:25 +0200)]
acl: Remove deprecated global ACL files
Use the acl { ... } settings instead. This removes acl_global_path setting.
Stephan Bosch [Sat, 22 Nov 2025 23:28:51 +0000 (00:28 +0100)]
lib-imap: imap-match - Properly adhere to grapheme cluster boundaries
Stephan Bosch [Mon, 8 Dec 2025 04:30:38 +0000 (05:30 +0100)]
lib: unichar - Add grapheme cluster scanner
Stephan Bosch [Fri, 11 Apr 2025 03:35:10 +0000 (05:35 +0200)]
lib: unicode - Implement text segmentation at grapheme cluster boundaries
Stephan Bosch [Sun, 23 Nov 2025 21:56:04 +0000 (22:56 +0100)]
lib: test-unicode-* - Use absolute source directory for composing UCD directory
Allows calling the unit tests outside the local source directory.
Stephan Bosch [Sat, 22 Nov 2025 17:26:30 +0000 (18:26 +0100)]
lib: unicode-data - Rename several word break bits for common use
Stephan Bosch [Sat, 22 Nov 2025 17:02:50 +0000 (18:02 +0100)]
lib: unicode-ucd-compile.py - Use write_tables_c_cpd() also for codepoint defaults
Stephan Bosch [Sat, 22 Nov 2025 16:57:21 +0000 (17:57 +0100)]
lib: unicode-ucd-compile.py - Split off write_tables_c_cpd()
Stephan Bosch [Sun, 23 Nov 2025 01:09:07 +0000 (02:09 +0100)]
lib: unicode-ucd-compile.py - Make framework for handling default code point data
Timo Sirainen [Mon, 10 Feb 2025 15:24:11 +0000 (17:24 +0200)]
imap: LIST - Handle invalid mUTF-7 mailbox names as never matching anything
Aki Tuomi [Thu, 13 Nov 2025 12:39:21 +0000 (14:39 +0200)]
lib-var-expand: Use allocfree pool for parser
For compability reasons, alloconly cannot be used here.
Timo Sirainen [Fri, 5 Dec 2025 23:12:29 +0000 (01:12 +0200)]
config: Update supported dovecot_config_versions
Timo Sirainen [Wed, 3 Dec 2025 21:19:23 +0000 (23:19 +0200)]
lib-imap: Fix linking dependency to lib-mail
Timo Sirainen [Wed, 3 Dec 2025 20:58:01 +0000 (22:58 +0200)]
lib-sasl: Fix linking dependencies
Timo Sirainen [Wed, 3 Dec 2025 20:57:49 +0000 (22:57 +0200)]
lib-dict: test-dict - Remove duplicate variables
Timo Sirainen [Wed, 3 Dec 2025 20:57:28 +0000 (22:57 +0200)]
lib-mail: test-message-decoder - Remove duplicate function
Timo Sirainen [Fri, 5 Dec 2025 02:16:50 +0000 (04:16 +0200)]
config: Fix panic when parsing invalid %{ variable program
For example:
login_greeting = %{
Fixes:
Panic: %{: syntax error, unexpected end of file, expecting CCBRACE or PIPE or NAME
Fred Morcos [Wed, 19 Nov 2025 12:58:24 +0000 (13:58 +0100)]
lib-mail: Make message_part_is_attachment() part parameter const
Timo Sirainen [Fri, 5 Dec 2025 01:35:26 +0000 (03:35 +0200)]
lda: Use EX_TEMPFAIL (75) if configuration is invalid instead of 89
This is a v2.4 / v3.0 regession caused by a series of commits:
99080aeceea1da42f2da00e703bc6a69ddfd216d
ae7aea07b9e34c712909e7a44c682e968f4c55e5
f464063f63245a10f65eaab8720d5874f824c6b1
Stephan Bosch [Thu, 27 Nov 2025 23:47:02 +0000 (00:47 +0100)]
submisssion-login: Fix segfault occuring at proxy AUTH upon relay connection failure
Fixed by halting server input once proxy authentication succeeds. This prevents
race conditions between input from proxy server and command output, which causes
a segfault when the current server command is already cleared when more input
(beyond AUTH success) from the proxy server comes in.
Stephan Bosch [Thu, 27 Nov 2025 23:45:44 +0000 (00:45 +0100)]
submission-login: submission-proxy - Fix assert calls in submission_proxy_parse_line()
Stephan Bosch [Thu, 27 Nov 2025 23:42:07 +0000 (00:42 +0100)]
login-common: login-proxy - Add login_proxy_input_halt()
Halts input from proxy server early so that proxy_parse_input callback is not
called again.
Timo Sirainen [Tue, 2 Dec 2025 11:21:14 +0000 (13:21 +0200)]
lib-auth-client: Fix user iteration potentially listing empty usernames
Broken by
529e9d98cb637fc69bd5e8a3ed769b0031558c67
With earlier code one of ctx->username, finished or failed was guaranteed to
be set. With the new auth_master_request_wait() code this is no longer true.
It's unclear when exactly this happens or how to reproduce, but the fixed code
makes sure it doesn't, or at least assert-crashes if it still does.
Timo Sirainen [Thu, 4 Dec 2025 14:15:46 +0000 (16:15 +0200)]
lib-auth-client: Remove obsolete comment
Timo Sirainen [Thu, 4 Dec 2025 14:00:39 +0000 (16:00 +0200)]
auth: Fix user iteration when there were many users
The iteration stopped in the middle and an error was logged:
auth: Error: auth-worker: Aborted LIST request for *: Shutting down
Broken by
f591498845fd7b5e11f1085b6e1f5e34dcc84767
Timo Sirainen [Thu, 4 Dec 2025 11:46:03 +0000 (13:46 +0200)]
lib-imap: seqset - Fail if seeing over 32bit sequence numbers
Previously they were wrapped to 32bit number.
Timo Sirainen [Thu, 4 Dec 2025 07:19:33 +0000 (09:19 +0200)]
imapc: Add support for SEARCH MIMEPART
Use it if the remote server advertises SEARCH=X-MIMEPART or SEARCH=MIMEPART.
Timo Sirainen [Wed, 3 Dec 2025 14:00:08 +0000 (16:00 +0200)]
login-common: Use login_binary.service_name for anvil lookups
This fixes mail_max_userip_connections to work with managesieve. It was
previously using "sieve" to do the lookup, while actually using
"managesieve" for registering itself to anvil. Now the lookup will also
use "managesieve".
Timo Sirainen [Wed, 3 Dec 2025 13:58:55 +0000 (15:58 +0200)]
login-common, *-login: Add login_binary.service_name
This will be used for anvil.
Timo Sirainen [Wed, 3 Dec 2025 10:35:55 +0000 (12:35 +0200)]
submission-login: Handle CLIENT_AUTH_RESULT_LIMIT_REACHED as temporary error
Timo Sirainen [Wed, 3 Dec 2025 10:06:42 +0000 (12:06 +0200)]
login-common, *-login: Add proxy_dest_connection_limit error_code to proxy_session_finished
If IMAP backend returns with [LIMIT] or POP3 backend returns with [IN-USE],
use this error code rather than the generic proxy_dest_auth_failed.
Error messages are also updated.
Timo Sirainen [Wed, 3 Dec 2025 09:43:19 +0000 (11:43 +0200)]
pop3-login: If mail_max_userip_connections is reached, reply to login with [IN-USE] prefix
The [IN-USE] indicates that the mailbox is locked for servers that allow
only a single POP3 client at a time. This is similar to rejecting login
due to too many concurrent logins.
Timo Sirainen [Wed, 3 Dec 2025 09:25:45 +0000 (11:25 +0200)]
login-common: If proxy fails, log the reason in the "Login aborted" log line
It was already logged separately in proxy's "Login failed" line, but having
the reason in the "Login aborted" line as well avoids having to match log
lines to find the reason.
Timo Sirainen [Tue, 2 Dec 2025 22:33:12 +0000 (00:33 +0200)]
imapc: Support SORT=DISPLAY extension
Timo Sirainen [Tue, 2 Dec 2025 21:39:40 +0000 (23:39 +0200)]
imapc: Use ESORT extension if it exists
Timo Sirainen [Tue, 2 Dec 2025 16:47:43 +0000 (18:47 +0200)]
imapc: Implement SORT optimization
Timo Sirainen [Wed, 3 Dec 2025 21:07:56 +0000 (23:07 +0200)]
lib-imap-client, imapc: Automatically register no-CAPABILITY values for imapc_features
Remove explicit no-metadata, no-qresync and no-imap4rev2 features, since
they're now automatically added.
no-acl was left for now, because it's used regardless of the advertised ACL
CAPABILITY. This should probably be changed.
Timo Sirainen [Wed, 3 Dec 2025 21:04:26 +0000 (23:04 +0200)]
lib-imap-client: Add and use imapc_capability_lookup()
Timo Sirainen [Wed, 3 Dec 2025 20:59:09 +0000 (22:59 +0200)]
lib-imap-client: Change imapc_features to be case-sensitive
Settings in general are case sensitive - there's no reason to make them case
insensitive.
Timo Sirainen [Wed, 3 Dec 2025 20:54:24 +0000 (22:54 +0200)]
lib-imap-client: Move imapc_capability* to imapc-settings.[ch]
Timo Sirainen [Wed, 3 Dec 2025 00:31:51 +0000 (02:31 +0200)]
imapc: Handle SEARCH NO replies by forwarding the error
This is how most of the other commands already work. It just wasn't done
for SEARCH.
Timo Sirainen [Wed, 3 Dec 2025 00:27:35 +0000 (02:27 +0200)]
imapc: Fix handling SEARCH failures
Previously if the remote SEARCH failed, the failure was simply ignored and
empty results returned.
Timo Sirainen [Wed, 3 Dec 2025 00:46:21 +0000 (02:46 +0200)]
imapc: Fix sending UID STORE commands
The uidset parameter always ended with a comma, which isn't valid IMAP
protocol.
Timo Sirainen [Tue, 2 Dec 2025 21:39:23 +0000 (23:39 +0200)]
lib-imap: Add imap_seq_set_ordered_parse()
Timo Sirainen [Tue, 2 Dec 2025 22:43:26 +0000 (00:43 +0200)]
lib-imap: imap_seq_set_*parse() - Return empty input string as an error
Timo Sirainen [Tue, 2 Dec 2025 22:44:31 +0000 (00:44 +0200)]
lib-imap: Add test-imap-seqset
Timo Sirainen [Wed, 3 Dec 2025 00:39:53 +0000 (02:39 +0200)]
lib: Reformat seq-set-builder.h
Timo Sirainen [Wed, 3 Dec 2025 09:11:00 +0000 (11:11 +0200)]
lib-login: Don't reset process title after successful login
The login_server_conn_unref() function was unconditionally calling
login_server_proctitle_refresh(), which would reset the process title
to "[idling]". This happened even after a successful login, overwriting
the process title set by the service (e.g., imap, pop3).
Marco Bettini [Mon, 10 Nov 2025 16:31:08 +0000 (16:31 +0000)]
imapc: Add STATUS (DELETED)
Marco Bettini [Tue, 18 Nov 2025 13:50:43 +0000 (13:50 +0000)]
imapc: imapc_server_unselect() - Use root separator for unselect-via-select
Marco Bettini [Tue, 18 Nov 2025 10:30:14 +0000 (10:30 +0000)]
imapc: Handle the response to UNSELECT on the remote side
Marco Bettini [Thu, 13 Nov 2025 13:32:52 +0000 (13:32 +0000)]
imapc: Extract imapc_server_unselect()
Marco Bettini [Thu, 13 Nov 2025 11:26:46 +0000 (11:26 +0000)]
lib-imap-client: Track connection's selected mailbox
Marco Bettini [Mon, 10 Nov 2025 15:23:14 +0000 (15:23 +0000)]
lib-imap-client: Propagate selected mailbox name to struct imapc_client_mailbox
Marco Bettini [Thu, 13 Nov 2025 10:57:52 +0000 (10:57 +0000)]
lib-imap-client: imapc_connection_unselect() - Rename to imapc_connection_mailbox_closed()
Marco Bettini [Mon, 27 Oct 2025 15:43:01 +0000 (15:43 +0000)]
imap: Add STATUS (DELETED)
Timo Sirainen [Mon, 24 Nov 2025 08:30:12 +0000 (10:30 +0200)]
lib: connection API - Add assert to make sure input is not NULL
Some code, such as http_client_connection_start_tunnel(), can explicitly set
input/output to NULL to detach from the connection. However, they shouldn't
do it with client_connect_succeeded=FALSE stage.
Improvement to
95512b697fdbdd16d4112c6eec45ec4f3792485c
Timo Sirainen [Sun, 23 Nov 2025 21:24:30 +0000 (23:24 +0200)]
lib-master: test-event-stats - Fix memory leak
Broken by
95512b697fdbdd16d4112c6eec45ec4f3792485c
Timo Sirainen [Tue, 2 Dec 2025 11:11:20 +0000 (13:11 +0200)]
doveadm: Flush print output after processing each user
Otherwise when processing many users, the print output wouldn't be flushed
until enough output had been written. If there wasn't much written, it
could have taken a long time to see anything printed.
Timo Sirainen [Mon, 1 Dec 2025 17:25:41 +0000 (19:25 +0200)]
global: Replace important iostream == NULL checks with iostream->closed
This are useful after the previous connection_disconnect() API change to
preserve the old behavior better.
More checks could have been done or NULL checks could have been removed, but
for now lets just do the minimum that is useful.
Timo Sirainen [Mon, 1 Dec 2025 16:18:27 +0000 (18:18 +0200)]
lib: connection API - Always have iostreams available
Set iostreams immediately when connection is initialized, and unset them
only at connection_deinit(). client_disconnect() only closes the iostreams.
This way it's safe to always access connection's iostreams without having to
check whether they are NULL.
This fixes at least a crash in auth process's pass_callback_finish()
where output is tried to be written to auth-master client connection,
which has already disconnected.
Timo Sirainen [Mon, 1 Dec 2025 23:55:23 +0000 (01:55 +0200)]
lib: connection API - Add client_connect_succeeded field
This is needed after the following change, since it's not possible to use
input/output != NULL check for it.
Aki Tuomi [Wed, 19 Nov 2025 08:05:41 +0000 (10:05 +0200)]
lib-program-client: test-program-client-local - Wait longer with valgrind
Aki Tuomi [Wed, 19 Nov 2025 08:03:33 +0000 (10:03 +0200)]
lib-program-client: test-program-client-unix - Finish ostream
Aki Tuomi [Wed, 19 Nov 2025 07:59:25 +0000 (09:59 +0200)]
lib-program-client: test-program-client - Do not require error handling
It's not important here.
Aki Tuomi [Thu, 20 Nov 2025 11:49:58 +0000 (13:49 +0200)]
CONTRIBUTING.md: First version
Aki Tuomi [Thu, 20 Nov 2025 11:45:34 +0000 (13:45 +0200)]
AGENTS.md: First version
Aki Tuomi [Wed, 19 Nov 2025 16:59:48 +0000 (18:59 +0200)]
configure: Fix LIBDOVECOTTEST_LIBS to LIBDOVECOT_TEST_LIBS
Aki Tuomi [Wed, 19 Nov 2025 10:10:27 +0000 (12:10 +0200)]
lib-dovecot: Make it possible to do semistatic libdovecot.so
This can be now done with setting
- ZLIB_LIBS_STATIC to libz.a location
- LIBPCRE_LIBS_STATIC to libpcre2-32.a location
- SSL_LIBS to both libssl.a and libcrypto.a location
Aki Tuomi [Wed, 19 Nov 2025 10:09:04 +0000 (12:09 +0200)]
global: Add and use LIBDOVECOT_TEST_LIBS
Timo Sirainen [Mon, 17 Nov 2025 09:14:22 +0000 (11:14 +0200)]
doveadm: doveadm_blocking_connect() - Fix panic if handshake read() fails
Fixes:
Panic: output stream .../master is missing error handling
Timo Sirainen [Tue, 18 Nov 2025 13:18:56 +0000 (15:18 +0200)]
lib-var-expand: Fix unit test failure with some bison versions
Some versions start the error with "syntax error, unexpected $end".
Broken by
fcedf9dfe8db1fa0952df47ddfc26d930188863a
Timo Sirainen [Tue, 18 Nov 2025 12:49:54 +0000 (14:49 +0200)]
master: Set anvil process's last_status_update immediately after config reload
Timo Sirainen [Mon, 17 Nov 2025 13:32:05 +0000 (15:32 +0200)]
pop3c: Fix potential hangs with SSL
io_add_istream() should be used when SSL iostreams.
Timo Sirainen [Mon, 17 Nov 2025 13:23:11 +0000 (15:23 +0200)]
pop3c: Show the exact state where client timed out
Many different states caused "Authentication timed out".
Markus Valentin [Thu, 13 Nov 2025 11:04:05 +0000 (12:04 +0100)]
lib-http: Add HTTP_CLIENT_REQUEST_ERROR_PREREQUISITE_FAILED error code
This new internal error code can be used to signal that a prerequisite
for submitting the request failed.
Timo Sirainen [Thu, 6 Nov 2025 13:25:55 +0000 (15:25 +0200)]
auth: auth_cache_parse_key_and_fields() - Change to return error instead of i_fatal()
Timo Sirainen [Thu, 6 Nov 2025 13:19:21 +0000 (15:19 +0200)]
auth: Add and use userdb_set_cache_key() to set cache key
Timo Sirainen [Thu, 6 Nov 2025 13:16:18 +0000 (15:16 +0200)]
auth: Add and use passdb_set_cache_key() to set cache key
Timo Sirainen [Thu, 6 Nov 2025 12:53:42 +0000 (14:53 +0200)]
auth: ldap - Avoid repeating error messages if iteration fails due to invalid settings
Timo Sirainen [Thu, 6 Nov 2025 12:52:37 +0000 (14:52 +0200)]
auth: ldap - Fix crash if users are iterated, but userdb_ldap_iterate_fields is not set
Timo Sirainen [Thu, 6 Nov 2025 12:48:47 +0000 (14:48 +0200)]
auth: Don't initialize cache key if caching is disabled for the userdb
Timo Sirainen [Thu, 6 Nov 2025 12:46:39 +0000 (14:46 +0200)]
auth: userdb.preinit() - Add userdb_parameters parameter
Timo Sirainen [Thu, 6 Nov 2025 12:44:35 +0000 (14:44 +0200)]
auth: Don't initialize cache key if caching is disabled for the passdb