Cabotine, take a look at
Bug 12701 – Define a default filter rule for spam that users can apply before custom filters
The purpose of the bug has moved around somewhat, but (a) if implemented, I think it'll let you do a filter on "is spam" and then apply a "mark as read" action. And (b) if you're using 4.5.4, then you should have the pre-5.0.2 behavior, which applies filter rules before doing spam filing.
Although I wouldn't recommend staying on 4.5.4 nevertheless you could possibly use the "header named" filter action to look for X-Spam-Flag: YES and then mark the message as read.
If you are on a more recent ZCS then check out the zimbraSpamApplyUserFilters attribute as described at
Bug 23886 – Run spam test before user filters during message delivery. But note that attribute may disappear at some point (or even have done so already).