diff --git a/src/lib-sieve/plugins/enotify/mailto/ntfy-mailto.c b/src/lib-sieve/plugins/enotify/mailto/ntfy-mailto.c
index 8bf564b73a73c6c416fad38272cce651f4f38f77..5e61af72c6f9efe0596db2da5a7329f1eddfad1a 100644
--- a/src/lib-sieve/plugins/enotify/mailto/ntfy-mailto.c
+++ b/src/lib-sieve/plugins/enotify/mailto/ntfy-mailto.c
@@ -497,7 +497,7 @@ static int ntfy_mailto_send
 		else if ( svinst->user_email != NULL )
 			from_smtp = sieve_address_to_string(svinst->user_email);
 		else
-			from_smtp = senv->postmaster_address;
+			from_smtp = sieve_get_postmaster_address(senv);
 	}
 
 	/* Determine message from address */
@@ -668,7 +668,7 @@ static int ntfy_mailto_action_execute
 		(nenv->flags & SIEVE_EXECUTE_FLAG_NO_ENVELOPE) == 0 )
 		owner_email = sieve_message_get_final_recipient(nenv->msgctx);
 	if ( owner_email == NULL )
-		owner_email = senv->postmaster_address;
+		owner_email = sieve_get_postmaster_address(senv);
 	i_assert( owner_email != NULL );
 
 	/* Is the message an automatic reply ? */
diff --git a/src/lib-sieve/plugins/notify/cmd-notify.c b/src/lib-sieve/plugins/notify/cmd-notify.c
index 75878abfc24f8cbff85a3f121cb03db3ecb7d744..d261ddce565dc03e64d6061f31700f29fce1025c 100644
--- a/src/lib-sieve/plugins/notify/cmd-notify.c
+++ b/src/lib-sieve/plugins/notify/cmd-notify.c
@@ -724,7 +724,7 @@ static bool act_notify_send
 	}
 
 	rfc2822_header_printf(msg, "From",
-		"Postmaster <%s>", senv->postmaster_address);
+		"Postmaster <%s>", sieve_get_postmaster_address(senv));
 
 	rfc2822_header_write(msg, "Subject", "[SIEVE] New mail notification");
 
@@ -746,10 +746,12 @@ static bool act_notify_send
 	rfc2822_header_write(msg, "Message-ID", outmsgid);
 
 	if ( (aenv->flags & SIEVE_EXECUTE_FLAG_NO_ENVELOPE) == 0 &&
-		sieve_message_get_sender(aenv->msgctx) != NULL )
-		sctx = sieve_smtp_start(senv, senv->postmaster_address);
-	else
+		sieve_message_get_sender(aenv->msgctx) != NULL ) {
+		sctx = sieve_smtp_start(senv,
+			sieve_get_postmaster_address(senv));
+	} else {
 		sctx = sieve_smtp_start(senv, NULL);
+	}
 
 	/* Add all recipients (and compose To header field) */
 	to = t_str_new(128);
diff --git a/src/lib-sieve/plugins/vacation/cmd-vacation.c b/src/lib-sieve/plugins/vacation/cmd-vacation.c
index 3c033af94eea449f202add2e474bda89f0e9fe84..2195e57a0c252baba88e0598909dde6039b6ed9d 100644
--- a/src/lib-sieve/plugins/vacation/cmd-vacation.c
+++ b/src/lib-sieve/plugins/vacation/cmd-vacation.c
@@ -1031,8 +1031,10 @@ static int act_vacation_send
 		rfc2822_header_utf8_printf(msg, "From", "%s", ctx->from);
 	else if ( reply_from != NULL )
 		rfc2822_header_printf(msg, "From", "<%s>", reply_from);
-	else
-		rfc2822_header_printf(msg, "From", "Postmaster <%s>", senv->postmaster_address);
+	else {
+		rfc2822_header_printf(msg, "From", "Postmaster <%s>",
+			sieve_get_postmaster_address(senv));
+	}
 
 	rfc2822_header_printf(msg, "To", "%s", reply_to);
 
diff --git a/src/lib-sieve/plugins/vnd.dovecot/report/cmd-report.c b/src/lib-sieve/plugins/vnd.dovecot/report/cmd-report.c
index 18c93cc0c6d33abfe76406d09e24ccde55274b0a..38af36c9e4d7384936154386d1442c7cfde8d669 100644
--- a/src/lib-sieve/plugins/vnd.dovecot/report/cmd-report.c
+++ b/src/lib-sieve/plugins/vnd.dovecot/report/cmd-report.c
@@ -490,8 +490,8 @@ static int act_report_send
 	if ( (ret=sieve_address_source_get_address
 		(&report_from, svinst, senv, msgctx,
 			aenv->flags, &from)) <= 0 || from == NULL || *from == '\0') {
-		from = t_strdup_printf
-			("Postmaster <%s>", senv->postmaster_address);
+		from = t_strdup_printf("Postmaster <%s>",
+			sieve_get_postmaster_address(senv));
 	}
 
 	/* Start message */
diff --git a/src/lib-sieve/sieve-actions.c b/src/lib-sieve/sieve-actions.c
index f4a07590267c83c47d800de569ef2688175c2272..1d05e2fa36f669631b293c9b4ef0b4b9276cb035 100644
--- a/src/lib-sieve/sieve-actions.c
+++ b/src/lib-sieve/sieve-actions.c
@@ -849,7 +849,7 @@ static int sieve_action_do_reject_mail
 	rfc2822_header_write(hdr, "Message-ID", new_msgid);
 	rfc2822_header_write(hdr, "Date", message_date_create(ioloop_time));
 	rfc2822_header_printf(hdr, "From", "Mail Delivery Subsystem <%s>",
-		senv->postmaster_address);
+		sieve_get_postmaster_address(senv));
 	rfc2822_header_printf(hdr, "To", "<%s>", sender);
 	rfc2822_header_write(hdr, "Subject", "Automatically rejected mail");
 	rfc2822_header_write(hdr, "Auto-Submitted", "auto-replied (rejected)");
diff --git a/src/lib-sieve/sieve-address-source.c b/src/lib-sieve/sieve-address-source.c
index 19a6bf78617ba56ed124328c9eea565ecb69a791..e697bfffbfd07aea3ea72a5602920f8976593ac7 100644
--- a/src/lib-sieve/sieve-address-source.c
+++ b/src/lib-sieve/sieve-address-source.c
@@ -109,7 +109,7 @@ int sieve_address_source_get_address
 		*addr_r = sieve_address_to_string(svinst->user_email);
 		return 1;
 	case SIEVE_ADDRESS_SOURCE_POSTMASTER:
-		*addr_r = senv->postmaster_address;
+		*addr_r = sieve_get_postmaster_address(senv);
 		return 1;
 	case SIEVE_ADDRESS_SOURCE_EXPLICIT:
 		*addr_r = sieve_address_to_string(asrc->address);
diff --git a/src/lib-sieve/sieve-common.h b/src/lib-sieve/sieve-common.h
index 273f6712176534858af308c13f3aa1d4d9766b56..401945f9db8db50608c643794002e83f2d5b337d 100644
--- a/src/lib-sieve/sieve-common.h
+++ b/src/lib-sieve/sieve-common.h
@@ -221,4 +221,11 @@ void sieve_trace_log_write_line
 const char *sieve_get_user_email
 	(struct sieve_instance *svinst);
 
+/*
+ * Postmaster address 
+ */
+
+const char *sieve_get_postmaster_address
+(const struct sieve_script_env *senv);
+
 #endif /* __SIEVE_COMMON_H */
diff --git a/src/lib-sieve/sieve-types.h b/src/lib-sieve/sieve-types.h
index fdcc5823efbd1a37dce77de95623957d3c5b31e8..3c858b31e028adfcfbf3081780e9dfdddee10d70 100644
--- a/src/lib-sieve/sieve-types.h
+++ b/src/lib-sieve/sieve-types.h
@@ -183,7 +183,6 @@ struct sieve_script_env {
 	/* Mail-related */
 	struct mail_user *user;
 	const char *default_mailbox;
-	const char *postmaster_address;
 	bool mailbox_autocreate;
 	bool mailbox_autosubscribe;
 
diff --git a/src/lib-sieve/sieve.c b/src/lib-sieve/sieve.c
index 4273b8001bef75854e2283222075914e5c1a5f8a..231ff28ad603a35e1e5301b0b045a2b2b477fd67 100644
--- a/src/lib-sieve/sieve.c
+++ b/src/lib-sieve/sieve.c
@@ -10,6 +10,7 @@
 #include "eacces-error.h"
 #include "home-expand.h"
 #include "hostpid.h"
+#include "mail-user.h"
 
 #include "sieve-settings.h"
 #include "sieve-extensions.h"
@@ -1071,3 +1072,19 @@ const char *sieve_get_user_email
 	}
 	return NULL;
 }
+
+/*
+ * Postmaster address
+ */
+
+const char *sieve_get_postmaster_address
+(const struct sieve_script_env *senv)
+{
+	const struct mail_storage_settings *mail_set =
+		mail_user_set_get_storage_set(senv->user);
+
+	i_assert(mail_set->postmaster_address != NULL &&
+		*mail_set->postmaster_address != '\0');
+	return mail_set->postmaster_address;
+}
+
diff --git a/src/plugins/imapsieve/imap-sieve.c b/src/plugins/imapsieve/imap-sieve.c
index 8df831b2c70402df8f0c680eb5c8131888d02192..9c7edf374b57644a6a0708e89c14c171b227ef0d 100644
--- a/src/plugins/imapsieve/imap-sieve.c
+++ b/src/plugins/imapsieve/imap-sieve.c
@@ -65,7 +65,8 @@ struct imap_sieve *imap_sieve_init(struct client *client)
 	struct sieve_environment svenv;
 	struct imap_sieve *isieve;
 	struct mail_user *user = client->user;
-	const struct lda_settings *lda_set = client->lda_set;
+	const struct mail_storage_settings *mail_set =
+		mail_user_set_get_storage_set(user);
 	bool debug = user->mail_debug;
 	pool_t pool;
 
@@ -79,7 +80,7 @@ struct imap_sieve *imap_sieve_init(struct client *client)
 	i_zero(&svenv);
 	svenv.username = user->username;
 	(void)mail_user_get_home(user, &svenv.home_dir);
-	svenv.hostname = lda_set->hostname;
+	svenv.hostname = mail_set->hostname;
 	svenv.base_dir = user->set->base_dir;
 	svenv.flags = SIEVE_FLAG_HOME_RELATIVE;
 	svenv.location = SIEVE_ENV_LOCATION_MS;
@@ -698,7 +699,6 @@ int imap_sieve_run_mail
 	struct imap_sieve *isieve = isrun->isieve;
 	struct sieve_instance *svinst = isieve->svinst;
 	struct mail_user *user = isieve->client->user;
-	const struct lda_settings *lda_set = isieve->client->lda_set;
 	struct sieve_message_data msgdata;
 	struct sieve_script_env scriptenv;
 	struct sieve_exec_status estatus;
@@ -740,7 +740,6 @@ int imap_sieve_run_mail
 		i_zero(&estatus);
 		scriptenv.default_mailbox = mailbox_get_vname(mail->box);
 		scriptenv.user = user;
-		scriptenv.postmaster_address = lda_set->postmaster_address;
 		scriptenv.smtp_start = imap_sieve_smtp_start;
 		scriptenv.smtp_add_rcpt = imap_sieve_smtp_add_rcpt;
 		scriptenv.smtp_send = imap_sieve_smtp_send;
diff --git a/src/plugins/lda-sieve/lda-sieve-plugin.c b/src/plugins/lda-sieve/lda-sieve-plugin.c
index 8acd6daa1d04fc78a6c8a2e429d5c4859967f795..30d91b65a103690cbdc384a437b3eb7762d7b29d 100644
--- a/src/plugins/lda-sieve/lda-sieve-plugin.c
+++ b/src/plugins/lda-sieve/lda-sieve-plugin.c
@@ -850,7 +850,6 @@ static int lda_sieve_execute
 		scriptenv.mailbox_autocreate = mdctx->set->lda_mailbox_autocreate;
 		scriptenv.mailbox_autosubscribe = mdctx->set->lda_mailbox_autosubscribe;
 		scriptenv.user = mdctx->dest_user;
-		scriptenv.postmaster_address = mdctx->set->postmaster_address;
 		scriptenv.smtp_start = lda_sieve_smtp_start;
 		scriptenv.smtp_add_rcpt = lda_sieve_smtp_add_rcpt;
 		scriptenv.smtp_send = lda_sieve_smtp_send;
@@ -887,6 +886,8 @@ static int lda_sieve_deliver_mail
 (struct mail_deliver_context *mdctx, struct mail_storage **storage_r)
 {
 	struct lda_sieve_run_context srctx;
+	const struct mail_storage_settings *mail_set =
+		mail_user_set_get_storage_set(mdctx->dest_user);
 	bool debug = mdctx->dest_user->mail_debug;
 	struct sieve_environment svenv;
 	int ret = 0;
@@ -902,7 +903,7 @@ static int lda_sieve_deliver_mail
 	memset((void*)&svenv, 0, sizeof(svenv));
 	svenv.username = mdctx->dest_user->username;
 	svenv.home_dir = srctx.home_dir;
-	svenv.hostname = mdctx->set->hostname;
+	svenv.hostname = mail_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;
diff --git a/src/sieve-tools/sieve-filter.c b/src/sieve-tools/sieve-filter.c
index fcc47529273f713fe3e8801fd2f01810303b7f1c..9ea3305fb95358a96e5ed9148b2ab8722ab3ed2f 100644
--- a/src/sieve-tools/sieve-filter.c
+++ b/src/sieve-tools/sieve-filter.c
@@ -548,7 +548,6 @@ int main(int argc, char **argv)
 	scriptenv.mailbox_autocreate = FALSE;
 	scriptenv.default_mailbox = dst_mailbox;
 	scriptenv.user = mail_user;
-	scriptenv.postmaster_address = "postmaster@example.com";
 
 	/* Compose filter context */
 	i_zero(&sfdata);
diff --git a/src/sieve-tools/sieve-test.c b/src/sieve-tools/sieve-test.c
index 8d37fbfebacdd913bf49e6096073fe7cef80742e..eaae59b0f4d7f89667952cc2a0713b0090b8fc04 100644
--- a/src/sieve-tools/sieve-test.c
+++ b/src/sieve-tools/sieve-test.c
@@ -309,7 +309,6 @@ int main(int argc, char **argv)
 		i_zero(&scriptenv);
 		scriptenv.default_mailbox = mailbox;
 		scriptenv.user = sieve_tool_get_mail_user(sieve_tool);
-		scriptenv.postmaster_address = "postmaster@example.com";
 		scriptenv.smtp_start = sieve_smtp_start;
 		scriptenv.smtp_add_rcpt = sieve_smtp_add_rcpt;
 		scriptenv.smtp_send = sieve_smtp_send;
diff --git a/src/testsuite/testsuite-mailstore.c b/src/testsuite/testsuite-mailstore.c
index 534b87390225d6260222141568605ce2bb4efb4d..3035a55590fca4fed746b0a6c21b30d46a8b166f 100644
--- a/src/testsuite/testsuite-mailstore.c
+++ b/src/testsuite/testsuite-mailstore.c
@@ -71,7 +71,7 @@ void testsuite_mailstore_init(void)
 	}
 	
 	mail_user_dovecot = sieve_tool_get_mail_user(sieve_tool);
-	mail_user = mail_user_alloc("testsuite mail user",
+	mail_user = mail_user_alloc("testsuite-mail-user@example.org",
 		mail_user_dovecot->set_info, mail_user_dovecot->unexpanded_set);
 	mail_user->autocreated = TRUE;
 	if (t_get_working_dir(&cwd, &error) < 0)
diff --git a/src/testsuite/testsuite-script.c b/src/testsuite/testsuite-script.c
index 40b1102a6ce562c5afea88f00ba971c45c4bca28..6d3a1cc67f770f7ff99c13151615cb51e0318869 100644
--- a/src/testsuite/testsuite-script.c
+++ b/src/testsuite/testsuite-script.c
@@ -108,7 +108,6 @@ bool testsuite_script_run(const struct sieve_runtime_env *renv)
 	/* Compose script execution environment */
 	i_zero(&scriptenv);
 	scriptenv.default_mailbox = "INBOX";
-	scriptenv.postmaster_address = "postmaster@example.com";
 	scriptenv.smtp_start = NULL;
 	scriptenv.smtp_add_rcpt = NULL;
 	scriptenv.smtp_send = NULL;
@@ -181,7 +180,6 @@ bool testsuite_script_multiscript
 	/* Compose script execution environment */
 	i_zero(&scriptenv);
 	scriptenv.default_mailbox = "INBOX";
-	scriptenv.postmaster_address = "postmaster@example.com";
 	scriptenv.smtp_start = NULL;
 	scriptenv.smtp_add_rcpt = NULL;
 	scriptenv.smtp_send = NULL;
diff --git a/src/testsuite/testsuite.c b/src/testsuite/testsuite.c
index 315d01fa9e18392b65da9be35b6143b5d6074858..94c60f7c4a574f3d5ec86bc2b4c6dafa95845713 100644
--- a/src/testsuite/testsuite.c
+++ b/src/testsuite/testsuite.c
@@ -182,7 +182,6 @@ int main(int argc, char **argv)
 		i_zero(&scriptenv);
 		scriptenv.user = testsuite_mailstore_get_user();
 		scriptenv.default_mailbox = "INBOX";
-		scriptenv.postmaster_address = "postmaster@example.com";
 		scriptenv.smtp_start = testsuite_smtp_start;
 		scriptenv.smtp_add_rcpt = testsuite_smtp_add_rcpt;
 		scriptenv.smtp_send = testsuite_smtp_send;