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 )