Mail-Decency

 view release on metacpan or  search on metacpan

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


=cut

has default_limit_databases => ( is => 'rw', isa => 'ArrayRef[HashRef]', default => sub { [] } );

=head2 exception_database : HashRef

Exception from default values (eg per account, per sender_domain, whatever)

=cut

has exception_database => ( is => 'rw', isa => 'HashRef', default => sub { {} } );

=head2 used_databases : ArrayRef[Str]

Internal usage..

=cut

has used_databases => ( is => 'rw', isa => 'ArrayRef[Str]', default => sub { [] } );


=head2 use_accounts : Bool

Wheter accounts (see description) should be used or not (cost performance)

=cut

has use_accounts => ( is => 'rw', isa => 'Bool', default => 0 );

=head2 counter_increment : CodeRef

Internal usage..

=cut

has counter_increment => ( is => 'rw', isa => 'CodeRef' );

=head2 counter_read : CodeRef

Internal usage..

=cut

has counter_read => ( is => 'rw', isa => 'CodeRef' );

=head2 require_sasl_username : CodeRef

Enable throttle module only if sasl_username is given (this happens if the SMTP connection contains AUTH information.. )

=cut

has require_sasl_username => ( is => 'rw', isa => 'Bool', default => 0 );

=head2 schema_definition

Database ..

=cut

has schema_definition => ( is => 'ro', isa => 'HashRef[HashRef]', default => sub {
    {
        throttle => {
            client_address => {
                client_address => [ varchar => 39 ],
                interval       => 'integer',
                maximum        => 'integer',
                account        => [ varchar => 100 ],
                -unique        => [ 'client_address', 'interval' ]
            },
            sender_domain => {
                sender_domain => [ varchar => 255 ],
                interval      => 'integer',
                maximum       => 'integer',
                account       => [ varchar => 100 ],
                -unique       => [ 'sender_domain', 'interval' ]
            },
            sender_address => {
                sender_address => [ varchar => 255 ],
                interval       => 'integer',
                maximum        => 'integer',
                account        => [ varchar => 100 ],
                -unique        => [ 'sender_address', 'interval' ]
            },
            sasl_username => {
                sasl_username => [ varchar => 255 ],
                interval      => 'integer',
                maximum       => 'integer',
                account       => [ varchar => 100 ],
                -unique       => [ 'sasl_username', 'interval' ]
            },
            recipient_domain => {
                recipient_domain => [ varchar => 255 ],
                interval         => 'integer',
                maximum          => 'integer',
                account          => [ varchar => 100 ],
                -unique          => [ 'recipient_domain', 'interval' ]
            },
            recipient_address => {
                recipient_address => [ varchar => 255 ],
                interval          => 'integer',
                maximum           => 'integer',
                account           => [ varchar => 100 ],
                -unique           => [ 'recipient_address', 'interval' ]
            },
            account => {
                account  => [ varchar => 100 ],
                interval => 'integer',
                maximum  => 'integer',
                account  => [ varchar => 100 ],
                -unique  => [ 'account', 'interval' ]
            },
        }
    };
} );



=head1 METHODS




( run in 0.902 second using v1.01-cache-2.11-cpan-39bf76dae61 )