While composing a mailing to a group of contacts I noticed that a lot of persons from this group are removed from the recipients list. They all have a valid email-address, and none of the flags like 'no mass mailing', 'unsubscribed', 'on hold', 'deceased', etc. are set.
Finally I found the reason for this strange behavior: All of these persons have an empty 'deceased' flag instead of holding a value of '0'. (These empty flags were somehow generated by an import of contacts in the past).
I didn't check the code but I assume the filter in CiviMail is testing for "deceased==0" instead of "deceased!=1", so an empty flag is incorrectly interpreted as 'deceased'.
As a quick solution I have set all empty deceased-flags to '0' in the database.
As a long-term solution either empty flags should not be allowed in the database, or (better) empty boolean values should be system-wide interpreted consistently as '0'.