]>
git.ipfire.org Git - thirdparty/dovecot/core.git/log
Timo Sirainen [Thu, 29 Jul 2021 09:38:12 +0000 (12:38 +0300)]
virtual: Don't use data stack when building extension header
Some users may have thousands of mailboxes, which grows the data stack
unnecessarily large.
Timo Sirainen [Mon, 9 Aug 2021 10:01:12 +0000 (13:01 +0300)]
indexer: Fix crash if client disconnects while it's waiting for command reply
This happened for example if IMAP SEARCH triggered long fts indexing and the
IMAP client disconnected while waiting for the reply.
Broken by
f62a25849358e40a08a2c47f5bcaa1613a31d076
Stephan Bosch [Thu, 6 May 2021 09:58:21 +0000 (11:58 +0200)]
lib-smtp: smtp-server-cmd-data - Fix global state cleanup upon DATA command destroy.
Should cleanup global state only when it belongs to the DATA/BDAT command
currently being destroyed.
Fixes NULL-dereference in i_stream_read() found by OSS-Fuzz.
Stephan Bosch [Thu, 5 Aug 2021 09:38:26 +0000 (11:38 +0200)]
lib-smtp: test-smtp-server-errors - Perform "Bad pipelined DATA" test with actual pipelining.
Timo Sirainen [Tue, 3 Aug 2021 16:47:54 +0000 (19:47 +0300)]
imap, pop3: Prevent reading ssl_ca setting into memory
Especially with imap there can be a lot of processes and a large ssl_ca
could be wasting a lot of memory. This was already the old behavior before
removing ssl_* settings from lib-storage.
Timo Sirainen [Tue, 3 Aug 2021 16:46:59 +0000 (19:46 +0300)]
config: Add exclude=<name> settings to drop specific settings
Timo Sirainen [Thu, 29 Jul 2021 15:04:53 +0000 (18:04 +0300)]
lib-storage: Remove SSL settings from mail_storage_settings
They can be accessed via master_service_ssl_settings instead.
Timo Sirainen [Thu, 29 Jul 2021 15:02:57 +0000 (18:02 +0300)]
lib-storage: mail_user_init_ssl_client_settings() - Use master_service_ssl_settings
This will allow dropping the duplicate SSL settings handling.
Timo Sirainen [Thu, 29 Jul 2021 14:45:16 +0000 (17:45 +0300)]
dsync: Get SSL settings via master_service_ssl_settings
Timo Sirainen [Thu, 29 Jul 2021 14:44:43 +0000 (17:44 +0300)]
lib-storage: Add mail_storage_service_user_get_ssl_settings()
Timo Sirainen [Thu, 29 Jul 2021 14:44:25 +0000 (17:44 +0300)]
lib-master: Add master_service_ssl_settings_get_from_parser()
Timo Sirainen [Thu, 29 Jul 2021 14:57:42 +0000 (17:57 +0300)]
global: Don't zero SSL settings unnecessarily
mail_user_init_ssl_client_settings() and mail_user_init_fs_settings()
will clear them again anyway.
Timo Sirainen [Thu, 29 Jul 2021 14:58:23 +0000 (17:58 +0300)]
lib-storage: mail_user_init_fs_settings() - Clarify that ssl settings are fully initialized
Timo Sirainen [Thu, 29 Jul 2021 14:57:12 +0000 (17:57 +0300)]
lib-storage: mail_user_init_ssl_client_settings() - Clarify that ssl settings are fully initialized
Timo Sirainen [Thu, 29 Jul 2021 12:31:56 +0000 (15:31 +0300)]
doveadm: Free SSL iostream contexts at deinit
This wasn't really a memory leak, because the contexts are always kept
allocated until deinit anyway.
Timo Sirainen [Thu, 29 Jul 2021 13:06:50 +0000 (16:06 +0300)]
lib-ssl-iostream: ssl_iostream_context_unref(NULL) is a no-op
Timo Sirainen [Sat, 7 Aug 2021 16:52:09 +0000 (18:52 +0200)]
man: doveadm-pw - Fix default scheme to be CRYPT / $2y$ bcrypt
Timo Sirainen [Thu, 22 Jul 2021 12:31:11 +0000 (15:31 +0300)]
lib-index: Remove mail_index_transaction_get_highest_modseq()
This isn't actually used anywhere, so there's no need to keep it.
Timo Sirainen [Thu, 22 Jul 2021 12:28:39 +0000 (15:28 +0300)]
lib-index: mail_index_transaction_get_highest_modseq() - Fix handling MAIL_INDEX_MAIL_FLAG_UPDATE_MODSEQ
MAIL_INDEX_MAIL_FLAG_UPDATE_MODSEQ flag updates didn't calculate the
returned modseq correctly. This function wasn't used outside
--with-devel-checks though, but with it this fixes:
Panic: file mail-index-transaction.c: line 212 (mail_index_transaction_commit_real): assertion failed: (t->reset || expected_highest_modseq == log->head->sync_highest_modseq)
Timo Sirainen [Thu, 22 Jul 2021 11:24:11 +0000 (14:24 +0300)]
lib-index: Avoid modseq warnings --with-devel-checks
Avoids warnings:
Requested highest-modseq for transaction, but modseq tracking isn't enabled for the file (this shouldn't happen)
Timo Sirainen [Thu, 22 Jul 2021 11:29:24 +0000 (14:29 +0300)]
director: Avoid calling timeval_diff_msecs() with too great time difference
Fixes assert-crash --with-devel-checks:
Panic: file time-util.c: line 76 (timeval_diff_msecs): assertion failed: (diff <= INT_MAX)
Aki Tuomi [Wed, 14 Jul 2021 07:00:28 +0000 (10:00 +0300)]
lib: data-stack - Initialize alloc_count / alloc_bytes
This has only effect with devel checks enabled. Fixes counter
values to show sensible data.
Aki Tuomi [Tue, 13 Jul 2021 10:41:14 +0000 (13:41 +0300)]
lib: data-stack - Allow errno changes when sending event
Timo Sirainen [Thu, 29 Jul 2021 19:21:52 +0000 (22:21 +0300)]
lib-master, global: Remove unnecessary MASTER_SERVICE_FLAG_USE_SSL_SETTINGS
SSL client settings are now always read.
Timo Sirainen [Thu, 29 Jul 2021 19:20:17 +0000 (22:20 +0300)]
lib-master: Use ssl-server settings only when necessary
Timo Sirainen [Thu, 29 Jul 2021 19:18:56 +0000 (22:18 +0300)]
lib-master: Remove unused master_service_is_ssl_module_loaded()
Timo Sirainen [Thu, 29 Jul 2021 18:45:18 +0000 (21:45 +0300)]
lib-master, login-common: Split off master_service_ssl_server_settings
Timo Sirainen [Thu, 29 Jul 2021 18:43:03 +0000 (21:43 +0300)]
lib-master, global: Split master_service_ssl_settings_to_iostream_set() to client/server functions
Timo Sirainen [Thu, 5 Aug 2021 14:48:42 +0000 (17:48 +0300)]
master: Avoid creating prefork timeout if process_limit is already reached
Timo Sirainen [Thu, 5 Aug 2021 14:53:58 +0000 (17:53 +0300)]
master: Avoid high CPU usage when process_min_avail reaches process_limit
process_min_avail handling always created a 0ms timeout to try to create the
missing processes. This timeout was supposed to stop when it couldn't launch
all the wanted processes, but the check wasn't done right. This ended up
causing the timeout to be called rapidly over and over again.
Michael M Slusarz [Thu, 22 Jul 2021 20:51:05 +0000 (14:51 -0600)]
lazy_expunge: Add lazy_expunge_exclude setting
This allows mailboxes to be excluded via configuration.
Timo Sirainen [Tue, 3 Aug 2021 14:38:33 +0000 (17:38 +0300)]
fts: Use mailbox-match-plugin API for fts_autoindex_exclude
This doesn't change the functionality, just deduplicates the code.
Timo Sirainen [Wed, 4 Aug 2021 12:50:54 +0000 (15:50 +0300)]
fts: Always initialize struct fts_user
Initializing lib-fts is still optional within it.
Michael M Slusarz [Thu, 22 Jul 2021 20:20:25 +0000 (14:20 -0600)]
lib-storage: Add mailbox exclusion plugin API
Allows mailbox exclusion configuration to be easily added to any
plugin.
Timo Sirainen [Wed, 4 Aug 2021 16:57:35 +0000 (19:57 +0300)]
master: Fix unfinished "time moved backwards" comment
Timo Sirainen [Wed, 4 Aug 2021 16:54:29 +0000 (19:54 +0300)]
master: Log a warning also about "time moved forwards"
This isn't really important to know, but it could help figure out
performance problems if it happens a lot.
Timo Sirainen [Wed, 4 Aug 2021 16:52:14 +0000 (19:52 +0300)]
lib: ioloop - Handle "time moved forwards" only after 100ms difference
Previously this was done after even a single microsecond difference,
causing it to happen almost constantly. This was causing performance
problems when there were many timeouts that had to be updated. Especially
master process could have been spending a lot of time unnecessarily here.
Broken by
b258137d0e0618ae792e3606071a1715d26f107b
Timo Sirainen [Wed, 4 Aug 2021 16:55:36 +0000 (19:55 +0300)]
lib: ioloop - Fix 0 timeout with kqueue() and select()
With these it was waiting for 1 ms instead of 0.
Broken by
fac27f192d8432c45d360025613f7d432271c5bb
Timo Sirainen [Wed, 4 Aug 2021 14:24:00 +0000 (17:24 +0300)]
fts: Fix internal error when fts_index_timeout is set
Broken by
cf114f90e0ba25c18db846ee582e3a130bd52949
Timo Sirainen [Tue, 3 Aug 2021 13:11:35 +0000 (16:11 +0300)]
acl: Cast enums explicitly to int in sorting function
Fixes ubsan complaint:
runtime error: unsigned integer overflow: 0 - 4 cannot be represented in type 'unsigned int'
Stephan Bosch [Tue, 29 Jun 2021 20:45:33 +0000 (22:45 +0200)]
lib-program-client: program-client-remote - Fix signed integer arithmetic.
Make type cast explicit to gain ubsan approval. Also prevent negative
reserve_mod from having unexpected effect.
Martti Rannanjärvi [Tue, 3 Aug 2021 08:44:06 +0000 (11:44 +0300)]
util: dovecot-sysreport - Fix help to have -o as the short form of --core
Martti Rannanjärvi [Tue, 3 Aug 2021 07:56:08 +0000 (10:56 +0300)]
util: dovecot-sysreport - Use only spaces for indentation
Stop mixing tabs and spaces.
Timo Sirainen [Tue, 27 Jul 2021 17:13:24 +0000 (20:13 +0300)]
stats: Revert the previous OpenMetrics info type revert
The OpenMetrics standard does support "info" type. The original Prometheus
format doesn't support it, but our support is for OpenMetrics. They don't
even have any overlapping types that could be used for this, so the only
other possibility would have been to make this configurable.
Reverts
55a519d18fbbb8435854f1fcf2642b908d6fc074
Timo Sirainen [Wed, 28 Jul 2021 13:39:59 +0000 (16:39 +0300)]
submission-login: Fix compiling error with some older compilers
Stephan Bosch [Sun, 4 Jul 2021 22:37:46 +0000 (00:37 +0200)]
submission-login: submission-proxy - Optionally send XCLIENT LOGIN to backend and skip authentication.
This behavior is enabled by returning proxy_noauth from passdb.
Stephan Bosch [Sun, 18 Jul 2021 22:29:23 +0000 (00:29 +0200)]
login-common: Add proxy field proxy_noauth.
Stephan Bosch [Sun, 18 Jul 2021 22:24:32 +0000 (00:24 +0200)]
submission-login: submission-proxy - Move submission_proxy_success_reply_sent().
Timo Sirainen [Tue, 18 May 2021 17:18:45 +0000 (20:18 +0300)]
dict: Use the dict name as the log prefix
Otherwise if there are multiple dicts it may not be obvious which one is
causing the errors.
Aki Tuomi [Thu, 22 Jul 2021 08:26:10 +0000 (11:26 +0300)]
stats: Revert dovecot build information to untyped data
OpenMetrics does not know type 'info', so use 'untyped' instead.
Broken in
ae678116a79fff609cdf4fb1eb7eb3db2975bf1c
Timo Sirainen [Wed, 21 Jul 2021 15:12:36 +0000 (18:12 +0300)]
lib-storage: mail_cache_*_fields - Check for invalid header names while parsing config
This way the errors are noticed early on.
Timo Sirainen [Tue, 14 Apr 2020 09:24:50 +0000 (12:24 +0300)]
lib-storage: mail_cache_*_fields - Log an error if hdr.<name> isn't valid
Mainly verify that it doesn't have accidental UTF-8 characters that aren't
easily visible in text editors.
Timo Sirainen [Sun, 19 Apr 2020 11:03:24 +0000 (14:03 +0300)]
lib-mail: Add message_header_name_is_valid()
Timo Sirainen [Thu, 22 Jul 2021 13:38:22 +0000 (16:38 +0300)]
login-proxy: Make sure input line isn't freed too early
proxy_parse_line() could free the proxy's istream, which frees the line
string. With IMAP the line could have been used as part of the error string
passed to login_proxy_failed(), which can free the istream before using
the string for logging purposes. This could have resulted in logging a
corrupted line or a crash.
Broken by
e3134289529cec16ade44cefd0fd26594ae40e30
Timo Sirainen [Fri, 23 Jul 2021 12:45:03 +0000 (14:45 +0200)]
lib-test: Make sure child processes exit cleanly with SIGTERM
It's normal behavior that the parent process kills the child process with
SIGTERM. This shouldn't result in the child process dying with SIGTERM, but
a clean exit. This was causing http-test-client-errors unit tests to fail
somewhat randomly, especially when running them only with 1 CPU.
Aki Tuomi [Wed, 21 Jul 2021 11:06:55 +0000 (14:06 +0300)]
lib-test: Ensure we send signals to regular PIDs only
Aki Tuomi [Wed, 21 Jul 2021 11:05:34 +0000 (14:05 +0300)]
lib-test: Update subprocess list after forking
Due to a race condition, we could end up killing PID 0 by accident
sometimes.
Timo Sirainen [Thu, 22 Jul 2021 08:23:00 +0000 (11:23 +0300)]
lib: random_fill() - Optimize away memmove()
We just need to track the position of how far the random_next buffer has
been used.
Stephan Bosch [Sun, 4 Jul 2021 22:36:36 +0000 (00:36 +0200)]
submission-login: submission-proxy - Send XCLIENT data in multiple commands if line exceeds 512 bytes.
When the proxy talks to non-Dovecot software, failures could occur otherwise. Particularly Postfix will fail.
Stephan Bosch [Fri, 18 Jun 2021 22:31:19 +0000 (00:31 +0200)]
submission-login: submission-proxy - Send PROTO and HELO XCLIENT fields.
Stephan Bosch [Fri, 18 Jun 2021 17:32:03 +0000 (19:32 +0200)]
submission-login: submission-proxy - Properly send EHLO after XCLIENT.
Stephan Bosch [Mon, 5 Jul 2021 21:33:51 +0000 (23:33 +0200)]
submission-login: submission-proxy - Reorder XCLIENT fields to match lib-smtp client.
Stephan Bosch [Fri, 18 Jun 2021 22:25:02 +0000 (00:25 +0200)]
submission-login: submission-proxy - Handle EHLO reply in a separate function.
Stephan Bosch [Fri, 18 Jun 2021 21:58:38 +0000 (23:58 +0200)]
submission-login: submission-proxy - Move sending STARTTLS to separate function.
Stephan Bosch [Fri, 18 Jun 2021 17:52:33 +0000 (19:52 +0200)]
submission-login: submission-proxy - Avoid sending empty XCLIENT FORWARD field.
Stephan Bosch [Fri, 18 Jun 2021 17:31:54 +0000 (19:31 +0200)]
submission: Separately pass XCLIENT HELO value from pre-login to post-login service.
Stephan Bosch [Fri, 18 Jun 2021 15:02:23 +0000 (17:02 +0200)]
submission: submission-backend-relay - Use smtp_server_connection_get_proxy_data() for composing client settings.
Stephan Bosch [Fri, 18 Jun 2021 15:46:07 +0000 (17:46 +0200)]
submission: main - Restructure parsing of login input data.
Needed for adding additional fields.
Stephan Bosch [Fri, 18 Jun 2021 14:43:55 +0000 (16:43 +0200)]
submission-login: client-authenticate - Restructure composition of master_prefix.
Needed for later commit.
Stephan Bosch [Fri, 18 Jun 2021 17:27:40 +0000 (19:27 +0200)]
lib-smtp: smtp-server-connection - Record proxied EHLO domain separately.
This prevents it from being overriden by a local EHLO command.
Stephan Bosch [Fri, 18 Jun 2021 17:02:34 +0000 (19:02 +0200)]
lib-smtp: smtp-server - Make smtp_server_connection_set_proxy_data() public.
Stephan Bosch [Fri, 18 Jun 2021 14:54:51 +0000 (16:54 +0200)]
lib-smtp: smtp-server-connection - Use smtp_server_connection_get_proxy_data() for the conn_proxy_data_updated() callback.
Removes code duplication.
Stephan Bosch [Fri, 18 Jun 2021 14:52:26 +0000 (16:52 +0200)]
lib-smtp: smtp-server-connection - Allow username/ehlo to be set before smtp_server_connection_login().
This allows setting the proxy data early.
Stephan Bosch [Fri, 18 Jun 2021 17:25:43 +0000 (19:25 +0200)]
lib-smtp: Reformat smtp-server.h.
Stephan Bosch [Fri, 18 Jun 2021 14:31:08 +0000 (16:31 +0200)]
submission: Reformat submission-client.h.
Stephan Bosch [Fri, 18 Jun 2021 14:30:52 +0000 (16:30 +0200)]
submission: Reformat submission-client.c.
Stephan Bosch [Wed, 23 Jun 2021 22:19:16 +0000 (00:19 +0200)]
login-common: Add support for recording rawlog of connection between proxy and backend.
Timo Sirainen [Wed, 21 Jul 2021 14:14:26 +0000 (17:14 +0300)]
doveadm: Mark fs_cmd_help() with ATTR_NORETURN
This helps static analyzers understand that the function doesn't return.
Timo Sirainen [Wed, 21 Jul 2021 14:12:05 +0000 (17:12 +0300)]
doveadm: Avoid passing NULL to memcpy() even though zero bytes are copied
Makes static analyzers happier.
Timo Sirainen [Mon, 19 Jul 2021 13:38:08 +0000 (16:38 +0300)]
doveadm: Remove dead assignment
Timo Sirainen [Thu, 22 Apr 2021 08:09:49 +0000 (11:09 +0300)]
lib: Use 32 byte buffer for getting randomness
This reduces the number of syscalls when small amount of randomness is
requested, like i_rand*() calls using only 4 bytes at a time.
Timo Sirainen [Thu, 10 Jun 2021 09:16:20 +0000 (12:16 +0300)]
doveadm: Remove code related to obsolete doveadm_mail_cmd handling
struct doveadm_mail_cmd couldn't be completely removed since v2 mail
commands are still converted to it.
Timo Sirainen [Thu, 10 Jun 2021 09:06:40 +0000 (12:06 +0300)]
doveadm sync/backup/dsync-server: Convert to v2 command
Timo Sirainen [Thu, 10 Jun 2021 08:51:51 +0000 (11:51 +0300)]
doveadm batch: Convert to v2 command
Timo Sirainen [Wed, 9 Jun 2021 22:14:14 +0000 (01:14 +0300)]
doveadm: Remove struct doveadm_cmd and related code
Timo Sirainen [Wed, 9 Jun 2021 22:09:34 +0000 (01:09 +0300)]
doveadm: Remove doveadm_cmd_ver2.old_cmd
Timo Sirainen [Wed, 9 Jun 2021 22:08:16 +0000 (01:08 +0300)]
doveadm proxy: Convert to v2 commands
Timo Sirainen [Wed, 9 Jun 2021 22:03:46 +0000 (01:03 +0300)]
doveadm oldstats: Convert to v2 commands
Timo Sirainen [Wed, 9 Jun 2021 21:59:53 +0000 (00:59 +0300)]
doveadm stop/reload: Convert to v2 commands
Timo Sirainen [Wed, 9 Jun 2021 21:58:45 +0000 (00:58 +0300)]
doveadm fs: Convert to v2 commands
Timo Sirainen [Wed, 9 Jun 2021 21:45:43 +0000 (00:45 +0300)]
doveadm auth cache flush: Convert auth-server command to v2
Timo Sirainen [Wed, 9 Jun 2021 21:42:38 +0000 (00:42 +0300)]
doveadm auth: Convert to v2 commands
Timo Sirainen [Wed, 9 Jun 2021 21:18:17 +0000 (00:18 +0300)]
doveadm instance: Convert to v2 commands
Timo Sirainen [Wed, 9 Jun 2021 21:05:28 +0000 (00:05 +0300)]
doveadm log: Convert to v2 commands
Timo Sirainen [Wed, 9 Jun 2021 21:01:00 +0000 (00:01 +0300)]
doveadm replicator: Convert to v2 commands
Timo Sirainen [Wed, 9 Jun 2021 20:48:10 +0000 (23:48 +0300)]
doveadm config: Convert to v2 command
Timo Sirainen [Wed, 9 Jun 2021 20:45:51 +0000 (23:45 +0300)]
doveadm exec: Convert to v2 command
Timo Sirainen [Thu, 10 Jun 2021 11:23:46 +0000 (14:23 +0300)]
doveadm: Add CMD_FLAG_NO_UNORDERED_OPTIONS
Timo Sirainen [Wed, 9 Jun 2021 20:44:29 +0000 (23:44 +0300)]
doveadm: Add CMD_FLAG_NO_OPTIONS
This allows command to process all parameters, including parameters starting
with "-".
Timo Sirainen [Wed, 9 Jun 2021 20:39:54 +0000 (23:39 +0300)]
doveadm: Split off doveadm_cmd_process_options()