From 7da1a76d2bff5f43aee2733333d3b1f25907cb87 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan@rename-it.nl>
Date: Sat, 22 Dec 2012 22:27:34 +0100
Subject: [PATCH] lib-sieve: Prevent passing NULL sender to raw mail storage
 when active message is substituted.

---
 src/lib-sieve/sieve-config.h  | 2 ++
 src/lib-sieve/sieve-message.c | 5 ++++-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/lib-sieve/sieve-config.h b/src/lib-sieve/sieve-config.h
index e7158ad4a..362b4f077 100644
--- a/src/lib-sieve/sieve-config.h
+++ b/src/lib-sieve/sieve-config.h
@@ -11,4 +11,6 @@
 #define SIEVE_SCRIPT_FILEEXT "sieve"
 #define SIEVE_BINARY_FILEEXT "svbin"
 
+#define DEFAULT_ENVELOPE_SENDER "MAILER-DAEMON"
+
 #endif
diff --git a/src/lib-sieve/sieve-message.c b/src/lib-sieve/sieve-message.c
index fe9bf53e2..05e9b273e 100644
--- a/src/lib-sieve/sieve-message.c
+++ b/src/lib-sieve/sieve-message.c
@@ -357,6 +357,7 @@ int sieve_message_substitute
 	struct sieve_message_version *version;
 	struct mailbox_header_lookup_ctx *headers_ctx;
 	struct mailbox *box = NULL;
+	const char *sender;
 	int ret;
 
 	if ( msgctx->raw_mail_user == NULL ) {
@@ -367,8 +368,10 @@ int sieve_message_substitute
 	}
 
 	i_stream_seek(input, 0);
+	sender = sieve_message_get_sender(msgctx);
+	sender = (sender == NULL ? DEFAULT_ENVELOPE_SENDER : sender );
 	ret = raw_mailbox_alloc_stream(msgctx->raw_mail_user, input, (time_t)-1,
-		sieve_message_get_sender(msgctx), &box);
+		sender, &box);
 
 	if ( ret < 0 ) {
 		sieve_sys_error(msgctx->svinst, "can't open substituted mail as raw: %s",
-- 
GitLab