diff --git a/src/lib-sieve/plugins/include/Makefile.am b/src/lib-sieve/plugins/include/Makefile.am
index 2e7b9b1040a641324e0613f793e2a29c46656e35..ad69856907131da7d1d98031a8206490d29b7d32 100644
--- a/src/lib-sieve/plugins/include/Makefile.am
+++ b/src/lib-sieve/plugins/include/Makefile.am
@@ -2,10 +2,11 @@ noinst_LTLIBRARIES = libsieve_ext_include.la
 
 AM_CPPFLAGS = \
 	-I../../ \
+	-I../variables \
 	-I$(dovecot_incdir) \
 	-I$(dovecot_incdir)/src/lib \
 	-I$(dovecot_incdir)/src/lib-mail \
-	-I$(dovecot_incdir)/src/lib-storage 
+	-I$(dovecot_incdir)/src/lib-storage
 
 cmds = \
 	cmd-include.c \
diff --git a/src/lib-sieve/plugins/include/cmd-export.c b/src/lib-sieve/plugins/include/cmd-export.c
index 47ebe809fab0f00b4e1cbfb73fa19c59299ea9e8..713db816595aca5d202f472f600b591b277d5523 100644
--- a/src/lib-sieve/plugins/include/cmd-export.c
+++ b/src/lib-sieve/plugins/include/cmd-export.c
@@ -6,6 +6,7 @@
 #include "sieve-validator.h" 
 #include "sieve-generator.h"
 #include "sieve-interpreter.h"
+#include "sieve-ext-variables.h"
 
 #include "ext-include-common.h"
 
@@ -70,6 +71,12 @@ static bool cmd_export_validate
 		return FALSE;
 	}
 	
+	if ( !sieve_ext_variables_is_active(validator) ) {
+		sieve_command_validate_error(validator, cmd, 
+			"export command requires that variables extension is active");
+		return FALSE;
+	}
+	
 	if ( !sieve_validate_positional_argument
 		(validator, cmd, arg, "value", 1, SAAT_STRING_LIST) ) {
 		return FALSE;
diff --git a/src/lib-sieve/plugins/include/cmd-import.c b/src/lib-sieve/plugins/include/cmd-import.c
index 5ac6b9d67c8a62641072c5b4136ed0e3afc290f2..997cea655df1fca232820d7e8989146ecac306be 100644
--- a/src/lib-sieve/plugins/include/cmd-import.c
+++ b/src/lib-sieve/plugins/include/cmd-import.c
@@ -6,6 +6,7 @@
 #include "sieve-validator.h" 
 #include "sieve-generator.h"
 #include "sieve-interpreter.h"
+#include "sieve-ext-variables.h"
 
 #include "ext-include-common.h"
 
@@ -69,6 +70,12 @@ static bool cmd_import_validate
 		return FALSE;
 	}
 	
+	if ( !sieve_ext_variables_is_active(validator) ) {
+		sieve_command_validate_error(validator, cmd, 
+			"import command requires that variables extension is active");
+		return FALSE;
+	}
+	
 	if ( !sieve_validate_positional_argument
 		(validator, cmd, arg, "value", 1, SAAT_STRING_LIST) ) {
 		return FALSE;
diff --git a/src/lib-sieve/plugins/include/include-variables-error.sieve b/src/lib-sieve/plugins/include/include-variables-error.sieve
new file mode 100644
index 0000000000000000000000000000000000000000..bb2b5bcb427b61c6e177fce4f7b1c6eb86426ff9
--- /dev/null
+++ b/src/lib-sieve/plugins/include/include-variables-error.sieve
@@ -0,0 +1,5 @@
+require "include";
+require "fileinto";
+export "frop";
+
+fileinto "Frop";
diff --git a/src/lib-sieve/plugins/variables/cmd-set.c b/src/lib-sieve/plugins/variables/cmd-set.c
index 1e9b77ffad8ef94baf59e8a5bb184b45986e3331..69d49d7e403a76b08ffb3e0acc2b8ee20214b574 100644
--- a/src/lib-sieve/plugins/variables/cmd-set.c
+++ b/src/lib-sieve/plugins/variables/cmd-set.c
@@ -207,7 +207,7 @@ static bool cmd_set_registered
 /* Command validation */
 
 static bool cmd_set_pre_validate
-	(struct sieve_validator *validator, struct sieve_command_context *cmd)
+	(struct sieve_validator *validator ATTR_UNUSED, struct sieve_command_context *cmd)
 {
 	pool_t pool = sieve_command_pool(cmd);
 	struct cmd_set_context *sctx = p_new(pool, struct cmd_set_context, 1);
diff --git a/src/lib-sieve/plugins/variables/ext-variables-common.c b/src/lib-sieve/plugins/variables/ext-variables-common.c
index 99da7ad76a69ed0e056c8a204585c633fc0e7c8a..26691a0dd6fe219fe35de8da37a4a5a66dd2ef56 100644
--- a/src/lib-sieve/plugins/variables/ext-variables-common.c
+++ b/src/lib-sieve/plugins/variables/ext-variables-common.c
@@ -204,6 +204,11 @@ struct sieve_variable *ext_variables_validator_get_variable
 	return sieve_variable_scope_get_variable(ctx->main_scope, variable);
 }
 
+bool sieve_ext_variables_is_active(struct sieve_validator *valdtr)
+{
+	return ( ext_variables_validator_context_get(valdtr) != NULL );
+}
+
 /* Interpreter context */
 
 struct ext_variables_interpreter_context {
diff --git a/src/lib-sieve/plugins/variables/sieve-ext-variables.h b/src/lib-sieve/plugins/variables/sieve-ext-variables.h
index db95aed75e7ed6230781d9c25c28d6c35cd23244..120df375306a8f5ed26557cae1d986748231bec0 100644
--- a/src/lib-sieve/plugins/variables/sieve-ext-variables.h
+++ b/src/lib-sieve/plugins/variables/sieve-ext-variables.h
@@ -1,10 +1,18 @@
+/* 
+ * Public interface for other extensions to use 
+ */
+ 
 #ifndef __SIEVE_EXT_VARIABLES_H
 #define __SIEVE_EXT_VARIABLES_H
 
 #include "sieve-common.h"
 #include "sieve-extensions.h"
 
-/* Public interface for other extensions to use */
+bool sieve_ext_variables_is_active(struct sieve_validator *valdtr);
+
+/*
+ * Variable scope
+ */
 
 struct sieve_variable {
 	const char *identifier;
@@ -17,6 +25,10 @@ struct sieve_variable_scope *sieve_variable_scope_create(pool_t pool);
 struct sieve_variable *sieve_variable_scope_get_variable
 	(struct sieve_variable_scope *scope, const char *identifier);
 	
+/* 
+ * Variable storage
+ */	
+	
 struct sieve_variable_storage;
 
 struct sieve_variable_storage *sieve_variable_storage_create(pool_t pool);
@@ -27,7 +39,9 @@ void sieve_variable_assign
 	(struct sieve_variable_storage *storage, unsigned int index, 
 		const string_t *value);
 
-/* Extensions */
+/* 
+ * Variable extensions 
+ */
 
 struct sieve_variables_extension {
 	const struct sieve_extension *extension;