diff --git a/src/lib-sieve/sieve-storage-private.h b/src/lib-sieve/sieve-storage-private.h
index 375d789521c0a0bbdf781fb22aefd4fef559ec41..81bd130b845d478b47af3cbf159e6bbc54b1fd37 100644
--- a/src/lib-sieve/sieve-storage-private.h
+++ b/src/lib-sieve/sieve-storage-private.h
@@ -220,6 +220,8 @@ extern const struct sieve_storage sieve_ldap_storage;
  */
 
 void sieve_storage_set_internal_error(struct sieve_storage *storage);
+void sieve_storage_set_not_found_error(struct sieve_storage *storage,
+				       const char *name);
 
 void sieve_storage_copy_error(struct sieve_storage *storage,
 			      const struct sieve_storage *source);
diff --git a/src/lib-sieve/sieve-storage.c b/src/lib-sieve/sieve-storage.c
index 1467d99175e07b285e9e7322bc19ebe3932e71a2..706533b94d771ace6696743021e382d04c6f92b1 100644
--- a/src/lib-sieve/sieve-storage.c
+++ b/src/lib-sieve/sieve-storage.c
@@ -1592,6 +1592,19 @@ void sieve_storage_set_critical(struct sieve_storage *storage,
 	}
 }
 
+void sieve_storage_set_not_found_error(struct sieve_storage *storage,
+				       const char *name)
+{
+	enum sieve_error error_code;
+	const char *error;
+
+	sieve_storage_clear_error(storage);
+	name = (name == NULL || *name == '\0' ? storage->script_name : name);
+	sieve_error_create_script_not_found(name, &error_code, &error);
+	storage->error_code = error_code;
+	storage->error = i_strdup(error);
+}
+
 const char *
 sieve_storage_get_last_error(struct sieve_storage *storage,
 			     enum sieve_error *error_code_r)