diff --git a/src/lib-sieve-tool/sieve-tool.c b/src/lib-sieve-tool/sieve-tool.c
index b26aaa8b83e887f155fff76b97976b7c67a048c6..81411a8ed22f8ace0147622e9b13c53a488f3f8a 100644
--- a/src/lib-sieve-tool/sieve-tool.c
+++ b/src/lib-sieve-tool/sieve-tool.c
@@ -489,6 +489,13 @@ struct mail_user *sieve_tool_get_mail_raw_user(struct sieve_tool *tool)
 	return tool->mail_raw_user;
 }
 
+struct mail_storage_service_ctx *
+sieve_tool_get_mail_storage_service(struct sieve_tool *tool)
+{
+	sieve_tool_init_mail_raw_user(tool);
+	return tool->storage_service;
+}
+
 /*
  * Commonly needed functionality
  */
diff --git a/src/lib-sieve-tool/sieve-tool.h b/src/lib-sieve-tool/sieve-tool.h
index 02f41984aae6a237d0f9e125517bdb970378b1f0..8b8bde04625afb88254e31976419bef8f4396fbf 100644
--- a/src/lib-sieve-tool/sieve-tool.h
+++ b/src/lib-sieve-tool/sieve-tool.h
@@ -52,6 +52,8 @@ const char *sieve_tool_get_username(struct sieve_tool *tool);
 const char *sieve_tool_get_homedir(struct sieve_tool *tool);
 struct mail_user *sieve_tool_get_mail_user(struct sieve_tool *tool);
 struct mail_user *sieve_tool_get_mail_raw_user(struct sieve_tool *tool);
+struct mail_storage_service_ctx *
+sieve_tool_get_mail_storage_service(struct sieve_tool *tool);
 
 /*
  * Configuration
diff --git a/src/lib-sieve/sieve-message.c b/src/lib-sieve/sieve-message.c
index eedf432849da076c5659cf0b1c3c68c69d522ca4..229b2ea7ba248b5b0d93b36df0d5b16163385c30 100644
--- a/src/lib-sieve/sieve-message.c
+++ b/src/lib-sieve/sieve-message.c
@@ -16,6 +16,7 @@
 #include "message-header-decode.h"
 #include "mail-html2text.h"
 #include "mail-storage.h"
+#include "mail-storage-service.h"
 #include "mail-user.h"
 #include "smtp-params.h"
 #include "master-service.h"
@@ -343,8 +344,12 @@ int sieve_message_substitute
 	i_assert(input->blocking);
 
 	if ( msgctx->raw_mail_user == NULL ) {
+		struct mail_storage_service_ctx *storage_service =
+			mail_storage_service_user_get_service_ctx(
+				mail_user->service_user);
 		msgctx->raw_mail_user =
-			raw_storage_create_from_set(mail_user->unexpanded_set_parser);
+			raw_storage_create_from_set(storage_service,
+				mail_user->unexpanded_set_parser);
 	}
 
 	i_stream_seek(input, 0);
diff --git a/src/lib-sieve/util/edit-mail.c b/src/lib-sieve/util/edit-mail.c
index 9cbafa1db6377ced8d6a4c2602fdc0cffc478289..c001090ce5a5a38dbfa322ede19590d59ef9ea91 100644
--- a/src/lib-sieve/util/edit-mail.c
+++ b/src/lib-sieve/util/edit-mail.c
@@ -13,6 +13,7 @@
 #include "message-header-encode.h"
 #include "message-header-decode.h"
 #include "mail-user.h"
+#include "mail-storage-service.h"
 #include "mail-storage-private.h"
 #include "index-mail.h"
 #include "raw-storage.h"
@@ -48,8 +49,12 @@ static unsigned int edit_mail_refcount = 0;
 static struct mail_user *edit_mail_raw_storage_get(struct mail_user *mail_user)
 {
 	if (edit_mail_user == NULL) {
+		struct mail_storage_service_ctx *storage_service =
+			mail_storage_service_user_get_service_ctx(
+				mail_user->service_user);
 		edit_mail_user =
-			raw_storage_create_from_set(mail_user->unexpanded_set_parser);
+			raw_storage_create_from_set(storage_service,
+				mail_user->unexpanded_set_parser);
 	}
 
 	edit_mail_refcount++;
diff --git a/src/lib-sieve/util/mail-raw.c b/src/lib-sieve/util/mail-raw.c
index 74b252c77381dfd36d08ab81059f470eaf191522..8a33b04ed0efb6e7a70b06c2de41a7316e02ea79 100644
--- a/src/lib-sieve/util/mail-raw.c
+++ b/src/lib-sieve/util/mail-raw.c
@@ -12,6 +12,7 @@
 #include "message-address.h"
 #include "mbox-from.h"
 #include "raw-storage.h"
+#include "mail-storage-service.h"
 #include "mail-namespace.h"
 #include "master-service.h"
 #include "master-service-settings.h"
@@ -136,7 +137,11 @@ static struct istream *mail_raw_create_stream
 
 struct mail_user *mail_raw_user_create(struct mail_user *mail_user)
 {
-	return raw_storage_create_from_set(mail_user->unexpanded_set_parser);
+	struct mail_storage_service_ctx *storage_service =
+		mail_storage_service_user_get_service_ctx(
+			mail_user->service_user);
+	return raw_storage_create_from_set(storage_service,
+					   mail_user->unexpanded_set_parser);
 }
 
 /*