diff --git a/src/lib-sieve/plugins/duplicate/ext-duplicate-common.c b/src/lib-sieve/plugins/duplicate/ext-duplicate-common.c
index db3c9182988a44f11d09e9015807b1e51c37e33c..be2a40b53786f311a1e5d405f1f7a79142ef1655 100644
--- a/src/lib-sieve/plugins/duplicate/ext-duplicate-common.c
+++ b/src/lib-sieve/plugins/duplicate/ext-duplicate-common.c
@@ -113,7 +113,7 @@ act_duplicate_mark_finish(const struct sieve_action_exec_env *aenv, bool last,
 	struct act_duplicate_mark_data *data =
 		(struct act_duplicate_mark_data *)aenv->action->context;
 
-	if (status != SIEVE_EXEC_OK)
+	if (!last || status != SIEVE_EXEC_OK)
 		return;
 
 	/* Message was handled successfully, so track duplicate for this