diff --git a/src/lib-sieve/sieve-extensions.c b/src/lib-sieve/sieve-extensions.c
index f9d7c0a19c3bececd2653f1909e366a76a4af1ff..5552ffcd97c911f7cbe23e99fe37ed215259a4ae 100644
--- a/src/lib-sieve/sieve-extensions.c
+++ b/src/lib-sieve/sieve-extensions.c
@@ -9,6 +9,7 @@
 
 #include "sieve-common.h"
 #include "sieve-error.h"
+#include "sieve-settings.h"
 #include "sieve-extensions.h"
 
 /*
@@ -178,6 +179,7 @@ bool sieve_extensions_init(struct sieve_instance *svinst)
 	unsigned int i;	
 	struct sieve_extension_registry *ext_reg = 
 		p_new(svinst->pool, struct sieve_extension_registry, 1);
+	const char *extensions;
 
 	svinst->ext_reg = ext_reg;
 
@@ -230,8 +232,13 @@ bool sieve_extensions_init(struct sieve_instance *svinst)
 	}
 #endif
 
+	/* Use sieve_extensions if set */
+
+	if ( (extensions=sieve_setting_get(svinst, "sieve_extensions")) != NULL )
+		sieve_extensions_set_string(svinst, extensions);
+
 	/* More extensions can be added through plugins */
-	
+
 	return TRUE;
 }
 
diff --git a/src/managesieve/managesieve-capabilities.c b/src/managesieve/managesieve-capabilities.c
index 4da049d560119530322bf2c7393cb331d2a3b6c9..faa8c0d8394211ee4c3c393cef6db1d2caa030c4 100644
--- a/src/managesieve/managesieve-capabilities.c
+++ b/src/managesieve/managesieve-capabilities.c
@@ -132,11 +132,6 @@ void managesieve_capabilities_dump(void)
 
 	svinst = sieve_init(&sieve_env, (void *) global_plugin_settings, FALSE);
 
-	extensions = plugin_settings_get(global_plugin_settings, "sieve_extensions");
-	if ( extensions != NULL ) {
-		sieve_set_extensions(svinst, extensions);
-	}
-
 	/* Dump capabilities */
 
 	notify_cap = sieve_get_capabilities(svinst, "notify");
diff --git a/src/managesieve/managesieve-client.c b/src/managesieve/managesieve-client.c
index d0fed85f53fe3b3aacb5e0919d93a7c1cc460142..c19b4da8825ae3a9957afcca154ba488c3f6a69a 100644
--- a/src/managesieve/managesieve-client.c
+++ b/src/managesieve/managesieve-client.c
@@ -111,7 +111,7 @@ struct client *client_create
 	const struct managesieve_settings *set)
 {
 	struct client *client;
-	const char *ident, *extensions;
+	const char *ident;
 	struct sieve_instance *svinst;
 	struct sieve_storage *storage;
 
@@ -124,11 +124,6 @@ struct client *client_create
 
 	svinst = sieve_init(&managesieve_sieve_env, (void *) user, set->mail_debug);
 
-	extensions = mail_user_plugin_getenv(user, "sieve_extensions");
-	if ( extensions != NULL ) {
-		sieve_set_extensions(svinst, extensions);
-	}
-
 	/* Get Sieve storage */
 
 	storage = client_get_storage(svinst, user, set);	
diff --git a/src/plugins/lda-sieve/lda-sieve-plugin.c b/src/plugins/lda-sieve/lda-sieve-plugin.c
index 35774e77f2e49eefbc7909a59cb5b1b059ab602e..7152ee5b81c5b775911901f126bb4b56d1282cf7 100644
--- a/src/plugins/lda-sieve/lda-sieve-plugin.c
+++ b/src/plugins/lda-sieve/lda-sieve-plugin.c
@@ -519,7 +519,6 @@ static int lda_sieve_run
 	struct sieve_message_data msgdata;
 	struct sieve_script_env scriptenv;
 	struct sieve_exec_status estatus;
-	const char *extensions = NULL;
 	bool debug = mdctx->dest_user->mail_debug;
 	int ret = 0;
 
@@ -528,12 +527,6 @@ static int lda_sieve_run
 	/* Initialize Sieve engine */
 	svinst = sieve_init(&lda_sieve_env, mdctx->dest_user, debug);
 	
-	extensions = mail_user_plugin_getenv
-		(mdctx->dest_user, "sieve_extensions");
-	if ( extensions != NULL ) {
-		sieve_set_extensions(svinst, extensions);
-	}
-
 	/* Initialize */
 
 	memset(&srctx, 0, sizeof(srctx));