-
Notifications
You must be signed in to change notification settings - Fork 178
Slavko edited this page Jul 14, 2021
·
11 revisions
The purpose of the EBL blacklist is described on http://msbl.org/ebl-purpose.html . I tested EBL since October 2016, in June 2017 it was declared in public beta. How to use EBL in Exim config (requires Exim version 4.87 or higher):
MLDOMAINS = /usr/local/etc/exim/mailing_list_domains
acl_smtp_data = acl_check_data
acl_smtp_mime = acl_check_mime
acl_not_smtp = acl_check_notsmtp
acl_not_smtp_mime = acl_check_notsmtpmime
begin acl
rt:
deny condition = ${if forany{${addresses:$rheader_Reply-To:}}\
{eq{${acl{ea}{$item}}}{caught}}}
log_message = Reply-To: $header_Reply-To: in EBL: $dnslist_text \
From: $header_From:, envelope-from $sender_address, \
recipients=$recipients, Subject: $header_Subject:
message = spam detected
# 419 (Nigerian) scams often sent by humans, do not tell them
# that the spam was detected with EBL http://msbl.org
accept
mimeea:
deny condition = ${if match{$mime_content_type}{text}}
mime_regex = \N(?s)([\w.+=-]+@\w[\w-]*\.[\w.-]+\w)\
(.+?([\w.+=-]+@\w[\w-]*\.[\w.-]+\w))?\
(.+?([\w.+=-]+@\w[\w-]*\.[\w.-]+\w))?\
(.+?([\w.+=-]+@\w[\w-]*\.[\w.-]+\w))?\
(.+?([\w.+=-]+@\w[\w-]*\.[\w.-]+\w))?
condition = ${if forany{$regex1 :$regex3 :$regex5 :$regex7 :$regex9}\
{eq{${acl{ea}{$item}}}{caught}}}
log_message = email address in body $acl_m_ea in EBL: $dnslist_text \
From: $header_From:, envelope-from $sender_address, \
recipients=$recipients, Subject: $header_Subject:
message = spam detected
accept
ea:
accept condition = ${if eqi{$acl_arg1}{$sender_address}}
accept condition = ${lookup{$sender_address_domain}nwildlsearch\
{MLDOMAINS}{1}{0}}
accept condition = ${if eq{}\
{${lookup dnsdb{defer_never,mxh=${domain:$acl_arg1}}}}}
condition = ${if eq{}\
{${lookup dnsdb{defer_never,a=${domain:$acl_arg1}}}}}
warn set acl_m_ea = ${sg{${lc:$acl_arg1}}{\\+.*@}{@}}
condition = ${if match{$acl_m_ea}{@g(oogle)?mail.com}}
set acl_m_ea = ${sg{${local_part:$acl_m_ea}}{\\.}{}}@${domain:$acl_m_ea}
accept condition = ${lookup{${domain:$acl_m_ea}}nwildlsearch\
{MLDOMAINS}{0}{1}}
dnslists = ebl.msbl.org/${sha1:$acl_m_ea}
message = caught
accept
acl_check_notsmtp:
require acl = rt
accept
acl_check_notsmtpmime:
require acl = mimeea
accept
acl_check_mime:
#... (possible other checks before the first "accept")
accept condition = ${if def:header_List-ID:}
require acl = mimeea
#... (the first "accept" if any)
accept
acl_check_data:
#... (other checks before the first "accept")
require acl = rt
#... (the first "accept")
This code checks only dropboxes - email addresses (in Reply-To: and body) which differ from the email address in "From:". You can check also email addresses in "From:" (for that change addresses:$rheader_Reply-To:
to addresses:$rheader_From:,$rheader_Reply-To:
and delete the first accept
line after ea:
), but that'll increase rate of requests to EBL.
The file specified in the MLDOMAINS macro - domains of legitimate mailing lists, add to it others known for you:
groups.io
*.groups.io
^yahoogroups\.
returns.groups.yahoo.com
googlegroups.com
^listserv\.
^lists\.
freebsd.org
exim.org
mailground.net
opennet.ru
subscribe.ru
njabl.org
spammers.dontlike.us
mailop.org
mutt.org