There should be three types of "Filters"
- Message Filters which take in Messages Lists and return Message Lists
- Message Views which take in Messages Lists and return Message Lists
- Message Actions which take in Messages Lists and return success/failure
- Filters and Views are passive; they don't affect the underlying message.
- Actions affect the message.
- Views alter the users' view of messages, they are a transformation but they don't affect the underlying message.
- Filters change the number of messages; they select messages biased on criteria and return that list.
The Filters and Views can be chained, and then supplied to an Action.
A Spam "Filters" is a special kind of Filter (It returns the Message List containing only Spam)
See: http://www.mozilla.org/projects/grendel/filters.html for a discussion on Filters