The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Mail::Decency::Policy::Greylist

DESCRIPTION

A greylist implementation (http://www.greylisting.org/) for decency.

CONFIG

    --- 
    
    disable: 0
    
    # interval in seconds until a sender is allowed to re-send
    #   and pass
    min_interval: 60
    
    # per default, the greylist does not work as a whitelist, but
    #   a blacklist. it will reject (temporary) any mail not on the
    #   list, but does not explicit allow mails which are on the list
    #   to be passed (DUNNO).. you can enable passing by setting this
    #   to OK, thus any mail is on the list will pass.
    #   check with your restriction-classes to determine the better
    #   behavior for your mailserver
    pass_code: DUNNO
    
    # scoring awre. will put mails only on the permant whitelist
    #   (host or domain) if it has been scored zero or above
    #   this should keep suspicious mails from the whitelist
    scoring_aware: 1
    
    # policy for permanently whitelisting a whole sender server
    hosts_policy:
        
        # threshold of different sender mails
        unique_sender: 5
        
        # threshold of mails received from ONE address finally
        #   putting the host on the whitelist
        one_address: 10
    
    # policy for permanently whitelisting a whole sender domain
    #   use this with care and SPF (beforehand!)
    domains_policy:
        
        # threshold of different sender mails
        unique_sender: 5
        
        # threshold of mails received from ONE address finally
        #   putting the host on the whitelist
        one_address: 10
    

DATABASE

    -- contains all sender host ips, which are or are to be
    --  whitelisted due to lot's of positives
    CREATE TABLE greylist_client_addresss (
        id INTEGER PRIMARY KEY,
        client_address VARCHAR( 39 ),
        counter integer,
        last_seen integer
    );
    CREATE UNIQUE INDEX greylist_client_addresss_uk ON greylist_client_addresss( client_address );
    
    -- contains all sender_domains, which are or are to be
    --  whitelisted due to lot's of positives
    CREATE TABLE greylist_sender_domain (
        id INTEGER PRIMARY KEY,
        sender_domain varchar( 255 ),
        counter integer,
        last_seen integer,
        unique_sender BLOB
    );
    CREATE UNIQUE INDEX greylist_sender_domain_uk ON greylist_sender_domain( sender_domain );
    
    -- contains all (sender -> recipient) address pairs which
    --  are used to allow the second send attempt
    CREATE TABLE greylist_sender_recipient (
        id INTEGER PRIMARY KEY,
        sender_address varchar( 255 ),
        recipient_address varchar( 255 ),
        counter integer,
        last_seen integer,
        unique_sender BLOB
    );
    CREATE UNIQUE INDEX greylist_sender_recipient_uk ON greylist_sender_recipient( sender_address, recipient_address );

CLASS ATTRIBUTES

hosts_policy : HashRef[HashRef[Int]]

Determines accommodation requirements per host (IP)

domains_policy : HashRef[HashRef[Int]]

Determines accommodation requirements per domain (sender)

min_interval : Int

Min interval

reject_message : Str

Message for greylisted rejection.

Default: "Greylisted - Patience, young jedi"

pass_code : Str

Set to "OK" if mails on the found on the greylist shall be whitelisted. Per default, they just won't be rejected (DUNNO).

scoring_aware : Bool

If scoring aware, will not use the host- and domain policies if score is below zero (spammy).

schema_definition : HashRef[HashRef]

Database schema

METHODS

init

handle

update_pass

Add counters to pass databases

maintenance

Called by policy server in maintenance mode. Cleans up obsolete entries in greylist databsae

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.