]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lda: Fix using USER environment if -d hasn't been specified
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 26 May 2025 06:37:35 +0000 (09:37 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Mon, 26 May 2025 12:46:13 +0000 (12:46 +0000)
This became broken at some point.

src/lda/main.c

index 1f824ff727c0dfc9cd86280c6ed861bda03bddeb..4fb5cd6e6299db7ed6ae7f0fc3fbf7ffce1332b8 100644 (file)
@@ -453,9 +453,6 @@ int main(int argc, char *argv[])
                i_fatal_status(EX_USAGE, "Unknown argument: %s", argv[optind]);
        }
 
-       if (master_service_settings_read_simple(master_service, &error) < 0)
-               i_fatal("%s", error);
-
        process_euid = geteuid();
        if ((service_flags & MAIL_STORAGE_SERVICE_FLAG_USERDB_LOOKUP) != 0)
                ;
@@ -485,6 +482,13 @@ int main(int argc, char *argv[])
                i_fatal_status(EX_USAGE,
                        "destination user parameter (-d user) not given");
        }
+       struct master_service_settings_input set_input = {
+               .preserve_user = TRUE,
+       };
+       struct master_service_settings_output set_output;
+       if (master_service_settings_read(master_service, &set_input,
+                                        &set_output, &error) < 0)
+               i_fatal("%s", error);
        master_service_init_finish(master_service);
 
        dinput.mail_from = mail_from;