diff --git a/src/lib-sieve-tool/sieve-tool.c b/src/lib-sieve-tool/sieve-tool.c
index 19f78e6de5abea5556b93cdd9ac83303e838125f..46cfc830c4dec96848c25c75cf8afeef3aed17ec 100644
--- a/src/lib-sieve-tool/sieve-tool.c
+++ b/src/lib-sieve-tool/sieve-tool.c
@@ -273,6 +273,7 @@ struct sieve_instance *sieve_tool_init_finish
 	(void)mail_user_get_home(tool->mail_user_dovecot, &svenv.home_dir);
 	svenv.hostname = my_hostdomain();
 	svenv.base_dir = tool->mail_user_dovecot->set->base_dir;
+	svenv.temp_dir = tool->mail_user_dovecot->set->mail_temp_dir;
 	svenv.location = SIEVE_ENV_LOCATION_MS;
 	svenv.delivery_phase = SIEVE_DELIVERY_PHASE_POST;
 
diff --git a/src/lib-sieve/sieve-common.h b/src/lib-sieve/sieve-common.h
index ee0f78521050a24b5a839f7072c8da261bdad351..fe2f0ea5adc1bf54e80aec8eba51be6f30970c61 100644
--- a/src/lib-sieve/sieve-common.h
+++ b/src/lib-sieve/sieve-common.h
@@ -159,6 +159,7 @@ struct sieve_instance {
 	const char *hostname;
 	const char *domainname;
 	const char *base_dir;
+	const char *temp_dir;
 
 	/* User environment */
 	const char *username;
diff --git a/src/lib-sieve/sieve-types.h b/src/lib-sieve/sieve-types.h
index 33f2f27a5004ab4c0bfc4f1d121883d59836a39c..2f645f36050ac1e7a10a3d5646a6aa5429be008b 100644
--- a/src/lib-sieve/sieve-types.h
+++ b/src/lib-sieve/sieve-types.h
@@ -60,6 +60,7 @@ struct sieve_environment {
 	const char *base_dir;
 	const char *username;
 	const char *home_dir;
+	const char *temp_dir;
 
 	enum sieve_flag flags;
 	enum sieve_env_location location;
diff --git a/src/lib-sieve/sieve.c b/src/lib-sieve/sieve.c
index f3ae31f9699b503642ef6de6a59e9be894c950e7..d26e6fbaf7514a2c7162c0262354ba8ce6ce3dfe 100644
--- a/src/lib-sieve/sieve.c
+++ b/src/lib-sieve/sieve.c
@@ -62,6 +62,7 @@ struct sieve_instance *sieve_init
 	svinst->base_dir = p_strdup_empty(pool, env->base_dir);
 	svinst->username = p_strdup_empty(pool, env->username);
 	svinst->home_dir = p_strdup_empty(pool, env->home_dir);
+	svinst->temp_dir = p_strdup_empty(pool, env->temp_dir);
 	svinst->flags = env->flags;
 	svinst->env_location = env->location;
 	svinst->delivery_phase = env->delivery_phase;
diff --git a/src/plugins/lda-sieve/lda-sieve-plugin.c b/src/plugins/lda-sieve/lda-sieve-plugin.c
index 13b1f5fb45cc7830c41e467b5a70e9a3b246c55d..4186cef0261bcfd39b3e57d14d9a8c29f5f75ae1 100644
--- a/src/plugins/lda-sieve/lda-sieve-plugin.c
+++ b/src/plugins/lda-sieve/lda-sieve-plugin.c
@@ -911,6 +911,7 @@ static int lda_sieve_deliver_mail
 	svenv.home_dir = srctx.home_dir;
 	svenv.hostname = mdctx->set->hostname;
 	svenv.base_dir = mdctx->dest_user->set->base_dir;
+	svenv.temp_dir = mdctx->dest_user->set->mail_temp_dir;
 	svenv.flags = SIEVE_FLAG_HOME_RELATIVE;
 	svenv.location = SIEVE_ENV_LOCATION_MDA;
 	svenv.delivery_phase = SIEVE_DELIVERY_PHASE_DURING;