This property often causes confusion. When set, perhaps to a string such as "subject contains \"Hello\"", you would expect that only messages containing "Hello" in the subject are downloaded. However, the POP3 protocol does not provide functionality to download messages based on criteria. POP3 is a very simple protocol that allows for downloading email by message number, and nothing else. Therefore, calling a method such as MailMan.CopyMail will still download all emails. The Filter property however, controls which emails are included in the EmailBundle returned by CopyMail. Non-matching emails are discarded.
That seems dumb — why include a Filter property at all?
Let’s say you have a mailbox containing a large number of emails. You might call GetAllHeaders, with the Filter property set. The headers for all email in the mailbox are downloaded, but only those matching the Filter are included in the EmailBundle. The advantage is that with GetAllHeaders, far less data is downloaded (only the headers), and with the Filter property, there is less processing (fewer emails objects need to be constructed and added to the bundle).
Once you have the EmailBundle, you can get the set of UIDLs by calling EmailBundle.GetUidls. This can then be passed to MailMan.FetchMultiple to download the full emails for the specific set of UIDLs.