Mail-Decency
view release on metacpan or search on metacpan
lib/Mail/Decency/Policy.pm view on Meta::CPAN
=cut
has default_reject_message => ( is => 'rw', isa => 'Str', default => "use decency" );
=head2 no_reject_detail : Bool
Wheter pass detailed information of why a particular REJECT has been thrown to the sender or not (not=always the default message)/
Default: 0
=cut
has no_reject_detail => ( is => 'rw', isa => 'Bool', default => 0 );
=head2 forward_scoring : Bool
Wheter forward scoring informations after policies or not
Default: 0
=cut
has forward_scoring => ( is => 'rw', isa => 'Bool', default => 0 );
=head2 disable_prepend : Bool
Wheter disabling the prepend of instance information fully (implies forward_scoring=0)
Default: 0
=cut
has disable_prepend => ( is => 'rw', isa => 'Bool', default => 0 );
=head2 forward_sign_key : Str
Path to a file containing a private key for signing forwarded
=cut
has forward_sign_key => ( is => 'rw', isa => 'Str', predicate => 'has_forward_sign_key', trigger => sub {
my ( $self, $key_file ) = @_;
# check file
$key_file = $self->config_dir . "/$key_file"
if $self->has_config_dir && ! -f $key_file;
die "Could not access policy_sign_pub key file '$key_file'\n"
unless -f $key_file;
# read key
open my $fh, '<', $key_file
or die "Cannot open policy_sign_pub key file for read: $!\n";
my $key_content = join( "", <$fh> );
close $fh;
# try load rsa and init private key
my $load_rsa = eval "use Crypt::OpenSSL::RSA; 1;";
if ( $load_rsa ) {
$self->forward_sign_key_priv( Crypt::OpenSSL::RSA->new_private_key( $key_content ) );
}
# failure in loading -> bye
else {
die "Could not load Crypt::OpenSSL::RSA, cannot sign headers! Error: $@\n";
}
return;
} );
=head2 forward_sign_key_priv : Crypt::OpenSSL::RSA
Instance of L<Crypt::OpenSSL::RSA> representing the forward sign key
=cut
has forward_sign_key_priv => ( is => 'rw', isa => 'Crypt::OpenSSL::RSA' );
=head1 METHODS
=head2 init
Loads policy modules, inits caches, inits databases ..
=cut
sub init {
my ( $self ) = @_;
# init name
$self->name( "policy" );
# mark es inited
$self->{ inited } ++;
$self->init_logger();
$self->init_postfix_server();
$self->init_cache();
$self->init_database();
$self->logger->info( "Startup Phase" );
# set another default reject message
$self->default_reject_message( $self->config->{ default_reject_message } )
if $self->config->{ default_reject_message };
# display always default message and no detail ?
$self->no_reject_detail( 1 )
if $self->config->{ no_reject_detail };
# check policy..
$self->config->{ policy } = []
unless defined $self->config->{ policy }
&& ref( $self->config->{ policy } ) eq 'ARRAY'
&& scalar @{ $self->config->{ policy } } > 0;
# use weighting ?
if ( defined $self->config->{ weight_threshold } ) {
$self->weight_threshold( $self->config->{ weight_threshold } );
( run in 0.484 second using v1.01-cache-2.11-cpan-13bb782fe5a )