NAME

Mail::Decency::Policy::Association

DESCRIPTION

This module tries to figure out wheter the sender domain is somewhat related to the sending server.

There are three methods to determine wheter this is the case:

1. direct IP hit

The sender IP name is equal to the A or AAAA of the domain or the resolved (CNAME, MX) record.

Example 1: sender ip is 123.123.123.123 and the first MX record of the sender domain sender.tld is points to mail.sender.tld which has the IP 123.123.123.123

Example 2: sender ip is 123.123.213.123 and the A record of sender.tld is 123.123.123.123

2. domain hit

Tries to identify the association via the domain name.

Example: sender domain is something.sender.tld and the reverse hostname of the sender IP is mail.domain.tld -> both under sender.tld.

3. IP range hit

Tries to identify the relation via ip ranges.

Example: ip of the sender is 123.123.123.123 and ip of the A record of the sender domain is 123.123.123.122 which is within a /31 subnet

The bigger the subnet, the lower the positive weight (can be adjusted).

If no relation could be determined, the session will be scored negatively.

Keep in mind: the association of the sender ip to the sender domain does not imply at all that the mail is not spam. Only the opposite gives a hint, that the mail might be forged - or one of those webservers not associated to the domain sending a (maybe even valid) mail.

CONFIG

---

disable: 0

weight_direct_hit: 20
weight_domain_hit: 15
weight_range_hit:
    31: 20
    30: 20
    29: 10
    28: 10
    27: 10
    26: 5
    25: 5
    24: 5
weight_no_hit: -20

CLASS ATTRIBUTES

resolver : Net::DNS::Resolver

Will be created automatically.

rx_tlds* : RegexpRef

Pre-compiled regex containing tlds.

weight_direct_hit : Int

The sender domain is directly associated to the client address

weight_range_hit : HashRef[Int]

The sender domain is associated via an ip range to the client address ..

weight_domain_hit : Int

The sender domain is via a shared domain name to the client address. Eg the client address resolves to smtp.somedomain.tld and the sender is somedomain.tld or the sender's mx is mx.somedomain.tld whereas they at least somedomain.tld

weight_no_hit

Negative score. No match found.

METHODS

init

Checks weight_range_hit for correctness, reads config

handle

Never handle anything from localhost. Handle results are cached. First checks for exact match, then domain hit, then range hit.

finish

Write to cache, add spam score.

get_records

Retreive records for a hostname (A, CNAME, MX) / ip (PTR)

AUTHOR

Ulrich Kautz <uk@fortrabbit.de>

COPYRIGHT

Copyright (c) 2010 the "AUTHOR" as listed above

LICENCSE

This library is free software and may be distributed under the same terms as perl itself.