diff --git a/src/lib-sieve/sieve-result.c b/src/lib-sieve/sieve-result.c index 98871be916828d1bd0370099c23f3c3b1e1cfae9..85dc5264bebb9e0f78dd2bc508c40f4da01ee84a 100644 --- a/src/lib-sieve/sieve-result.c +++ b/src/lib-sieve/sieve-result.c @@ -1476,7 +1476,9 @@ int sieve_result_execute(struct sieve_result *result, bool last, bool *keep, /* Perform implicit keep if necessary */ result_status = status; - if (result->executed || status != SIEVE_EXEC_TEMP_FAILURE) { + if (result->executed || + (status != SIEVE_EXEC_TEMP_FAILURE && + status != SIEVE_EXEC_RESOURCE_LIMIT)) { /* Execute implicit keep if the transaction failed or when the implicit * keep was not canceled during transaction. */