diff --git a/src/managesieve-login/managesieve-login-settings-plugin.c b/src/managesieve-login/managesieve-login-settings-plugin.c
index 6844f6422b2e20cf94307b619b02075fb49b4e90..8d96907ece2f37d310a95179d66afccdac39603f 100644
--- a/src/managesieve-login/managesieve-login-settings-plugin.c
+++ b/src/managesieve-login/managesieve-login-settings-plugin.c
@@ -105,7 +105,7 @@ static void capability_parse(const char *cap_string)
 		capability_store(cap_type, str_c(part));
 }
 
-static bool capability_dump(void)
+static bool capability_dump(bool dump_defaults)
 {
 	char buf[4096];
 	int fd[2], status = 0;
@@ -152,9 +152,14 @@ static bool capability_dump(void)
 
 		argv[0] = PKG_LIBEXECDIR"/managesieve";
 		argv[1] = "-k";
-		argv[2] = "-c";
-		argv[3] = master_service_get_config_path(master_service);
-		argv[4] = NULL;
+		if (!dump_defaults) {
+			argv[2] = "-c";
+			argv[3] = master_service_get_config_path(master_service);
+			argv[4] = NULL;
+		} else {
+			argv[2] = "-O";
+			argv[3] = NULL;
+		}
 		execv_const(argv[0], argv);
 
 		i_fatal("managesieve-login: "
@@ -234,7 +239,7 @@ static void
 managesieve_login_config_parser_begin(struct config_parser_context *ctx)
 {
 	if (!capability_dumped) {
-		(void)capability_dump();
+		(void)capability_dump(ctx->dump_defaults);
 		capability_dumped = TRUE;
 	}