Mail-Toaster

 view release on metacpan or  search on metacpan

lib/Mail/Toaster/Setup.pm  view on Meta::CPAN

        }
    }

    my $mysqlbin = $self->util->find_bin( 'mysql', fatal => 0 );
    if ( ! -x $mysqlbin ) {
        $mysqlbin = $self->util->find_bin( 'mysql5' );
    };
    my $sqldir = "/usr/local/share/doc/spamassassin/sql";
    foreach my $f (qw/bayes_mysql.sql awl_mysql.sql userpref_mysql.sql/) {
        if ( ! -f "$sqldir/$f" ) {
            warn "missing .sql file: $f\n";
            next;
        };
        if ( `grep MyISAM "$sqldir/$f"` ) {
            my @lines = $self->util->file_read( "$sqldir/$f" );
            foreach my $line (@lines) {
                if ( $line eq ') TYPE=MyISAM;' ) {
                    $line = ');';
                };
            };
            $self->util->file_write( "$sqldir/$f", lines=>\@lines );
        };
        $self->util->syscmd( "$mysqlbin spamassassin < $sqldir/$f" );
    }

    my $file = "/usr/local/etc/mail/spamassassin/sql.cf";
    unless ( -f $file ) {
        my @lines = <<EO_SQL_CF;
loadplugin Mail::SpamAssassin::Plugin::AWL

user_scores_dsn                 DBI:mysql:spamassassin:localhost
user_scores_sql_username        $self->conf->{install_spamassassin_dbuser}
user_scores_sql_password        $self->conf->{install_spamassassin_dbpass}
#user_scores_sql_table           userpref

bayes_store_module              Mail::SpamAssassin::BayesStore::SQL
bayes_sql_dsn                   DBI:mysql:spamassassin:localhost
bayes_sql_username              $self->conf->{install_spamassassin_dbuser}
bayes_sql_password              $self->conf->{install_spamassassin_dbpass}
#bayes_sql_override_username    someusername

auto_whitelist_factory          Mail::SpamAssassin::SQLBasedAddrList
user_awl_dsn                    DBI:mysql:spamassassin:localhost
user_awl_sql_username           $self->conf->{install_spamassassin_dbuser}
user_awl_sql_password           $self->conf->{install_spamassassin_dbpass}
user_awl_sql_table              awl
EO_SQL_CF
        $self->util->file_write( $file, lines => \@lines );
    }
}

sub spamassassin_update {
    my $self = shift;

    my $update = $self->util->find_bin( "sa-update", fatal => 0 ) or return;
    system $update and do {
        $self->error( "error updating spamassassin rules", fatal => 0);
    };
    $self->audit( "trying again without GPG" );

    system "$update --nogpg" and
        return $self->error( "error updating spamassassin rules", fatal => 0);

    return 1;
};

sub sqlite_freebsd {
    my $self = shift;

    $self->freebsd->install_port( 'icu',
        options => "# Options for icu-50.1.2
_OPTIONS_READ=icu-50.1.2
_FILE_COMPLETE_OPTIONS_LIST=THREADS
OPTIONS_FILE_SET+=THREADS
",
    );

    $self->freebsd->install_port( 'sqlite3',
        options => "
# Options for sqlite3-3.7.17_1
_OPTIONS_READ=sqlite3-3.7.17_1
_FILE_COMPLETE_OPTIONS_LIST=DIRECT_READ EXTENSION FTS3 ICU MEMMAN METADATA RAMTABLE RTREE SECURE_DELETE SOUNDEX STAT3 THREADSAFE UNLOCK_NOTIFY UPD_DEL_LIMIT URI
OPTIONS_FILE_UNSET+=DIRECT_READ
OPTIONS_FILE_SET+=EXTENSION
OPTIONS_FILE_SET+=FTS3
OPTIONS_FILE_SET+=ICU
OPTIONS_FILE_UNSET+=MEMMAN
OPTIONS_FILE_SET+=METADATA
OPTIONS_FILE_UNSET+=RAMTABLE
OPTIONS_FILE_UNSET+=RTREE
OPTIONS_FILE_SET+=SECURE_DELETE
OPTIONS_FILE_UNSET+=SOUNDEX
OPTIONS_FILE_UNSET+=STAT3
OPTIONS_FILE_SET+=THREADSAFE
OPTIONS_FILE_SET+=UNLOCK_NOTIFY
OPTIONS_FILE_UNSET+=UPD_DEL_LIMIT
OPTIONS_FILE_SET+=URI
",
    );
}

sub squirrelmail {
    my $self  = shift;
    my %p = validate( @_, { $self->get_std_opts },);

    return $p{test_ok} if defined $p{test_ok}; # for testing

    my $ver = $self->conf->{install_squirrelmail} or do {
        $self->audit( 'skipping squirrelmail install (disabled)');
        return;
    };

    if ( $OSNAME eq "freebsd" && $ver eq "port" ) {
        $self->php();
        $self->squirrelmail_freebsd() and return;
    };

    $ver = "1.4.6" if $ver eq 'port';

    print "squirrelmail: attempting to install from sources.\n";



( run in 0.494 second using v1.01-cache-2.11-cpan-df04353d9ac )