# Fail2Ban filter for exim # # This includes the rejection messages of exim. For spam and filter # related bans use the exim-spam.conf # [INCLUDES] # Read common prefixes. If any customizations available -- read them from # exim-common.local before = exim-common.conf [Definition] prefregex = ^%(__prefix_line)s.+$ failregex = ^%(host_info)s sender verify fail for <\S+>: (?:Unknown user|Unrouteable address|all relevant MX records point to non-existent hosts)\s*$ ^\s?\w+ authenticator failed for%(host_info)s: 535 Incorrect authentication data(?: \(set_id=.*\)|: \d+ Time\(s\))?\s*$ ^%(host_info)s rejected RCPT [^@]+@\S+: (?:relay not permitted|Sender verify failed|Unknown user|Unrouteable address)\s*$ ^\s?SMTP protocol synchronization error \([^)]*\): rejected (?:connection from|"\S+")%(host_info)s (?:next )?input=".*"\s*$ ^\s?SMTP call from%(host_info)s dropped: too many (?:(?:nonmail|unrecognized) commands|syntax or protocol errors) ^\s?SMTP protocol error in "[^"]+(?:"+[^"]*(?="))*?"%(host_info)s [A-Z]+ (?:command used when not advertised|authentication mechanism not supported)\s*$ ^\s?no MAIL in SMTP connection from%(host_info)s ^\s?(?:[\w\-]+ )?SMTP connection from%(host_info)s closed by DROP in ACL\s*$ > mdre-aggressive = ^\s?no host name found for IP address $ ^\s?no IP address found for host \S+ \(during SMTP connection from%(host_info)s\)$ mdre-normal = # Parameter `mode` - `normal` or `aggressive`. # Aggressive mode can be used to match flood and ddos-similar log-entries like: # 'no host found for IP', 'no IP found for host'. # Note this is not an authentication failures, so it may produce lots of false # positives on misconfigured MTAs. # Ex.: # filter = exim[mode=aggressive] mode = normal ignoreregex = # DEV Notes # ----------- # The %(host_info) definition contains a match. No space before. See exim-common.conf # # SMTP protocol synchronization error \([^)]*\) <- This needs to be non-greedy # to void capture beyond ")" to avoid a DoS Injection vulnerability as input= is # user injectable data.