diff --git a/src/lib-sieve/sieve-result.c b/src/lib-sieve/sieve-result.c
index 6f7c62c4a68d86405dd9ff2fd9368a36e0648753..d960c34effdbbecbda183e338d94463c2251b3c2 100644
--- a/src/lib-sieve/sieve-result.c
+++ b/src/lib-sieve/sieve-result.c
@@ -1326,8 +1326,10 @@ static int sieve_result_transaction_commit_or_rollback
 
 	if ( *implicit_keep && keep != NULL ) *keep = TRUE;
 
-	if ( commit_status == SIEVE_EXEC_OK )
-		result->executed_delivery = seen_delivery;
+	if ( commit_status == SIEVE_EXEC_OK ) {
+		result->executed_delivery =
+			result->executed_delivery || seen_delivery;
+	}
 
 	return commit_status;
 }