Mail-Decency

 view release on metacpan or  search on metacpan

lib/Mail/Decency/Policy/CWL.pm  view on Meta::CPAN

use version 0.74; our $VERSION = qv( "v0.1.4" );

use mro 'c3';

use Data::Dumper;

=head1 NAME

Mail::Decency::Policy::CWL


=head1 CONFIG

    ---
    
    disable: 0
    
    # enable negative cache
    use_negative_cache: 1
    
    # enable all tables
    tables:
        - ips
        - domains
        - addresses
    

=head1 DESCRIPTION

Implementation of a custom whitelist based on sending server (ip/hostname), sending domain or (domain.tld) sending address (email@domain.tld).

=head1 DATABASE

    CREATE TABLE cwl_ips (
        id INTEGER PRIMARY KEY,
        recipient_domain varchar( 255 ),
        client_address varchar( 39 )
    );
    CREATE UNIQUE INDEX cwl_ips_uk ON cwl_ips( recipient_domain, client_address );
    
    CREATE TABLE cwl_domains (
        id INTEGER PRIMARY KEY,
        recipient_domain varchar( 255 ),
        sender_domain varchar( 255 )
    );
    CREATE UNIQUE INDEX cwl_domains_uk ON cwl_domains( recipient_domain, sender_domain );
    
    CREATE TABLE cwl_addresses (
        id INTEGER PRIMARY KEY,
        recipient_domain varchar( 255 ),
        sender_address varchar( 255 )
    );
    CREATE UNIQUE INDEX cwl_addresses_uk ON cwl_addresses( recipient_domain, sender_address );

=cut

=head1 CLASS ATTRIBUTES

=cut

has schema_definition => ( is => 'ro', isa => 'HashRef[HashRef]', default => sub {
    {
        cwl => {
            ips         => {
                recipient_domain => [ varchar => 255 ],
                client_address   => [ varchar => 39 ],
                -unique          => [ 'recipient_domain', 'client_address' ]
            },
            domains     => {
                recipient_domain => [ varchar => 255 ],
                sender_domain    => [ varchar => 255 ],
                -unique          => [ 'recipient_domain', 'sender_domain' ]
            },
            addresses   => {
                recipient_domain => [ varchar => 255 ],
                sender_address   => [ varchar => 255 ],
                -unique          => [ 'recipient_domain', 'sender_address' ]
            },
        }
    };
} );


=head1 METHODS


=head2 init

=cut

sub init {
    my ( $self ) = @_;
    
    $self->next::method();
    $self->{ _handle_on_hit } = 'OK';
    $self->{ _table_prefix }  = 'cwl';
    $self->{ _description }   = 'Custom White List';
    
}

=head1 AUTHOR

Ulrich Kautz <uk@fortrabbit.de>

=head1 COPYRIGHT

Copyright (c) 2010 the L</AUTHOR> as listed above

=head1 LICENCSE

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

=cut



1;



( run in 2.505 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )