diff --git a/src/managesieve-login/client.c b/src/managesieve-login/client.c
index 40022ec448271f3f7840d571f2f4fe5c5e23ba1c..6def80b4a2bf1a63a659920562be4f56b86efa35 100644
--- a/src/managesieve-login/client.c
+++ b/src/managesieve-login/client.c
@@ -417,6 +417,18 @@ static void managesieve_client_destroy(struct client *client)
 	settings_free(msieve_client->set);
 }
 
+static int
+managesieve_client_reload_config(struct client *client, const char **error_r)
+{
+	struct managesieve_client *msieve_client =
+		container_of(client, struct managesieve_client, common);
+
+	settings_free(msieve_client->set);
+	return settings_get(client->event,
+			    &managesieve_login_setting_parser_info, 0,
+			    &msieve_client->set, error_r);
+}
+
 static void managesieve_client_notify_auth_ready(struct client *client)
 {
 	/* Cork the stream to send the capability data as a single tcp frame
@@ -539,6 +551,7 @@ static struct client_vfuncs managesieve_client_vfuncs = {
 	.alloc = managesieve_client_alloc,
 	.create = managesieve_client_create,
 	.destroy = managesieve_client_destroy,
+	.reload_config = managesieve_client_reload_config,
 	.notify_auth_ready = managesieve_client_notify_auth_ready,
 	.notify_disconnect = managesieve_client_notify_disconnect,
 	.notify_starttls = managesieve_client_notify_starttls,