]> git.ipfire.org Git - thirdparty/dovecot/core.git/log
thirdparty/dovecot/core.git
9 months agolib-storage: Make struct mail_storage_service_user public
Timo Sirainen [Mon, 11 Nov 2024 13:23:07 +0000 (15:23 +0200)] 
lib-storage: Make struct mail_storage_service_user public

Mainly to allow plugin-specific module_contexts in the next commit.

9 months agoconfig: Add @metric_defaults = proxy/backend
Timo Sirainen [Wed, 9 Oct 2024 21:15:18 +0000 (00:15 +0300)] 
config: Add @metric_defaults = proxy/backend

9 months agoconfig: Don't run settings check functions inside @groups
Timo Sirainen [Thu, 19 Sep 2024 10:49:36 +0000 (13:49 +0300)] 
config: Don't run settings check functions inside @groups

The groups can be included from different places, so alone they don't have a
usable context for the checks.

9 months agoconfig: Allow specifying service settings inside @groups
Timo Sirainen [Thu, 19 Sep 2024 10:18:04 +0000 (13:18 +0300)] 
config: Allow specifying service settings inside @groups

9 months agodoveconf: Added -I parameter to dump config imported from plugins
Timo Sirainen [Wed, 9 Oct 2024 06:49:26 +0000 (09:49 +0300)] 
doveconf: Added -I parameter to dump config imported from plugins

9 months agoconfig: Support importing configuration from settings plugins
Timo Sirainen [Wed, 18 Sep 2024 12:58:20 +0000 (15:58 +0300)] 
config: Support importing configuration from settings plugins

Add to the settings plugin:

const char *<plugin name>_config_import = "..."

This is mainly intended to be used for adding default @groups.

9 months agolib-storage: Check that mail_server_admin is valid URI
Aki Tuomi [Tue, 5 Nov 2024 11:56:43 +0000 (13:56 +0200)] 
lib-storage: Check that mail_server_admin is valid URI

9 months agolib: test-uri - Fix sip tests
Aki Tuomi [Tue, 5 Nov 2024 12:01:11 +0000 (14:01 +0200)] 
lib: test-uri - Fix sip tests

In RFC 3261 the tag is clearly outside the URI.

9 months agolib: uri - Allow host after scheme with 'iax' scheme
Aki Tuomi [Tue, 5 Nov 2024 11:36:40 +0000 (13:36 +0200)] 
lib: uri - Allow host after scheme with 'iax' scheme

9 months agolib: uri - Allow parameters directly with semicolon
Aki Tuomi [Tue, 5 Nov 2024 11:19:49 +0000 (13:19 +0200)] 
lib: uri - Allow parameters directly with semicolon

Fixes AAA validation.

9 months agolib: test-uri - Add test for [IPv6] with http scheme
Aki Tuomi [Tue, 5 Nov 2024 11:23:03 +0000 (13:23 +0200)] 
lib: test-uri - Add test for [IPv6] with http scheme

9 months agolib: test-uri - Print error when RFC URI parsing fails
Aki Tuomi [Tue, 5 Nov 2024 11:27:46 +0000 (13:27 +0200)] 
lib: test-uri - Print error when RFC URI parsing fails

9 months agoconfig: Fail with error if trying to use settings inside groups which don't work
Timo Sirainen [Thu, 7 Nov 2024 11:55:30 +0000 (13:55 +0200)] 
config: Fail with error if trying to use settings inside groups which don't work

9 months agoconfig: doveconf - When asking for specific settings, show also defaults
Timo Sirainen [Wed, 6 Nov 2024 13:52:55 +0000 (15:52 +0200)] 
config: doveconf - When asking for specific settings, show also defaults

9 months agodoveconf: Expand include @groups when asking for specific settings
Timo Sirainen [Wed, 30 Oct 2024 20:45:45 +0000 (22:45 +0200)] 
doveconf: Expand include @groups when asking for specific settings

For example if you have:

group @example foo {
  namespace_separator = /
}

namespace inbox {
  @example = foo
}

Asking for "doveconf namespace/inbox/separator" will now output "/".

9 months agoconfig: Fail if trying to use unknown @group label or name
Timo Sirainen [Fri, 18 Oct 2024 07:17:04 +0000 (10:17 +0300)] 
config: Fail if trying to use unknown @group label or name

9 months agoconfig: Add config_filters_equal_no_recursion()
Timo Sirainen [Wed, 30 Oct 2024 20:45:32 +0000 (22:45 +0200)] 
config: Add config_filters_equal_no_recursion()

9 months agoconfig: Replace config_module_parsers_get_setting() with config_parsed_get_setting()
Timo Sirainen [Wed, 6 Nov 2024 13:44:28 +0000 (15:44 +0200)] 
config: Replace config_module_parsers_get_setting() with config_parsed_get_setting()

The new function looks up both explicitly changed settings and default
settings.

9 months agomaster, config: Add default_* service settings
Timo Sirainen [Mon, 4 Nov 2024 10:45:38 +0000 (12:45 +0200)] 
master, config: Add default_* service settings

Added default_process_limit, default_client_limit,
default_idle_kill_interval and default_vsz_limit settings. The global
service_* settings default to using these.

These settings are added into a new global "default settings" filter.
Other default settings are kept mixed with explicit settings, because
for them it doesn't matter that they are mixed, and it simplifies
settings value lookups.

9 months agoconfig: Initialize STRLIST and BOOLLIST arrays with defaults
Timo Sirainen [Wed, 6 Nov 2024 14:18:32 +0000 (16:18 +0200)] 
config: Initialize STRLIST and BOOLLIST arrays with defaults

This will be needed by the following changes. Otherwise doveconf output
shows only the elements in config file, not the built-in defaults.

9 months agoconfig: Remove config_parsed_get_module_parsers() wrapper
Timo Sirainen [Wed, 6 Nov 2024 13:04:01 +0000 (15:04 +0200)] 
config: Remove config_parsed_get_module_parsers() wrapper

9 months agoconfig: Remove config_export_get_*() wrapper functions
Timo Sirainen [Wed, 6 Nov 2024 12:16:26 +0000 (14:16 +0200)] 
config: Remove config_export_get_*() wrapper functions

Use config_module_parsers_get_setting() directly.

9 months agoconfig: Remove separate ordering for default service settings
Timo Sirainen [Mon, 4 Nov 2024 12:11:27 +0000 (14:11 +0200)] 
config: Remove separate ordering for default service settings

This changes e.g. a global "service_process_limit = N" to override it for
all services, unless they have an explicit service { process_limit = M }
in the config file.

This change simplifies the following changes and removes the special
handling of global service settings.

9 months agoconfig: config_get_value() - Fix crash if looking up setting that only has default...
Timo Sirainen [Mon, 4 Nov 2024 12:06:47 +0000 (14:06 +0200)] 
config: config_get_value() - Fix crash if looking up setting that only has default value

9 months agoconfig: Fix doveconf output when using $SET: and $ENV:
Timo Sirainen [Mon, 4 Nov 2024 10:44:27 +0000 (12:44 +0200)] 
config: Fix doveconf output when using $SET: and $ENV:

If they were used for non-string values, they were attempted to be
validated, which caused e.g. "Not a valid number" errors.

9 months agoconfig: Allow auto-creating new filters based on settings key paths
Timo Sirainen [Wed, 9 Oct 2024 07:39:59 +0000 (10:39 +0300)] 
config: Allow auto-creating new filters based on settings key paths

This is especially needed for old-set-parser where e.g. auth_worker_max_count
converts to service/auth-worker/process_limit. This worked so far because
service/auth was created as a non-default settings filter, so it was simply
updated. However, with the next change service/auth becomes a "service
default" filter, which can't be directly updated. Instead a whole new
non-default service/auth filter must be created.

This change shouldn't break anything, although it will now allow
auto-creating named list filters in configuration file, e.g.
"namespace/inbox/separator=/" will directly work.

9 months agorun-test-valgrind.supp - Amend test_lib_fatal_ostream_file suppression
Stephan Bosch [Fri, 1 Nov 2024 17:18:08 +0000 (18:18 +0100)] 
run-test-valgrind.supp - Amend test_lib_fatal_ostream_file suppression

Make stack pattern more robust to compiler diversity.

9 months agoauth: Add test for auth request export import
Aki Tuomi [Wed, 23 Oct 2024 10:06:20 +0000 (13:06 +0300)] 
auth: Add test for auth request export import

9 months agomail-lua: Add lua_call filter to var_expand
Aki Tuomi [Tue, 1 Oct 2024 11:44:59 +0000 (14:44 +0300)] 
mail-lua: Add lua_call filter to var_expand

When mail-lua is loaded, it registers new var_expand filter
lua_call(fn, parameter, parameter)

This will call function in mail lua script with
fn(mail_user, parameter, parameter, .., state)

fn must (return 0, value) on success, and (-1, errmsg) on error

9 months agoauth: passwd-file - Add all fields to passwd_file provider
Aki Tuomi [Thu, 19 Sep 2024 05:38:51 +0000 (08:38 +0300)] 
auth: passwd-file - Add all fields to passwd_file provider

9 months agoglobal: Right-size some pools
Aki Tuomi [Fri, 6 Sep 2024 05:30:43 +0000 (08:30 +0300)] 
global: Right-size some pools

Avoids excess malloc traffic

9 months agolib: Drop old var_expand
Aki Tuomi [Thu, 29 Aug 2024 11:05:06 +0000 (14:05 +0300)] 
lib: Drop old var_expand

9 months agovar-expand-crypt: Convert to new var_expand
Aki Tuomi [Thu, 29 Aug 2024 13:04:04 +0000 (16:04 +0300)] 
var-expand-crypt: Convert to new var_expand

9 months agoquota-status: Use new var_expand
Aki Tuomi [Tue, 17 Sep 2024 05:09:57 +0000 (08:09 +0300)] 
quota-status: Use new var_expand

9 months agonotify-status: Use new var_expand
Aki Tuomi [Thu, 29 Aug 2024 11:04:12 +0000 (14:04 +0300)] 
notify-status: Use new var_expand

9 months agostats: Use new var_expand
Aki Tuomi [Fri, 6 Sep 2024 06:08:22 +0000 (09:08 +0300)] 
stats: Use new var_expand

Dropping %{domain} in favor of %{value | domain}

9 months agoconfig: Use new var_expand
Aki Tuomi [Thu, 29 Aug 2024 11:58:31 +0000 (14:58 +0300)] 
config: Use new var_expand

9 months agomaster: Use new var_expand
Aki Tuomi [Thu, 29 Aug 2024 11:26:15 +0000 (14:26 +0300)] 
master: Use new var_expand

9 months agolda: Use new var_expand
Aki Tuomi [Thu, 29 Aug 2024 11:17:54 +0000 (14:17 +0300)] 
lda: Use new var_expand

9 months agodoveadm: Use new var_expand
Aki Tuomi [Thu, 29 Aug 2024 10:56:07 +0000 (13:56 +0300)] 
doveadm: Use new var_expand

9 months agosubmission: Use new var_expand
Aki Tuomi [Thu, 29 Aug 2024 10:49:38 +0000 (13:49 +0300)] 
submission: Use new var_expand

9 months agopop3: Use new var_expand
Aki Tuomi [Thu, 29 Aug 2024 10:42:40 +0000 (13:42 +0300)] 
pop3: Use new var_expand

9 months agoimap-hibernate: Drop username and domain %variable variants
Aki Tuomi [Thu, 10 Oct 2024 12:01:21 +0000 (15:01 +0300)] 
imap-hibernate: Drop username and domain %variable variants

These can be produced with %{user | username} and %{user | domain}

9 months agoimap-hibernate: Use new var_expand
Aki Tuomi [Thu, 29 Aug 2024 11:35:35 +0000 (14:35 +0300)] 
imap-hibernate: Use new var_expand

9 months agoimap-urlauth: Change logout format to match new var expand syntax
Aki Tuomi [Mon, 23 Sep 2024 12:36:48 +0000 (15:36 +0300)] 
imap-urlauth: Change logout format to match new var expand syntax

9 months agoimap: Use new var_expand
Aki Tuomi [Thu, 29 Aug 2024 10:42:34 +0000 (13:42 +0300)] 
imap: Use new var_expand

9 months agoauth: Change auth_request_var_expand() return value
Aki Tuomi [Tue, 17 Sep 2024 06:28:13 +0000 (09:28 +0300)] 
auth: Change auth_request_var_expand() return value

It now returns -1 on error and 0 on success

9 months agoauth: Return error from auth worker on failure
Aki Tuomi [Thu, 3 Oct 2024 17:03:35 +0000 (20:03 +0300)] 
auth: Return error from auth worker on failure

9 months agoauth: Drop username and domain %variable variants
Aki Tuomi [Thu, 10 Oct 2024 11:36:38 +0000 (14:36 +0300)] 
auth: Drop username and domain %variable variants

These can be generated with %{user|username} and %{user|domain}

9 months agoauth: Use new var_expand
Aki Tuomi [Wed, 28 Aug 2024 11:43:17 +0000 (14:43 +0300)] 
auth: Use new var_expand

9 months agoauth: ldap - Always lowercase attribute names
Aki Tuomi [Fri, 11 Oct 2024 07:23:53 +0000 (10:23 +0300)] 
auth: ldap - Always lowercase attribute names

LDAP attributes are DirectoryStrings, which are case insensitive.

9 months agoauth: ldap - Replace ldap_dn with ldap:dn
Aki Tuomi [Fri, 11 Oct 2024 07:19:26 +0000 (10:19 +0300)] 
auth: ldap - Replace ldap_dn with ldap:dn

While it's theoretically possible that someone can introduce an
attribute called DN, it is not practically possible.

9 months agoauth: Remove old var_expand %variables
Aki Tuomi [Thu, 10 Oct 2024 11:03:53 +0000 (14:03 +0300)] 
auth: Remove old var_expand %variables

9 months agologin-common: Drop username and domain %variable variants
Aki Tuomi [Thu, 10 Oct 2024 11:49:43 +0000 (14:49 +0300)] 
login-common: Drop username and domain %variable variants

These can be produced with %{user | username} and %{user | domain}.

9 months agologin-common: Use new var_expand
Aki Tuomi [Tue, 20 Aug 2024 11:52:37 +0000 (14:52 +0300)] 
login-common: Use new var_expand

9 months agologin-common: Remove old var_expand %variables
Aki Tuomi [Thu, 10 Oct 2024 10:25:17 +0000 (13:25 +0300)] 
login-common: Remove old var_expand %variables

9 months agodict-ldap: Use new var_expand
Aki Tuomi [Thu, 29 Aug 2024 11:21:36 +0000 (14:21 +0300)] 
dict-ldap: Use new var_expand

9 months agodriver_cassandra: Use new var_expand
Aki Tuomi [Thu, 29 Aug 2024 10:59:21 +0000 (13:59 +0300)] 
driver_cassandra: Use new var_expand

9 months agolib-storage: Drop username and domain %variable variants
Aki Tuomi [Thu, 10 Oct 2024 11:54:31 +0000 (14:54 +0300)] 
lib-storage: Drop username and domain %variable variants

These can be produced with %{user | username} and %{user | domain}.

9 months agolib-storage: Use new var_expand
Aki Tuomi [Tue, 20 Aug 2024 09:17:24 +0000 (12:17 +0300)] 
lib-storage: Use new var_expand

9 months agolib-storage,imap-hibernate: Drop lip, rip, lport and rport %variables
Aki Tuomi [Thu, 10 Oct 2024 11:57:01 +0000 (14:57 +0300)] 
lib-storage,imap-hibernate: Drop lip, rip, lport and rport %variables

They are removed in favor of local_ip, remote_ip, local_port and
remote_port.

9 months agolib-settings: Use new var_expand
Aki Tuomi [Tue, 20 Aug 2024 07:47:58 +0000 (10:47 +0300)] 
lib-settings: Use new var_expand

NOTE: Dovecot will be broken until all users of
SETTINGS_EVENT_VAR_EXPAND_* are fixed.

9 months agolib-master: Use new var_expand
Aki Tuomi [Tue, 20 Aug 2024 06:29:09 +0000 (09:29 +0300)] 
lib-master: Use new var_expand

9 months agoglobal: Remove var-expand.h from some places
Aki Tuomi [Thu, 29 Aug 2024 11:00:23 +0000 (14:00 +0300)] 
global: Remove var-expand.h from some places

9 months agoglobal: Include lib-var-expand where needed
Aki Tuomi [Tue, 20 Aug 2024 06:47:49 +0000 (09:47 +0300)] 
global: Include lib-var-expand where needed

9 months agoAdd lib-var-expand
Aki Tuomi [Fri, 16 Aug 2024 09:20:40 +0000 (12:20 +0300)] 
Add lib-var-expand

9 months agolib: event-filter - Use system pool for memory
Aki Tuomi [Mon, 2 Sep 2024 07:23:15 +0000 (10:23 +0300)] 
lib: event-filter - Use system pool for memory

9 months agolib: mempool - Allow calling realloc without knowing block size
Aki Tuomi [Thu, 15 Aug 2024 18:14:06 +0000 (21:14 +0300)] 
lib: mempool - Allow calling realloc without knowing block size

Supported by some pools only

9 months agodbox: Fail reading mails if it has external attachment and mail_ext_attachment_dir...
Timo Sirainen [Mon, 14 Oct 2024 11:34:43 +0000 (14:34 +0300)] 
dbox: Fail reading mails if it has external attachment and mail_ext_attachment_dir is empty

Previously it was just silently dropping the attachments.

9 months agoimap(-login): Change imap_capability to boollist.
sergey.kitov [Thu, 29 Aug 2024 09:51:10 +0000 (12:51 +0300)] 
imap(-login): Change imap_capability to boollist.

9 months agolib-imap: Introduce imap_write_capability() function.
sergey.kitov [Mon, 14 Oct 2024 15:45:38 +0000 (18:45 +0300)] 
lib-imap: Introduce imap_write_capability() function.

9 months agolib-settings: Introduce settings_boollist_is_stopped() function.
sergey.kitov [Fri, 11 Oct 2024 12:21:24 +0000 (15:21 +0300)] 
lib-settings: Introduce settings_boollist_is_stopped() function.

The function is to be used to identify if boollist setting is set
explicitly or updating existing (default) settings.

9 months agoconfig: Fix formatting of boollist keys containing '=' by doveconf.
sergey.kitov [Thu, 3 Oct 2024 12:52:15 +0000 (15:52 +0300)] 
config: Fix formatting of boollist keys containing '=' by doveconf.

9 months agologin-common: Add service field to client event.
sergey.kitov [Mon, 16 Sep 2024 09:17:23 +0000 (12:17 +0300)] 
login-common: Add service field to client event.

service field is needed for applying default settings.

9 months agolib-settings: Call settings_parse_array_stop for seen settings.
sergey.kitov [Mon, 30 Sep 2024 14:02:44 +0000 (17:02 +0300)] 
lib-settings: Call settings_parse_array_stop for seen settings.

Not calling settings_parse_array_stop() for seen settings cause
excessive elements in list, when settings are read for second time.

9 months agolib-settings: Allow override setting keys ending with '+' for non SET_STR and SET_FIL...
sergey.kitov [Thu, 29 Aug 2024 08:43:54 +0000 (11:43 +0300)] 
lib-settings: Allow override setting keys ending with '+' for non SET_STR and SET_FILTER_ARRAY types.

For SET_STR and SET_FILTER_ARRAY types + at the end of the key is
treated as appending to the value.
Particularly, this change allows boollist entries to end with '+'.

9 months agoimap(-login): Remove +CAPABILITY functionality from imap_capability setting.
sergey.kitov [Thu, 26 Oct 2023 13:24:10 +0000 (16:24 +0300)] 
imap(-login): Remove +CAPABILITY functionality from imap_capability setting.

This will be unnecessary after the following commit changes
imap_capability to BOOLLIST.

9 months agoimap-login: Whitespace cleanup.
sergey.kitov [Wed, 18 Sep 2024 13:36:52 +0000 (16:36 +0300)] 
imap-login: Whitespace cleanup.

9 months agolib-storage: Change mbox_[read|write]_locks to BOOLLIST..
sergey.kitov [Wed, 8 May 2024 14:33:09 +0000 (17:33 +0300)] 
lib-storage: Change mbox_[read|write]_locks to BOOLLIST..

9 months agolib-storage: shared - Minor shared_ns_prefix_validate() optimization
Timo Sirainen [Mon, 23 Sep 2024 11:40:34 +0000 (14:40 +0300)] 
lib-storage: shared - Minor shared_ns_prefix_validate() optimization

9 months agolib-storage: shared - Split off shared_ns_prefix_validate()
Timo Sirainen [Mon, 23 Sep 2024 11:36:02 +0000 (14:36 +0300)] 
lib-storage: shared - Split off shared_ns_prefix_validate()

9 months agolib-storage, acl: Replace %%variables in shared namespace prefix with $variables
Timo Sirainen [Wed, 18 Sep 2024 10:55:13 +0000 (13:55 +0300)] 
lib-storage, acl: Replace %%variables in shared namespace prefix with $variables

%%u -> $user, %%n -> $username, %%d -> $domain

This the variables couldn't actually be used in any complex ways,
these $variable templates make more sense. They're also more consistent
with how dict-sql handles similar templating.

9 months agodict-cdb: Implement new init() API
Timo Sirainen [Wed, 18 Sep 2024 11:39:59 +0000 (14:39 +0300)] 
dict-cdb: Implement new init() API

9 months agoglobal: Rename service_idle_kill to service_idle_kill_interval
Timo Sirainen [Tue, 17 Sep 2024 12:30:23 +0000 (15:30 +0300)] 
global: Rename service_idle_kill to service_idle_kill_interval

Also rename related functions and macros.

This clarifies a bit what the setting does: It's the interval between
killing idle processes, not the amount of time when an idling process
is killed.

9 months agoauth: Rename passdb_mechanisms_filter=none to lookup
Timo Sirainen [Wed, 18 Sep 2024 11:15:04 +0000 (14:15 +0300)] 
auth: Rename passdb_mechanisms_filter=none to lookup

9 months agoauth: Rename passdb_mechanisms to passdb_mechanisms_filter
Timo Sirainen [Wed, 18 Sep 2024 11:13:21 +0000 (14:13 +0300)] 
auth: Rename passdb_mechanisms to passdb_mechanisms_filter

Rename also related variables.

9 months agomail-crypt: Detect chacha20-poly1305 correctly
Aki Tuomi [Thu, 19 Sep 2024 05:28:12 +0000 (08:28 +0300)] 
mail-crypt: Detect chacha20-poly1305 correctly

9 months agolib-settings: Add default name fields for named list filter overrides
Timo Sirainen [Wed, 4 Sep 2024 20:11:14 +0000 (23:11 +0300)] 
lib-settings: Add default name fields for named list filter overrides

For example if -o namespace+=foo, it's no longer necessary to explicitly
add also -o namespace/foo/name=foo.

9 months agolib-settings: Fix order of override settings
Timo Sirainen [Wed, 4 Sep 2024 12:56:03 +0000 (15:56 +0300)] 
lib-settings: Fix order of override settings

9 months agolib-settings: settings - Add support for sorting filter array fields
Stephan Bosch [Tue, 3 Sep 2024 00:10:48 +0000 (02:10 +0200)] 
lib-settings: settings - Add support for sorting filter array fields

9 months agolib-settings: test-settings-parser - Always use designated initializers for setting...
Stephan Bosch [Tue, 3 Sep 2024 18:16:13 +0000 (20:16 +0200)] 
lib-settings: test-settings-parser - Always use designated initializers for setting defs

9 months agotrash: Convert plugin settings to regular settings
Timo Sirainen [Wed, 28 Aug 2024 01:09:22 +0000 (04:09 +0300)] 
trash: Convert plugin settings to regular settings

9 months agolib-storage: Splitt off mailbox_settings_get_vname()
Timo Sirainen [Wed, 28 Aug 2024 01:39:28 +0000 (04:39 +0300)] 
lib-storage: Splitt off mailbox_settings_get_vname()

9 months agopop3-migration: Convert plugin settings to regular settings
Timo Sirainen [Wed, 28 Aug 2024 00:40:57 +0000 (03:40 +0300)] 
pop3-migration: Convert plugin settings to regular settings

9 months agocharset-alias: Convert plugin settings to regular settings
Timo Sirainen [Wed, 28 Aug 2024 00:40:52 +0000 (03:40 +0300)] 
charset-alias: Convert plugin settings to regular settings

9 months agoapparmor: Convert plugin settings to regular settings
Timo Sirainen [Wed, 28 Aug 2024 00:23:28 +0000 (03:23 +0300)] 
apparmor: Convert plugin settings to regular settings

9 months agovirtual: Convert plugin settings to regular settings
Timo Sirainen [Wed, 28 Aug 2024 00:23:23 +0000 (03:23 +0300)] 
virtual: Convert plugin settings to regular settings

9 months agomail-log: Convert plugin settings to regular settings
Timo Sirainen [Tue, 27 Aug 2024 23:49:36 +0000 (02:49 +0300)] 
mail-log: Convert plugin settings to regular settings

9 months agolast-login: Convert plugin settings to regular settings
Timo Sirainen [Tue, 27 Aug 2024 23:35:12 +0000 (02:35 +0300)] 
last-login: Convert plugin settings to regular settings

9 months agoglobal: Use array_lsearch_ptr[_idx]() where possible
Timo Sirainen [Tue, 3 Sep 2024 10:04:00 +0000 (13:04 +0300)] 
global: Use array_lsearch_ptr[_idx]() where possible