diff --git a/afew/filters/HeaderMatchingFilter.py b/afew/filters/HeaderMatchingFilter.py index 5a735f7..7379dbc 100644 --- a/afew/filters/HeaderMatchingFilter.py +++ b/afew/filters/HeaderMatchingFilter.py @@ -22,7 +22,14 @@ def __init__(self, database, **kwargs): def handle_message(self, message): if self.header is not None and self.pattern is not None: if not self._tag_blacklist.intersection(message.get_tags()): - value = message.get_header(self.header) + if not isinstance(self.header, list): + self.header = [self.header] + + try: + value = next(filter(None, map(message.get_header, self.header))) + except StopIteration: + return + match = self.pattern.search(value) if match: sub = (lambda tag: diff --git a/afew/filters/SpamFilter.py b/afew/filters/SpamFilter.py index 9c88a38..b87efb3 100644 --- a/afew/filters/SpamFilter.py +++ b/afew/filters/SpamFilter.py @@ -6,8 +6,8 @@ class SpamFilter(HeaderMatchingFilter): message = 'Tagging spam messages' - header = 'X-Spam-Flag' - pattern = 'YES' + header = ['X-Spam-Flag', 'X-Spam', 'X-Bogosity'] + pattern = 'YES|Spam' def __init__(self, database, tags='+spam', spam_tag=None, **kwargs): if spam_tag is not None: