]>
git.ipfire.org Git - thirdparty/dovecot/core.git/log
Marco Bettini [Mon, 7 Feb 2022 15:04:41 +0000 (16:04 +0100)]
indexer: Fix memory leak on indexer timeout
Marco Bettini [Wed, 9 Feb 2022 13:20:47 +0000 (14:20 +0100)]
doveadm: doveadm_who_iter_init() - Fix for handle leak on the fail path
Timo Sirainen [Wed, 2 Feb 2022 13:31:39 +0000 (15:31 +0200)]
man: Update kick/who/proxy man pages
Timo Sirainen [Tue, 1 Feb 2022 15:42:02 +0000 (16:42 +0100)]
config: Log a warning if service ipc is used in config
Timo Sirainen [Tue, 1 Feb 2022 15:39:57 +0000 (16:39 +0100)]
lib-master, global: anvil_client_query() - Add type safety to callback's context
Timo Sirainen [Fri, 21 Jan 2022 09:27:47 +0000 (10:27 +0100)]
global: Write pid_t as unsigned number where it might end up used with kill()
pid_t is signed, so usually it's been written to strings as signed long.
The actual pid values should never be negative, so practically it shouldn't
matter if it's written as signed or unsigned. However, due to bugs it's
theoretically possible that some garbage value gets written out.
kill() handles negative PIDs by killing entire process groups. By writing
pid_t as unsigned number we can prevent any (theoretical) issues where
kill() ends up killing entire process groups.
Change only some of the places to unsigned where the value might end up
used for kill(). Usually the signed writing is used only for log messages
where it might be more useful to see the negative numbers clearly
(especially -1 as unknown/unset might be used somewhere).
Timo Sirainen [Tue, 18 Jan 2022 14:34:25 +0000 (15:34 +0100)]
anvil: Add command, user-kick and user-list counts to ps title
This may be useful in debugging any potential performance issues with the
anvil process.
Timo Sirainen [Mon, 17 Jan 2022 14:29:41 +0000 (15:29 +0100)]
lib-master, global: anvil_client_query() - Add timeout parameter
The default kick command timeout should be larger than the lookup timeout.
Timo Sirainen [Mon, 17 Jan 2022 14:23:47 +0000 (15:23 +0100)]
lib-master: anvil-client - Change timeout to be query-specific
Timo Sirainen [Thu, 13 Jan 2022 14:54:18 +0000 (16:54 +0200)]
imap: Add client.unhibernated boolean
Timo Sirainen [Sun, 10 Oct 2021 00:23:13 +0000 (03:23 +0300)]
lib-master, ipc: Remove all code related to ipc process
Timo Sirainen [Tue, 11 Jan 2022 09:40:27 +0000 (11:40 +0200)]
login-common: Optimize kicking proxy connections by username
Track proxy connections by username in a hash table. Kicking only needs to
do a hash lookup from there to find the user's all sessions. Only detached
proxies are tracked this way. It's likely not worth the trouble to track
non-detached pending proxies in this way, since normally there shouldn't be
many of them.
Timo Sirainen [Sun, 10 Oct 2021 00:24:54 +0000 (03:24 +0300)]
login-common: Remove support for ipc process commands
These commands are now accessible via anvil / admin-client.
Timo Sirainen [Sun, 10 Oct 2021 22:44:02 +0000 (01:44 +0300)]
director: Kick users via anvil
Timo Sirainen [Tue, 4 Jan 2022 16:03:41 +0000 (18:03 +0200)]
director: Add user_director_hash field to passdb lookup replies
This can be used as alt-username to kick users by the hash.
Timo Sirainen [Sun, 10 Oct 2021 00:21:10 +0000 (03:21 +0300)]
doveadm: Change "proxy list/kick" to be aliases to "who/kick" commands
Timo Sirainen [Tue, 18 Jan 2022 12:36:45 +0000 (13:36 +0100)]
doveadm who: Rename "proto" field to "service"
That's what it now actually contains.
Timo Sirainen [Mon, 17 Jan 2022 11:18:00 +0000 (12:18 +0100)]
doveadm kick: Add -h <dest-host> parameter
Timo Sirainen [Wed, 12 Jan 2022 15:40:37 +0000 (17:40 +0200)]
doveadm who/kick: Handle number parameter as a username rather than IP address
Timo Sirainen [Wed, 12 Jan 2022 15:37:30 +0000 (17:37 +0200)]
doveadm kick: Print usage on bad parameters
Timo Sirainen [Thu, 13 Jan 2022 16:52:22 +0000 (18:52 +0200)]
doveadm kick: Change output format to only print number of connections kicked
Having the list of usernames kicked is a bit excessive and it also hides
how many connections were kicked.
The output also wasn't correct when kicking based on alt-username, because
it only printed the alt-username rather than the real usernames.
Timo Sirainen [Tue, 11 Jan 2022 12:25:18 +0000 (14:25 +0200)]
doveadm kick: Avoid listing all connections for simple kick filters
Timo Sirainen [Tue, 11 Jan 2022 12:17:46 +0000 (14:17 +0200)]
doveadm who/kick: Add support for -f <passdb-field> parameter
This is similar to what "doveadm proxy kick" has, i.e. list/kick users
based on their alternative usernames (user_* passdb fields).
Timo Sirainen [Tue, 11 Jan 2022 10:25:18 +0000 (12:25 +0200)]
doveadm kick: Rewrite to use anvil KICK-USER command
Removed the "force" parameter, because it's no longer necessary.
Timo Sirainen [Tue, 25 Jan 2022 12:49:15 +0000 (13:49 +0100)]
imap-hibernate: Change anvil service from imap to imap-hibernate
This is better now that anvil can internally separate the service from
protocol.
Timo Sirainen [Tue, 18 Jan 2022 12:42:51 +0000 (13:42 +0100)]
anvil: Track service and protocol separately
This way anvil can track e.g. "imap" and "imap-hibernate" services
separately, but still count them in the same "imap" protocol towards
mail_max_userip_connections.
Timo Sirainen [Tue, 11 Jan 2022 10:11:31 +0000 (12:11 +0200)]
anvil: Add optional conn-guid parameter to KICK-USER command
Timo Sirainen [Wed, 8 Dec 2021 00:35:37 +0000 (02:35 +0200)]
anvil: Implement KICK-USER and KICK-ALT-USER commands
Timo Sirainen [Wed, 8 Dec 2021 00:05:46 +0000 (02:05 +0200)]
anvil: Change to run the process as root and without chroot
The KICK-USER command needs to be able to connect to other processes' admin
sockets and to send signals to other processes.
Timo Sirainen [Mon, 3 Jan 2022 17:38:54 +0000 (19:38 +0200)]
anvil: Add admin_cmd_send()
This can use either incoming or outgoing connections for sending the
command.
Timo Sirainen [Mon, 27 Dec 2021 15:03:37 +0000 (17:03 +0200)]
anvil: Add admin-client API with connection pooling
Timo Sirainen [Mon, 3 Jan 2022 16:43:04 +0000 (18:43 +0200)]
anvil: Add support for sending commands to anvil client connections
Timo Sirainen [Mon, 27 Dec 2021 15:42:27 +0000 (17:42 +0200)]
anvil: Add anvil_connection_find()
Timo Sirainen [Wed, 5 Jan 2022 22:17:42 +0000 (00:17 +0200)]
login-common: Implement KICK-USER incoming anvil command
Timo Sirainen [Tue, 4 Jan 2022 16:28:22 +0000 (18:28 +0200)]
lib-master: anvil-client - Add support for handling incoming commands
Timo Sirainen [Thu, 13 Jan 2022 15:17:28 +0000 (17:17 +0200)]
lib-master, login-common: anvil_client_init() - Change callback to struct of callbacks
Timo Sirainen [Wed, 5 Jan 2022 21:36:45 +0000 (23:36 +0200)]
anvil: Change VERSION line to be bidirectional and add -client/server suffix
This makes it more similar to other internal protocols, and allows using
connection API more easily.
Timo Sirainen [Wed, 5 Jan 2022 22:00:21 +0000 (00:00 +0200)]
lib-master: anvil-client - Convert to connection API
Timo Sirainen [Wed, 5 Jan 2022 21:58:52 +0000 (23:58 +0200)]
lib-master: anvil-client - Delay ostream error handling
There's no need to handle write errors immediately. It just makes the code
more complex.
Timo Sirainen [Wed, 5 Jan 2022 21:12:56 +0000 (23:12 +0200)]
lib-master: anvil-client - Use struct connection
Timo Sirainen [Wed, 22 Dec 2021 21:20:57 +0000 (23:20 +0200)]
anvil: Add handshake with service name and PID for non-FIFO connections
This is in preparation for assuming that incoming anvil connections can also
be used to send admin commands for processes. Instead of connecting to the
process's admin UNIX socket, anvil can instead use the existing connection.
The PID is used to identify which admin connections are available.
When the handshake is used, multiplex iostream is enabled.
Timo Sirainen [Wed, 22 Dec 2021 21:09:25 +0000 (23:09 +0200)]
anvil: Convert to using connection API
Anvil connections can optionally be FIFOs. This causes some difficulties
with the connection API, so everything couldn't be fully converted.
Timo Sirainen [Wed, 22 Dec 2021 10:40:58 +0000 (12:40 +0200)]
anvil: Use struct connection for the anvil client
Timo Sirainen [Thu, 16 Dec 2021 02:50:09 +0000 (04:50 +0200)]
anvil, doveadm: Add alt usernames to CONNECT-DUMP output
Timo Sirainen [Tue, 1 Feb 2022 15:22:47 +0000 (16:22 +0100)]
doveadm who: Improve error handling
Avoid i_fatal(), but still fail with non-zero exit code.
Timo Sirainen [Thu, 16 Dec 2021 02:48:40 +0000 (04:48 +0200)]
doveadm: Replace who_lookup() with iterator API
Timo Sirainen [Mon, 17 Jan 2022 11:08:29 +0000 (12:08 +0100)]
login-common: Send proxy session destination IP to anvil
Timo Sirainen [Mon, 17 Jan 2022 11:06:50 +0000 (12:06 +0100)]
lib-master: master_service_anvil_connect() - Add support for proxy session destination IP
Timo Sirainen [Tue, 18 Jan 2022 14:10:00 +0000 (15:10 +0100)]
anvil: Don't track proxy connections in userip_hash
Otherwise proxy connections would also be counted towards tracking
mail_max_userip_connections, which could cause the same session to be
counted multiple times.
Timo Sirainen [Mon, 17 Jan 2022 10:59:30 +0000 (11:59 +0100)]
anvil, doveadm: Add support for tracking proxy session destination IP
Timo Sirainen [Wed, 12 Jan 2022 15:34:51 +0000 (17:34 +0200)]
login-common: Send alt usernames to anvil
Timo Sirainen [Wed, 12 Jan 2022 15:25:23 +0000 (17:25 +0200)]
lib-master: master_service_anvil_connect() - Add support for alt usernames
Timo Sirainen [Wed, 15 Dec 2021 23:58:35 +0000 (01:58 +0200)]
anvil: Add support for tracking alternative usernames
Timo Sirainen [Wed, 15 Dec 2021 11:41:32 +0000 (13:41 +0200)]
lib-master, global: Send kick-type for anvil CONNECT
Timo Sirainen [Wed, 15 Dec 2021 23:51:24 +0000 (01:51 +0200)]
anvil: Add test-connect-limit
Timo Sirainen [Mon, 17 Jan 2022 22:25:09 +0000 (23:25 +0100)]
anvil: Add kick-type parameter for CONNECT
This indicates how the process supports kicking users.
Timo Sirainen [Thu, 13 Jan 2022 14:42:31 +0000 (16:42 +0200)]
anvil: Split off session_[un]link_process()
Timo Sirainen [Mon, 17 Jan 2022 22:31:40 +0000 (23:31 +0100)]
lib-master, anvil: [DIS]CONNECT - Move conn-guid to being the first parameter
It uniquely identifies the connection, so it's clearer that it's the first
parameter.
Timo Sirainen [Wed, 15 Dec 2021 22:46:58 +0000 (00:46 +0200)]
anvil, doveadm: Require conn-guid to be set for CONNECT
This removes the need for refcount tracking.
Timo Sirainen [Mon, 7 Feb 2022 10:41:02 +0000 (11:41 +0100)]
anvil: connect-limit - Add API for iterating user's all connections
Timo Sirainen [Wed, 15 Dec 2021 13:39:23 +0000 (15:39 +0200)]
anvil: connect-limit - Keep track of all sessions per user
Timo Sirainen [Wed, 8 Dec 2021 00:25:39 +0000 (02:25 +0200)]
anvil: connect-limit - Keep track of all sessions per process
Timo Sirainen [Wed, 19 Jan 2022 23:09:58 +0000 (00:09 +0100)]
submission: Change kick log message to "Server shutting down"
This way it's the same as with imap and pop3.
Timo Sirainen [Thu, 13 Jan 2022 16:09:51 +0000 (18:09 +0200)]
submission: Add admin-client with KICK-USER command
Timo Sirainen [Thu, 13 Jan 2022 16:07:02 +0000 (18:07 +0200)]
pop3: Add admin-client with KICK-USER command
Timo Sirainen [Thu, 13 Jan 2022 16:03:00 +0000 (18:03 +0200)]
imap: Add admin-client with KICK-USER command
Timo Sirainen [Sat, 9 Oct 2021 21:03:20 +0000 (00:03 +0300)]
login-common: Add admin-client with KICK-USER command
Timo Sirainen [Thu, 6 Jan 2022 11:34:09 +0000 (13:34 +0200)]
login-common: Add login_proxy_kick_user_connection()
Timo Sirainen [Sat, 9 Oct 2021 21:22:03 +0000 (00:22 +0300)]
login-common: Split off more generic login_proxy_kick_user/alt/host()
Move the IPC-specific command input/output handling to the caller, so
these functions just do the main work of kicking.
Timo Sirainen [Wed, 8 Dec 2021 00:03:45 +0000 (02:03 +0200)]
login-common: Track proxied connections in anvil
Timo Sirainen [Sun, 12 Dec 2021 23:26:21 +0000 (01:26 +0200)]
global: Send connection GUIDs to anvil
Timo Sirainen [Sun, 12 Dec 2021 23:22:31 +0000 (01:22 +0200)]
anvil, doveadm: Add support for connection GUIDs
These are anvil-specific GUIDs that can be used to refer to a specific
connection.
Timo Sirainen [Sun, 12 Dec 2021 23:17:13 +0000 (01:17 +0200)]
anvil, doveadm: Simplify CONNECT-DUMP output format
Timo Sirainen [Sun, 12 Dec 2021 22:58:24 +0000 (00:58 +0200)]
anvil, global: Split CONNECT/DISCONNECT/LOOKUP ident to separate parameters
Timo Sirainen [Sun, 12 Dec 2021 23:11:56 +0000 (01:11 +0200)]
global: Increase anvil protocol major version number
The following changes break the backwards compatibility.
Timo Sirainen [Sun, 12 Dec 2021 22:56:12 +0000 (00:56 +0200)]
lib-master, global: Replace master_service_anvil_send() with explicit connect/disconnect()
Timo Sirainen [Sun, 12 Dec 2021 22:52:49 +0000 (00:52 +0200)]
global: Assume anvil command was success only if master_service_anvil_send() returns TRUE
Timo Sirainen [Sun, 12 Dec 2021 22:52:34 +0000 (00:52 +0200)]
lib-master: master_service_anvil_send() - Return TRUE if command was actually sent
Timo Sirainen [Wed, 15 Dec 2021 13:15:34 +0000 (15:15 +0200)]
anvil: Store service strings in a reference counted table
There are only a few different services, so there's no need to duplicate the
memory usage for each of the string instances.
Timo Sirainen [Wed, 15 Dec 2021 12:57:31 +0000 (14:57 +0200)]
anvil: Initialize session_lookup struct directly
Timo Sirainen [Wed, 15 Dec 2021 12:55:40 +0000 (14:55 +0200)]
anvil: Rename "i" variables to "session"
Timo Sirainen [Wed, 15 Dec 2021 12:54:18 +0000 (14:54 +0200)]
anvil: Rename struct ident_pid to struct session
Timo Sirainen [Sun, 12 Dec 2021 17:36:37 +0000 (19:36 +0200)]
anvil: Change connect-limit API to use struct rather than ident string
Timo Sirainen [Mon, 3 Jan 2022 17:27:51 +0000 (19:27 +0200)]
anvil: Split off main_init() and main_deinit()
Timo Sirainen [Thu, 13 Jan 2022 16:03:32 +0000 (18:03 +0200)]
imap: Avoid sending untagged BYE in the middle of command output
This could have caused the untagged BYE to be sent in the middle of e.g.
FETCH command output if the session was kicked out.
Timo Sirainen [Thu, 13 Jan 2022 15:32:09 +0000 (17:32 +0200)]
lib-master: Add admin-client API
The admin-clients are automatically created for %{pid} socket listeners.
They are not reported to master process as being actual connections to
the process, or counted towards service_count.
Timo Sirainen [Sat, 9 Oct 2021 23:04:33 +0000 (02:04 +0300)]
imap/pop3/submission-login: Add srv.<name>/%{pid}-admin unix socket listener
This can be used by admin clients.
Timo Sirainen [Sat, 9 Oct 2021 22:56:21 +0000 (01:56 +0300)]
master: Automatically mkdir listener subdirectories
The directory permissions are based on the unix/fifo_listeners that are
created under the directory.
Timo Sirainen [Tue, 25 Jan 2022 10:18:30 +0000 (11:18 +0100)]
master: Split off service_is_enabled()
Timo Sirainen [Sat, 14 Nov 2020 18:30:39 +0000 (20:30 +0200)]
master: Support %{pid} in unix_listener paths
This allows each process to have their own private UNIX socket listener.
Timo Sirainen [Sat, 14 Nov 2020 18:20:29 +0000 (20:20 +0200)]
master: service_unix_listener_listen() - Add path parameter
Timo Sirainen [Sat, 14 Nov 2020 17:56:06 +0000 (19:56 +0200)]
master: service_unix_listener_listen() - Add verify_addrinuse parameter
Timo Sirainen [Sat, 14 Nov 2020 17:54:46 +0000 (19:54 +0200)]
master: Make service_unix_listener_listen() public
Timo Sirainen [Sat, 14 Nov 2020 18:13:06 +0000 (20:13 +0200)]
master: Move error logging from service_*_listener_listen() to parent function
This is in preparation for the following changes. It would have been
enough actually to just do this for service_unix_listener_listen(), but
it's nicer this way for consistency.
Timo Sirainen [Wed, 5 Jan 2022 21:46:12 +0000 (23:46 +0200)]
lib: Add connection_client_connect_with_retries()
Timo Sirainen [Tue, 4 Jan 2022 16:39:24 +0000 (18:39 +0200)]
lib: Add connection_input_read_stream()
Timo Sirainen [Tue, 4 Jan 2022 16:39:09 +0000 (18:39 +0200)]
lib: Add i_stream_set_error()
Timo Sirainen [Sat, 14 Nov 2020 20:07:51 +0000 (22:07 +0200)]
lib-master: Remove unused master_auth_request()
Karl Fleischmann [Mon, 7 Feb 2022 08:20:34 +0000 (09:20 +0100)]
welcome: Supply noreply-parameter to program client creation
Use the appropriate noreply parameter when initializing the program
client to implement the behavior as it was configured.
Karl Fleischmann [Mon, 7 Feb 2022 08:19:04 +0000 (09:19 +0100)]
welcome: Use program_client_exit_status enum value
Replace the implicit int with the explicit program_client_exit_status
enum value when starting the script and handling the callback.