From 87ea4d74a051399222b6e0ca0e6f59700c89f923 Mon Sep 17 00:00:00 2001
From: Marco Bettini <marco.bettini@open-xchange.com>
Date: Tue, 9 May 2023 07:29:46 +0000
Subject: [PATCH] lib-sieve: act_redirect_execute() - Pick Message-id even if
 invalid

This avoids adding another Message-id if one is already present but
of bad quality.
---
 src/lib-sieve/cmd-redirect.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/lib-sieve/cmd-redirect.c b/src/lib-sieve/cmd-redirect.c
index 25d2c1627..6a3b0a46e 100644
--- a/src/lib-sieve/cmd-redirect.c
+++ b/src/lib-sieve/cmd-redirect.c
@@ -570,8 +570,13 @@ act_redirect_execute(const struct sieve_action_exec_env *aenv,
 	trans->msg_id = msgdata->id;
 	if (trans->msg_id == NULL) {
 		pool_t pool = sieve_result_pool(aenv->result);
-		trans->msg_id = trans->new_msg_id =
-			p_strdup(pool, sieve_message_get_new_id(svinst));
+		const char *msg_id;
+		if (mail_get_message_id_no_validation(msgdata->mail, &msg_id) > 0)
+			trans->msg_id = p_strdup(pool, msg_id);
+		else {
+			msg_id = sieve_message_get_new_id(svinst);
+			trans->msg_id = trans->new_msg_id = p_strdup(pool, msg_id);
+		}
 	}
 
 	/* Create ID for duplicate database lookup */
-- 
GitLab