Alex wrote:
> Hi,
> 
> On Wed, Nov 2, 2016 at 10:36 AM, Kris Deugau <kdeu...@vianet.ca> wrote:
>> Alex wrote:
>>> I've had to lower the score on my header XBL check because it was
>>> triggering on so many dynamic IPs that were clearly reassigned to new
>>> users, then being blacklisted. I'd appreciate it if anyone could
>>> provide additional input on how they might use something like this.
>>>
>>> header   RCVD_IN_XBL_ALL    eval:check_rbl_sub('zen', '127.0.0.[45678]')
>>> describe RCVD_IN_XBL_ALL    Received via a relay in Spamhaus SBL-XBL
>>> tflags   RCVD_IN_XBL_ALL    net
>>> score    RCVD_IN_XBL_ALL    0.01
>>
>> If this is really hitting on lots of legitimate mail, you probably have
>> a trust path issue.  This should only check the IP that handed the
>> message to your mail server.  It should NOT be checking the IP that the
>> message originated from unless you really want to refuse mail from any
>> IP that has recently had an infected PC on or behind it.
>>
>> You shouldn't need to (re)define this in any case, and I'm not certain
>> without rereading the man page if or how this will behave somewhat
>> differently to the stock RCVD_IN_XBL rule - that could be the problem
>> all on its own.
> 
> Yes, as the rule currently stands, it was hitting on any Received
> header, including the origin IP from which the message was sent.
> Should there be some sort of "last-external" to signify which IP to
> check?

Yes, as per the stock rule, and the Mail::SpamAssassin::Conf man page:

header RCVD_IN_XBL              eval:check_rbl('zen-lastexternal',
'zen.spamhaus.org.', '^127\.0\.0\.[45678]$')

Why are you (re)defining a near-duplicate of this?  Was the stock rule
as above also misbehaving?

Note that the Spamhaus rules are split up somewhat as they're intended
for different IPs:

header __RCVD_IN_ZEN       eval:check_rbl('zen', 'zen.spamhaus.org.')
header RCVD_IN_SBL         eval:check_rbl_sub('zen', '127.0.0.2')
header RCVD_IN_SBL_CSS     eval:check_rbl_sub('zen', '127.0.0.3')

These are explicitly designed to look up all Received: IPs as "places
you probably don't want to accept mail from, period, even if it takes a
hop through a non-listed innocent server".  They're scored to match, so
that legitimate senders on dynamic IPs who happen to inherit a "dirty"
IP don't get blocked just on this basis.

header RCVD_IN_XBL              eval:check_rbl('zen-lastexternal',
'zen.spamhaus.org.', '^127\.0\.0\.[45678]$')
header RCVD_IN_PBL              eval:check_rbl('zen-lastexternal',
'zen.spamhaus.org.', '^127\.0\.0\.1[01]$')

The XBL and PBL sublists are ONLY checked for the relay IP, but because
of how eval:check_rbl and eval:check_rbl_sub interact, as per the man
page, these two use their own check_rbl, instead of check_rbl_sub.

If you need to redefine these because you have a local datafeed, or
key-validated DNS access, copy-paste the stock rule as-is, and only
replace the "zen.spamhaus.org" zone base name as appropriate.

-kgd

Reply via email to