diff --git a/src/lib-sieve/sieve-storage.c b/src/lib-sieve/sieve-storage.c
index 20d6e027f0711795b5e74d1f8737d110a999c2a4..43b59b8b37f14afd122af9a16119e144b24c8caa 100644
--- a/src/lib-sieve/sieve-storage.c
+++ b/src/lib-sieve/sieve-storage.c
@@ -111,6 +111,12 @@ sieve_storage_class_find(struct sieve_instance *svinst, const char *name)
 	return NULL;
 }
 
+bool sieve_storage_class_exists(struct sieve_instance *svinst,
+				const char *name)
+{
+	return (sieve_storage_class_find(svinst, name) != NULL);
+}
+
 /*
  * Storage instance
  */
diff --git a/src/lib-sieve/sieve-storage.h b/src/lib-sieve/sieve-storage.h
index 333d0e9ffa1521fa31020616fadaca599efb9895..5264dd1b7d5244882480a412b247c1ff0b7d0b00 100644
--- a/src/lib-sieve/sieve-storage.h
+++ b/src/lib-sieve/sieve-storage.h
@@ -25,6 +25,10 @@ enum sieve_storage_flags {
 
 struct sieve_storage;
 
+/* Determine whether storage driver exists. */
+bool sieve_storage_class_exists(struct sieve_instance *svinst,
+				const char *name);
+
 int sieve_storage_create(struct sieve_instance *svinst, const char *location,
 			 enum sieve_storage_flags flags,
 			 struct sieve_storage **storage_r,