背景:我正在运行一个包含30多个域的Plesk CentOS 6.7服务器。我收到来自特定TLD的大量垃圾邮件(在这种情况下为.top)。我正在运行SpamAssassin并使用RBL列表(xbl.spamhaus.org)。 SpamAssassin将这些邮件中的大多数标记为垃圾邮件,但足以让我的服务器受到Google邮件服务器的限制(由于我的某些用户的电子邮件帐户被转发到Gmail)。我从这个域获得了ZERO合法邮件,最近内存使用量增加了几个百分点,所以我试图通过阻止这些邮件甚至到达Postfix来节省一些开销并提高我的服务器声誉。
我想为fail2ban编写一个匹配来自此TLD的连接的过滤器,并禁止相应的IP地址。
以下是示例日志条目:
Mar 20 03:12:43 mydomain postfix/smtpd[6557]: connect from whatevermonkey.top[66.199.245.168]
Mar 20 05:07:38 mydomain postfix/smtpd[13299]: connect from someonecat.top[216.169.126.67]
那么任何人都可以帮助我插入一个可以插入fail2ban的REGEX,它可以匹配包含'.top'TLD的所有'connect from'吗?
我一直在尝试基于我的postfix-sasl过滤器(下面)来解决这个问题,但是我的正则表达式还不够强...这是我的postfix-sasl的工作过滤器,它匹配失败的登录尝试:
failregex = ^%(__prefix_line)swarning: [-._\w]+\[<HOST>\]: SASL ((?i)LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed(: [ A-Za-z0-9+/:]*={0,2})?\s*$
同样,我只想匹配前面有'somespammyserver.top'的IP地址。非常感谢任何帮助。
答案 0 :(得分:1)
这样的事可能会有所帮助:
connect from [\w.]+\.top\[([.\d]+)\]
# look for connect from literally
# followed by \w = a-z0-9_ and . greedily
# followed by .top[
# capture everything that is a digit or a dot into the first group
# (hence the ())
# followed immediately by a closing bracket ]