diff --git a/ChangeLog b/ChangeLog index d6f15039..3e5e4b6e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -68,6 +68,7 @@ configuration before relying on it. failregex / ignoreregex * [..e019ab7] Multiple instances of the same action are allowed in the same jail -- use actname option to disambiguate. + * Add honeypot email address to exim-spam filter as argument ver. 0.8.12 (2013/12/XX) - things-can-only-get-better ----------- diff --git a/config/filter.d/exim-spam.conf b/config/filter.d/exim-spam.conf index 7c02215a..733c884b 100644 --- a/config/filter.d/exim-spam.conf +++ b/config/filter.d/exim-spam.conf @@ -1,6 +1,22 @@ # Fail2Ban filter for exim the spam rejection messages # -## For the SA: Action: silently tossed message... to be logged exim's SAdevnull option needs to be used. +# Honeypot traps are very useful for fighting spam. You just activate an email +# address on your domain that you do not intend to use at all, and that normal +# people do not risk to try for contacting you. It may be something that +# spammers often test. You can also hide the address on a web page to be picked +# by spam spiders. Or simply parse your mail logs for an invalid address +# already being frequently targeted by spammers. Enable the address and +# redirect it to the blackhole. In Exim's alias file, you would add the +# following line (assuming the address is honeypot@yourdomain.com): +# +# honeypot: :blackhole: +# +# For the SA: Action: silently tossed message... to be logged exim's SAdevnull option needs to be used. +# +# To this filter use the jail.local should contain in the right jail: +# +# filter = exim-spam[honeypot=honeypot@yourdomain.com] +# [INCLUDES] @@ -13,10 +29,20 @@ before = exim-common.conf failregex = ^%(pid)s \S+ F=(<>|\S+@\S+) %(host_info)srejected by local_scan\(\): .{0,256}$ ^%(pid)s %(host_info)sF=(<>|[^@]+@\S+) rejected RCPT [^@]+@\S+: .*dnsbl.*\s*$ ^%(pid)s \S+ %(host_info)sF=(<>|[^@]+@\S+) rejected after DATA: This message contains a virus \(\S+\)\.\s*$ + ^%(pid)s \S+ SA: Action: flagged as Spam but accepted: score=\d+\.\d+ required=\d+\.\d+ \(scanned in \d+/\d+ secs \| Message-Id: \S+\)\. From \S+ \(host=\S+ \[\]\) for $ ^%(pid)s \S+ SA: Action: silently tossed message: score=\d+\.\d+ required=\d+\.\d+ trigger=\d+\.\d+ \(scanned in \d+/\d+ secs \| Message-Id: \S+\)\. From \S+ \(host=(\S+ )?\[\]\) for \S+$ ignoreregex = +[Init] + +# Option: honeypot +# Notes.: honeypot is an email address that isn't published anywhere that a +# legitimate email sender would send email too. +# Values: email address + +honeypot = trap@example.com + # DEV Notes: # The %(host_info) defination contains a match # diff --git a/fail2ban/tests/files/logs/exim-spam b/fail2ban/tests/files/logs/exim-spam index 44bba4ab..07cd0583 100644 --- a/fail2ban/tests/files/logs/exim-spam +++ b/fail2ban/tests/files/logs/exim-spam @@ -14,6 +14,9 @@ 2013-06-15 11:20:36 [2516] 1Unmew-0000ea-SE H=egeftech.static.otenet.gr [83.235.177.148]:32706 I=[1.2.3.4]:25 F=auguriesvbd40@google.com rejected after DATA: This message contains a virus (Sanesecurity.Junk.39934.UNOFFICIAL). # failJSON: { "time": "2013-06-16T02:50:43", "match": true , "host": "111.67.203.114" } 2013-06-16 02:50:43 H=dbs.marsukov.com [111.67.203.114] F= rejected RCPT : rejected because 111.67.203.114 is in a black list at dnsbl.sorbs.net\nCurrently Sending Spam See: http://www.sorbs.net/lookup.shtml?111.67.203.114 +# https://github.com/fail2ban/fail2ban/issues/541 +# failJSON: { "time": "2013-12-30T00:24:50", "match": true , "host": "178.123.108.196" } +2013-12-30 00:24:50 1VxPit-000MMd-U4 SA: Action: flagged as Spam but accepted: score=8.2 required=5.0 (scanned in 6/6 secs | Message-Id: 008701cf04ed_24497d70_6cdc7850_@xxx.xx). From (host=ip-4.net-3-2-1.rev.xxx.xx [178.123.108.196]) for trap@example.com # https://github.com/fail2ban/fail2ban/issues/533 # failJSON: { "time": "2013-12-29T15:34:12", "match": true , "host": "188.76.45.72" } 2013-12-29 15:34:12 1VxHRO-000NiI-Ly SA: Action: silently tossed message: score=31.0 required=5.0 trigger=30.0 (scanned in 6/6 secs | Message-Id: etPan.09bd0c40.c3d5f675.fdf7@server.local). From (host=72.45.76.188.dynamic.jazztel.es [188.76.45.72]) for me@my.com @@ -21,4 +24,3 @@ # failJSON: { "time": "2013-12-29T15:39:11", "match": true , "host": "178.123.108.196" } 2013-12-29 15:39:11 1VxHWD-000NuW-83 SA: Action: silently tossed message: score=35.8 required=5.0 trigger=30.0 (scanned in 6/6 secs | Message-Id: 1VxHWD-000NuW-83). From <> (host=NULL [178.123.108.196]) for me@my.com -