diff --git a/Makefile.am b/Makefile.am
index 06dbdae2875cd95fe95b4817c4d5dcb0deb1a9e6..d54679677ea08c59606b25de933001fbd5dbce8e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -27,10 +27,7 @@ TEST_BIN = $(TESTSUITE_BIN)
 endif
 
 if BUILD_UNFINISHED
-test_unfinished = \
-	tests/extensions/spamvirustest/spamtest.svtest \
-	tests/extensions/spamvirustest/virustest.svtest \
-	tests/extensions/spamvirustest/spamtestplus.svtest
+test_unfinished =
 else
 test_unfinished = 
 endif
@@ -117,6 +114,9 @@ test_cases = \
 	tests/deprecated/notify/errors.svtest \
 	tests/deprecated/notify/execute.svtest \
 	tests/deprecated/notify/denotify.svtest \
+	tests/extensions/spamvirustest/spamtest.svtest \
+	tests/extensions/spamvirustest/virustest.svtest \
+	tests/extensions/spamvirustest/spamtestplus.svtest \
 	$(test_unfinished)
 
 $(test_cases):
diff --git a/src/lib-sieve/Makefile.am b/src/lib-sieve/Makefile.am
index 5157c7ce495fa8b38cc7fe8dd97ddd9c6b08d289..c27743a73110aeff2ed22551c5741e1783b47227 100644
--- a/src/lib-sieve/Makefile.am
+++ b/src/lib-sieve/Makefile.am
@@ -40,8 +40,7 @@ comparators = \
 	cmp-i-ascii-casemap.c
 
 if BUILD_UNFINISHED
-unfinished_plugins = \
-	./plugins/spamvirustest/libsieve_ext_spamvirustest.la
+unfinished_plugins =
 endif
 
 # These are not actual plugins just yet...
@@ -61,6 +60,7 @@ plugins = \
 	./plugins/environment/libsieve_ext_environment.la \
 	./plugins/mailbox/libsieve_ext_mailbox.la \
 	./plugins/date/libsieve_ext_date.la \
+	./plugins/spamvirustest/libsieve_ext_spamvirustest.la \
 	$(unfinished_plugins)
 
 libdovecot_sieve_la_DEPENDENCIES = $(plugins)
diff --git a/src/lib-sieve/plugins/Makefile.am b/src/lib-sieve/plugins/Makefile.am
index f936d0579044de5622fc990e6386bbf408227a80..fcafb9a5e5176e7dede50a64449d3974a3a1e856 100644
--- a/src/lib-sieve/plugins/Makefile.am
+++ b/src/lib-sieve/plugins/Makefile.am
@@ -1,5 +1,5 @@
 if BUILD_UNFINISHED
-UNFINISHED = spamvirustest
+UNFINISHED = 
 endif
 
 SUBDIRS = \
@@ -18,6 +18,7 @@ SUBDIRS = \
 	environment \
 	mailbox \
 	date \
+	spamvirustest \
 	$(UNFINISHED)
 
 
diff --git a/src/lib-sieve/plugins/spamvirustest/ext-spamvirustest.c b/src/lib-sieve/plugins/spamvirustest/ext-spamvirustest.c
index dc36321433f8999e69c150a4cebd2c6a7dbdf44c..a20522b84a5f27d60ab377632acd6bb08f20bc0e 100644
--- a/src/lib-sieve/plugins/spamvirustest/ext-spamvirustest.c
+++ b/src/lib-sieve/plugins/spamvirustest/ext-spamvirustest.c
@@ -6,7 +6,7 @@
  *
  * Authors: Stephan Bosch
  * Specification: RFC 5235
- * Implementation: unfinished
+ * Implementation: full
  * Status: experimental
  *
  */
@@ -45,12 +45,6 @@
  * sieve_virustest_text_value1 = clean
  * sieve_virustest_text_value5 = infected
  */
-
-/* TODO: 
- *   - Spamtest/Spamtestplus configuration needs testing
- *   - Virustest configuration is currently not present
- *   - Testsuite tests
- */
  
 #include "lib.h"
 #include "array.h"
diff --git a/src/lib-sieve/sieve-extensions.c b/src/lib-sieve/sieve-extensions.c
index d917ef2689d265440987ef5b30b14f0cb8556100..720a1c2c51c4a66c99ce3456fd219c9b1ba77b55 100644
--- a/src/lib-sieve/sieve-extensions.c
+++ b/src/lib-sieve/sieve-extensions.c
@@ -94,6 +94,9 @@ extern const struct sieve_extension_def enotify_extension;
 extern const struct sieve_extension_def environment_extension;
 extern const struct sieve_extension_def mailbox_extension;
 extern const struct sieve_extension_def date_extension;
+extern const struct sieve_extension_def spamtest_extension;
+extern const struct sieve_extension_def spamtestplus_extension;
+extern const struct sieve_extension_def virustest_extension;
 
 /*
  * List of native extensions
@@ -113,7 +116,8 @@ const struct sieve_extension_def *sieve_core_extensions[] = {
 	&relational_extension, &regex_extension, &imap4flags_extension,
 	&copy_extension, &include_extension, &body_extension,
 	&variables_extension, &enotify_extension, &environment_extension,
-	&mailbox_extension, &date_extension
+	&mailbox_extension, &date_extension, &spamtest_extension, 
+	&spamtestplus_extension, &virustest_extension
 };
 
 const unsigned int sieve_core_extensions_count =
@@ -141,15 +145,9 @@ const unsigned int sieve_deprecated_extensions_count =
 #ifdef HAVE_SIEVE_UNFINISHED
 
 extern const struct sieve_extension_def ereject_extension;
-extern const struct sieve_extension_def spamtest_extension;
-extern const struct sieve_extension_def spamtestplus_extension;
-extern const struct sieve_extension_def virustest_extension;
 
 const struct sieve_extension_def *sieve_unfinished_extensions[] = {
-	&ereject_extension,
-	&spamtest_extension,
-	&spamtestplus_extension,
-	&virustest_extension
+	&ereject_extension
 };
 
 const unsigned int sieve_unfinished_extensions_count =