diff --git a/src/plugins/imap-filter-sieve/imap-filter-sieve.c b/src/plugins/imap-filter-sieve/imap-filter-sieve.c
index 97e8faa07ae1e30b7592195f639217e117dda5cd..3956f8aa83818fbb84775a7ce59f2f296a6d5c76 100644
--- a/src/plugins/imap-filter-sieve/imap-filter-sieve.c
+++ b/src/plugins/imap-filter-sieve/imap-filter-sieve.c
@@ -1012,7 +1012,7 @@ int imap_sieve_filter_run_mail(struct imap_filter_sieve_context *sctx,
 						    &msgdata, scriptenv);
 	} T_END;
 
-	if (ret < 0 || str_len(sctx->errors) == 0) {
+	if (ret < 0 && str_len(sctx->errors) == 0) {
 		/* Failed, but no user error was logged: log a generic internal
 		   error instead. */
 		sieve_internal_error(user_ehandler, NULL, NULL);