Mail-Toaster
view release on metacpan or search on metacpan
lib/Mail/Toaster/Setup/Simscan.pm view on Meta::CPAN
my ( $file, @lines );
my $reje = $self->conf->{'simscan_spam_hits_reject'};
my @attach;
if ( $self->conf->{'simscan_block_attachments'} ) {
$file = "/var/qmail/control/ssattach";
foreach ( split( /,/, $self->conf->{'simscan_block_types'} ) ) {
push @attach, ".$_";
}
$self->util->file_write( $file, lines => \@attach );
}
$file = "/var/qmail/control/simcontrol";
if ( !-e $file ) {
my @opts;
$self->conf->{'simscan_clamav'}
? push @opts, "clam=yes"
: push @opts, "clam=no";
$self->conf->{'simscan_spamassassin'}
? push @opts, "spam=yes"
: push @opts, "spam=no";
$self->conf->{'simscan_trophie'}
? push @opts, "trophie=yes"
: push @opts, "trophie=no";
$reje
? push @opts, "spam_hits=$reje"
: print "no reject.\n";
if ( @attach > 0 ) {
my $line = "attach=";
my $first = shift @attach;
$line .= "$first";
foreach (@attach) { $line .= ":$_"; }
push @opts, $line;
}
@lines = "#postmaster\@example.com:" . join( ",", @opts );
push @lines, "#example.com:" . join( ",", @opts );
push @lines, "#";
push @lines, ":" . join( ",", @opts );
if ( -e $file ) {
$self->util->file_write( "$file.new", lines => \@lines );
print
"\nNOTICE: simcontrol written to $file.new. You need to review and install it!\n";
}
else {
$self->util->file_write( $file, lines => \@lines );
}
}
my $user = $self->conf->{'simscan_user'} || 'simscan';
my $group = $self->conf->{'smtpd_run_as_group'} || 'qmail';
$self->util->syscmd( "pw user mod simscan -G qmail,clamav" );
$self->util->chown( '/var/qmail/simscan', uid => $user, gid => $group );
$self->util->chown( '/var/qmail/bin/simscan', uid => $user, gid=>$group );
$self->util->chmod( dir => '/var/qmail/simscan', mode => '0770' );
if ( -x "/var/qmail/bin/simscanmk" ) {
$self->util->syscmd( "/var/qmail/bin/simscanmk" );
system "/var/qmail/bin/simscanmk";
}
}
sub install_freebsd_port {
my $self = shift;
my @args;
push @args, "SPAMC_ARGS=" . $self->conf->{simscan_spamc_args} if $self->conf->{simscan_spamc_args};
push @args, 'SPAM_HITS=' . $self->conf->{simscan_spam_hits_reject} if $self->conf->{simscan_spam_hits_reject};
push @args, 'SIMSCAN_USER=' . $self->conf->{simscan_user} if $self->conf->{simscan_user};
push @args, 'QUARANTINE_DIR=' . $self->conf->{simscan_quarantine} if $self->conf->{'simscan_quarantine'};
push @args, 'QMAIL_PREFIX=' . $self->conf->{qmail_dir} || '/var/qmail';
$self->freebsd->install_port( "simscan",
category => 'mail',
flags => join( ",", @args ),
options => "# Options for simscan-1.4.0_6
_OPTIONS_READ=simscan-1.4.0_6
_FILE_COMPLETE_OPTIONS_LIST=ATTACH CLAMAV DOMAIN DROPMSG DSPAM HEADERS PASSTHRU RIPMIME SPAMD USER
OPTIONS_FILE_SET+=ATTACH
OPTIONS_FILE_SET+=CLAMAV
OPTIONS_FILE_SET+=DOMAIN
OPTIONS_FILE_UNSET+=DROPMSG
OPTIONS_FILE_UNSET+=DSPAM
OPTIONS_FILE_SET+=HEADERS
OPTIONS_FILE_UNSET+=PASSTHRU
OPTIONS_FILE_SET+=RIPMIME
OPTIONS_FILE_SET+=SPAMD
OPTIONS_FILE_SET+=USER
",
);
return $self->config;
};
sub simscan_regex {
my ($self) = @_;
return '' if ! $self->conf->{'simscan_regex_scanner'};
my $config = "--enable-regex=y ";
if ( $OSNAME eq "freebsd" ) {
$self->freebsd->install_port( 'pcre' );
$config .= "--with-pcre-include=/usr/local/include ";
}
else {
print "\n\nWARNING: is pcre installed?\n\n";
}
return $config;
};
sub simscan_ripmime {
my ($self, $ver ) = @_;
if ( ! $self->setup->is_newer( min => "1.0.8", cur => $ver ) ) {
( run in 1.034 second using v1.01-cache-2.11-cpan-71847e10f99 )