diff options
-rw-r--r-- | mail/p5-Mail-SpamAssassin/Makefile | 18 | ||||
-rw-r--r-- | mail/p5-Mail-SpamAssassin/distinfo | 4 | ||||
-rw-r--r-- | mail/p5-Mail-SpamAssassin/files/patch-DKIM.pm | 66 | ||||
-rw-r--r-- | mail/p5-Mail-SpamAssassin/files/patch-bug6392 | 225 | ||||
-rw-r--r-- | mail/p5-Mail-SpamAssassin/files/patch-bug6396 | 13 | ||||
-rw-r--r-- | mail/p5-Mail-SpamAssassin/files/patch-bug6488 | 18 | ||||
-rw-r--r-- | mail/p5-Mail-SpamAssassin/files/patch-bug6624 | 88 | ||||
-rw-r--r-- | mail/p5-Mail-SpamAssassin/pkg-install | 10 | ||||
-rw-r--r-- | mail/p5-Mail-SpamAssassin/pkg-plist | 7 |
9 files changed, 108 insertions, 341 deletions
diff --git a/mail/p5-Mail-SpamAssassin/Makefile b/mail/p5-Mail-SpamAssassin/Makefile index 551b12a52c7d..9b699054133f 100644 --- a/mail/p5-Mail-SpamAssassin/Makefile +++ b/mail/p5-Mail-SpamAssassin/Makefile @@ -6,8 +6,7 @@ # PORTNAME= Mail-SpamAssassin -PORTVERSION= 3.3.1 -PORTREVISION= 4 +PORTVERSION= 3.3.2 CATEGORIES= mail perl5 MASTER_SITES= ${MASTER_SITE_APACHE:S/$/:apache/} ${MASTER_SITE_PERL_CPAN:S/$/:cpan/} MASTER_SITE_SUBDIR= spamassassin/source/:apache Mail/:cpan @@ -23,7 +22,12 @@ RUN_DEPENDS= p5-NetAddr-IP>=4.00.7:${PORTSDIR}/net-mgmt/p5-NetAddr-IP \ ${SITE_PERL}/Bundle/LWP.pm:${PORTSDIR}/www/p5-libwww \ ${SITE_PERL}/${PERL_ARCH}/Encode/Detect.pm:${PORTSDIR}/converters/p5-Encode-Detect \ ${SITE_PERL}/Mail/Internet.pm:${PORTSDIR}/mail/p5-Mail-Tools -BUILD_DEPENDS= ${RUN_DEPENDS} +BUILD_DEPENDS= p5-NetAddr-IP>=4.00.7:${PORTSDIR}/net-mgmt/p5-NetAddr-IP \ + p5-Net-DNS>=0.63:${PORTSDIR}/dns/p5-Net-DNS \ + p5-HTML-Parser>=3.43:${PORTSDIR}/www/p5-HTML-Parser \ + ${SITE_PERL}/Bundle/LWP.pm:${PORTSDIR}/www/p5-libwww \ + ${SITE_PERL}/${PERL_ARCH}/Encode/Detect.pm:${PORTSDIR}/converters/p5-Encode-Detect \ + ${SITE_PERL}/Mail/Internet.pm:${PORTSDIR}/mail/p5-Mail-Tools CONFLICTS= ja-p5-Mail-SpamAssassin-[0-9]* @@ -207,7 +211,7 @@ MAN3= Mail::SpamAssassin.3 \ spamassassin-run.3 MAN1= spamd.1 spamassassin.1 spamc.1 sa-learn.1 sa-update.1 \ - spamassassin-run.1 sa-compile.1 + spamassassin-run.1 sa-compile.1 sa-awl.1 DOCSDIR= ${PREFIX}/share/doc/${PKGNAMEPREFIX}${PORTNAME} DATADIR= ${PREFIX}/share/spamassassin @@ -224,7 +228,7 @@ SUB_LIST+= SQL_FLAG="-Q" SUB_LIST+= SQL_FLAG="" .endif .if !defined(WITH_AS_ROOT) -SUB_LIST+= RUN_AS_USER="-u spamd -H /var/spool/spamd" +SUB_LIST+= RUN_AS_USER="-u ${USERS} -H /var/spool/spamd" .else SUB_LIST+= RUN_AS_USER="" .endif @@ -274,7 +278,7 @@ post-build: .endif pre-su-install: - @${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL + @USER=${USERS} GROUP=${GROUPS} ${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL @${INSTALL_PROGRAM} ${WRKSRC}/spamc/libspamc.so ${PREFIX}/lib/libspamc.so.0 @${LN} -sf libspamc.so.0 ${PREFIX}/lib/libspamc.so .if !defined(WITHOUT_SSL) @@ -299,7 +303,7 @@ post-install: @[ -f ${PREFIX}/etc/mail/spamassassin/v320.pre ] || \ ${CP} ${PREFIX}/etc/mail/spamassassin/v320.pre.sample \ ${PREFIX}/etc/mail/spamassassin/v320.pre - @PKG_PREFIX=${PREFIX} BATCH=${BATCH} SU_CMD="${SU_CMD}" ${SH} ${PKGDIR}/pkg-install ${PKGNAME} POST-INSTALL + @PKG_PREFIX=${PREFIX} BATCH=${BATCH} SU_CMD="${SU_CMD}" USER=${USERS} GROUP=${GROUPS} ${SH} ${PKGDIR}/pkg-install ${PKGNAME} POST-INSTALL @[ -f ${PREFIX}/etc/mail/spamassassin/v330.pre ] || \ ${CP} ${PREFIX}/etc/mail/spamassassin/v330.pre.sample \ ${PREFIX}/etc/mail/spamassassin/v330.pre diff --git a/mail/p5-Mail-SpamAssassin/distinfo b/mail/p5-Mail-SpamAssassin/distinfo index e935a052afd2..faa554038982 100644 --- a/mail/p5-Mail-SpamAssassin/distinfo +++ b/mail/p5-Mail-SpamAssassin/distinfo @@ -1,2 +1,2 @@ -SHA256 (Mail-SpamAssassin-3.3.1.tar.gz) = a11ca187150d5a8fc2904c4a50f29d3ff739294fa714aaab127ba692d65410ad -SIZE (Mail-SpamAssassin-3.3.1.tar.gz) = 1196842 +SHA256 (Mail-SpamAssassin-3.3.2.tar.gz) = 5323038939a0ef9fc97d5264defce3ae1d95e98b3a94c4c3b583341c927f32df +SIZE (Mail-SpamAssassin-3.3.2.tar.gz) = 1208182 diff --git a/mail/p5-Mail-SpamAssassin/files/patch-DKIM.pm b/mail/p5-Mail-SpamAssassin/files/patch-DKIM.pm deleted file mode 100644 index e209eeb6a5dc..000000000000 --- a/mail/p5-Mail-SpamAssassin/files/patch-DKIM.pm +++ /dev/null @@ -1,66 +0,0 @@ ---- lib/Mail/SpamAssassin/Plugin/DKIM.pm (revision 925052) -+++ lib/Mail/SpamAssassin/Plugin/DKIM.pm (working copy) -@@ -213,6 +213,19 @@ - in the SpamAssassin distribution. The whitelist score is lower, because - these are often targets for abuse of public mailers which sign their mail. - -+=item unwhitelist_from_dkim author@example.com -+ -+Removes an email address from def_whitelist_from_dkim and whitelist_from_dkim -+tables, if it exists. Useful for removing undesired default entries from a -+distributed configuration file by a local.cf file or by a C<user_prefs>. -+Note that a parameter is a single email address - currently that address -+is removed regardless of a signing-domain which may have been specified in a -+whitelisting entry. -+ -+The specified email address has to match exactly the address previously -+used in a whitelist_from_dkim or def_whitelist_from_dkim directive -+(with an exception that its domain name part is matched case-insensitively). -+ - =item adsp_override domain [signing-practices] - - Currently few domains publish their signing practices (RFC 5617 - ADSP), -@@ -362,6 +375,7 @@ - } - my $address = $1; - my $sdid = defined $2 ? $2 : ''; # empty implies author domain signature -+ $address =~ s/(\@[^@]*)\z/lc($1)/e; # lowercase the email address domain - $self->{parser}->add_to_addrlist_rcvd('whitelist_from_dkim', - $address, $sdid); - } -@@ -381,12 +395,32 @@ - } - my $address = $1; - my $sdid = defined $2 ? $2 : ''; # empty implies author domain signature -+ $address =~ s/(\@[^@]*)\z/lc($1)/e; # lowercase the email address domain - $self->{parser}->add_to_addrlist_rcvd('def_whitelist_from_dkim', - $address, $sdid); - } - }); - - push (@cmds, { -+ setting => 'unwhitelist_from_dkim', -+ type => $Mail::SpamAssassin::Conf::CONF_TYPE_ADDRLIST, -+ code => sub { -+ my ($self, $key, $value, $line) = @_; -+ unless (defined $value && $value !~ /^$/) { -+ return $Mail::SpamAssassin::Conf::MISSING_REQUIRED_VALUE; -+ } -+ unless ($value =~ /^\S+$/) { -+ return $Mail::SpamAssassin::Conf::INVALID_VALUE; -+ } -+ $value =~ s/(\@[^@]*)\z/lc($1)/e; # lowercase the email address domain -+ $self->{parser}->remove_from_addrlist_rcvd('whitelist_from_dkim', -+ $value); -+ $self->{parser}->remove_from_addrlist_rcvd('def_whitelist_from_dkim', -+ $value); -+ } -+ }); -+ -+ push (@cmds, { - setting => 'adsp_override', - type => $Mail::SpamAssassin::Conf::CONF_TYPE_HASH_KEY_VALUE, - code => sub { - - - diff --git a/mail/p5-Mail-SpamAssassin/files/patch-bug6392 b/mail/p5-Mail-SpamAssassin/files/patch-bug6392 deleted file mode 100644 index 6125c497e8da..000000000000 --- a/mail/p5-Mail-SpamAssassin/files/patch-bug6392 +++ /dev/null @@ -1,225 +0,0 @@ -Index: lib/Mail/SpamAssassin/HTML.pm -=================================================================== ---- lib/Mail/SpamAssassin/HTML.pm (revision 943932) -+++ lib/Mail/SpamAssassin/HTML.pm (revision 943933) -@@ -191,7 +191,7 @@ - my $self = shift; - my %options = @_; - -- return join('', @{ $self->{text} }) unless keys %options; -+ return join('', @{ $self->{text} }) unless %options; - - my $mask; - while (my ($k, $v) = each %options) { -Index: lib/Mail/SpamAssassin/Dns.pm -=================================================================== ---- lib/Mail/SpamAssassin/Dns.pm (revision 943932) -+++ lib/Mail/SpamAssassin/Dns.pm (revision 943933) -@@ -754,7 +754,7 @@ - dbg("dns: entering helper-app run mode"); - $self->{old_slash} = $/; # Razor pollutes this - %{$self->{old_env}} = (); -- if ( defined %ENV ) { -+ if ( %ENV ) { - # undefined values in %ENV can result due to autovivification elsewhere, - # this prevents later possible warnings when we restore %ENV - while (my ($key, $value) = each %ENV) { -Index: lib/Mail/SpamAssassin/Plugin/Check.pm -=================================================================== ---- lib/Mail/SpamAssassin/Plugin/Check.pm (revision 943932) -+++ lib/Mail/SpamAssassin/Plugin/Check.pm (revision 943933) -@@ -307,64 +307,51 @@ - my $package_name = __PACKAGE__; - my $methodname = $package_name."::_".$ruletype."_tests_".$clean_priority; - -- if (defined &{$methodname} && !$doing_user_rules) { --run_compiled_method: -- # dbg("rules: run_generic_tests - calling %s", $methodname); -- my $t = Mail::SpamAssassin::Timeout->new({ deadline => $master_deadline }); -- my $err = $t->run(sub { -- no strict "refs"; -- $methodname->($pms, @{$opts{args}}); -- }); -- if ($t->timed_out() && $master_deadline && time > $master_deadline) { -- info("check: exceeded time limit in $methodname, skipping further tests"); -- $pms->{deadline_exceeded} = 1; -- } -- return; -- } -+ if (!defined &{$methodname} || $doing_user_rules) { - -- # use %nopts for named parameter-passing; it's more friendly to future-proof -- # subclassing, since new parameters can be added without breaking third-party -- # subclassed implementations of this plugin. -- my %nopts = ( -- ruletype => $ruletype, -- doing_user_rules => $doing_user_rules, -- priority => $priority, -- clean_priority => $clean_priority -- ); -+ # use %nopts for named parameter-passing; it's more friendly -+ # to future-proof subclassing, since new parameters can be added without -+ # breaking third-party subclassed implementations of this plugin. -+ my %nopts = ( -+ ruletype => $ruletype, -+ doing_user_rules => $doing_user_rules, -+ priority => $priority, -+ clean_priority => $clean_priority -+ ); - -- # build up the eval string... -- $self->{evalstr_methodname} = $methodname; -- $self->{evalstr_chunk_current_methodname} = undef; -- $self->{evalstr_chunk_methodnames} = []; -- $self->{evalstr_chunk_prefix} = []; # stack (array) of source code sections -- $self->{evalstr} = ''; $self->{evalstr_l} = 0; -- $self->{evalstr2} = ''; -- $self->begin_evalstr_chunk($pms); -+ # build up the eval string... -+ $self->{evalstr_methodname} = $methodname; -+ $self->{evalstr_chunk_current_methodname} = undef; -+ $self->{evalstr_chunk_methodnames} = []; -+ $self->{evalstr_chunk_prefix} = []; # stack (array) of source code sections -+ $self->{evalstr} = ''; $self->{evalstr_l} = 0; -+ $self->{evalstr2} = ''; -+ $self->begin_evalstr_chunk($pms); - -- $self->push_evalstr_prefix($pms, ' -- # start_rules_plugin_code '.$ruletype.' '.$priority.' -- my $scoresptr = $self->{conf}->{scores}; -- '); -- if (defined $opts{pre_loop_body}) { -- $opts{pre_loop_body}->($self, $pms, $conf, %nopts); -- } -- $self->add_evalstr($pms, -- $self->start_rules_plugin_code($ruletype, $priority) ); -- while (my($rulename, $test) = each %{$opts{testhash}->{$priority}}) { -- $opts{loop_body}->($self, $pms, $conf, $rulename, $test, %nopts); -- } -- if (defined $opts{post_loop_body}) { -- $opts{post_loop_body}->($self, $pms, $conf, %nopts); -- } -+ $self->push_evalstr_prefix($pms, ' -+ # start_rules_plugin_code '.$ruletype.' '.$priority.' -+ my $scoresptr = $self->{conf}->{scores}; -+ '); -+ if (defined $opts{pre_loop_body}) { -+ $opts{pre_loop_body}->($self, $pms, $conf, %nopts); -+ } -+ $self->add_evalstr($pms, -+ $self->start_rules_plugin_code($ruletype, $priority) ); -+ while (my($rulename, $test) = each %{$opts{testhash}->{$priority}}) { -+ $opts{loop_body}->($self, $pms, $conf, $rulename, $test, %nopts); -+ } -+ if (defined $opts{post_loop_body}) { -+ $opts{post_loop_body}->($self, $pms, $conf, %nopts); -+ } - -- $self->flush_evalstr($pms, 'run_generic_tests'); -- $self->free_ruleset_source($pms, $ruletype, $priority); -+ $self->flush_evalstr($pms, 'run_generic_tests'); -+ $self->free_ruleset_source($pms, $ruletype, $priority); - -- # clear out a previous version of this method -- undef &{$methodname}; -+ # clear out a previous version of this method -+ undef &{$methodname}; - -- # generate the loop that goes through each line... -- my $evalstr = <<"EOT"; -+ # generate the loop that goes through each line... -+ my $evalstr = <<"EOT"; - { - package $package_name; - -@@ -373,41 +360,52 @@ - sub $methodname { - EOT - -- for my $chunk_methodname (@{$self->{evalstr_chunk_methodnames}}) { -- $evalstr .= " $chunk_methodname(\@_);\n"; -- } -+ for my $chunk_methodname (@{$self->{evalstr_chunk_methodnames}}) { -+ $evalstr .= " $chunk_methodname(\@_);\n"; -+ } - -- $evalstr .= <<"EOT"; -+ $evalstr .= <<"EOT"; - } - - 1; - } - EOT - -- delete $self->{evalstr}; # free up some RAM before we eval() -- delete $self->{evalstr2}; -- delete $self->{evalstr_methodname}; -- delete $self->{evalstr_chunk_current_methodname}; -- delete $self->{evalstr_chunk_methodnames}; -- delete $self->{evalstr_chunk_prefix}; -+ delete $self->{evalstr}; # free up some RAM before we eval() -+ delete $self->{evalstr2}; -+ delete $self->{evalstr_methodname}; -+ delete $self->{evalstr_chunk_current_methodname}; -+ delete $self->{evalstr_chunk_methodnames}; -+ delete $self->{evalstr_chunk_prefix}; - -- dbg("rules: run_generic_tests - compiling eval code: %s, priority %s", -- $ruletype, $priority); --# dbg("rules: eval code to compile: $evalstr"); -- my $eval_result; -- { my $timer = $self->{main}->time_method('compile_gen'); -- $eval_result = eval($evalstr); -- } -- if (!$eval_result) { -- my $eval_stat = $@ ne '' ? $@ : "errno=$!"; chomp $eval_stat; -- warn "rules: failed to compile $ruletype tests, skipping:\n". -- "\t($eval_stat)\n"; -- $pms->{rule_errors}++; -- } -- else { -+ dbg("rules: run_generic_tests - compiling eval code: %s, priority %s", -+ $ruletype, $priority); -+ # dbg("rules: eval code to compile: $evalstr"); -+ my $eval_result; -+ { my $timer = $self->{main}->time_method('compile_gen'); -+ $eval_result = eval($evalstr); -+ } -+ if (!$eval_result) { -+ my $eval_stat = $@ ne '' ? $@ : "errno=$!"; chomp $eval_stat; -+ warn "rules: failed to compile $ruletype tests, skipping:\n". -+ "\t($eval_stat)\n"; -+ $pms->{rule_errors}++; -+ return; -+ } - dbg("rules: compiled $ruletype tests"); -- goto run_compiled_method; - } -+ -+#run_compiled_method: -+# dbg("rules: run_generic_tests - calling %s", $methodname); -+ my $t = Mail::SpamAssassin::Timeout->new({ deadline => $master_deadline }); -+ my $err = $t->run(sub { -+ no strict "refs"; -+ $methodname->($pms, @{$opts{args}}); -+ }); -+ if ($t->timed_out() && $master_deadline && time > $master_deadline) { -+ info("check: exceeded time limit in $methodname, skipping further tests"); -+ $pms->{deadline_exceeded} = 1; -+ } - } - - sub begin_evalstr_chunk { -Index: lib/Mail/SpamAssassin/Plugin/BodyEval.pm -=================================================================== ---- lib/Mail/SpamAssassin/Plugin/BodyEval.pm (revision 943932) -+++ lib/Mail/SpamAssassin/Plugin/BodyEval.pm (revision 943933) -@@ -119,7 +119,7 @@ - } - - # If there are no words, mark if there's at least 1 image ... -- if (keys %html == 0 && exists $pms->{html}{inside}{img}) { -+ if (!%html && exists $pms->{html}{inside}{img}) { - # Use "\n" as the mark since it can't ever occur normally - $html{"\n"}=1; - } diff --git a/mail/p5-Mail-SpamAssassin/files/patch-bug6396 b/mail/p5-Mail-SpamAssassin/files/patch-bug6396 deleted file mode 100644 index cfd9f3bd1926..000000000000 --- a/mail/p5-Mail-SpamAssassin/files/patch-bug6396 +++ /dev/null @@ -1,13 +0,0 @@ -Index: lib/Mail/SpamAssassin/Plugin/MIMEEval.pm -=================================================================== ---- lib/Mail/SpamAssassin/Plugin/MIMEEval.pm (revision 929342) -+++ lib/Mail/SpamAssassin/Plugin/MIMEEval.pm (revision 929343) -@@ -498,7 +498,7 @@ - # perhaps just limit to test, and image? - next if ($ctype eq 'application/ics'); - -- my $cte = lc $p->get_header('content-transfer-encoding') || ''; -+ my $cte = lc($p->get_header('content-transfer-encoding') || ''); - next if ($cte !~ /^base64$/); - foreach my $l ( @{$p->raw()} ) { - my $len = length $l; diff --git a/mail/p5-Mail-SpamAssassin/files/patch-bug6488 b/mail/p5-Mail-SpamAssassin/files/patch-bug6488 deleted file mode 100644 index 08bb1cf534ad..000000000000 --- a/mail/p5-Mail-SpamAssassin/files/patch-bug6488 +++ /dev/null @@ -1,18 +0,0 @@ -BUG 6488 - Lint errors with Perl 5.12.1 in AntiVirus.pm - -Index: lib/Mail/SpamAssassin/Plugin/AntiVirus.pm -========================================================================= ---- lib/Mail/SpamAssassin/Plugin/AntiVirus.pm (revision 574664) -+++ lib/Mail/SpamAssassin/Plugin/AntiVirus.pm (revision 1028149) -@@ -98,9 +98,9 @@ - my ($ctype, $boundary, $charset, $name) = - Mail::SpamAssassin::Util::parse_content_type($p->get_header('content-type')); - -- $name = lc $name || ''; -+ $name = lc($name || ''); - -- my $cte = lc $p->get_header('content-transfer-encoding') || ''; -+ my $cte = lc($p->get_header('content-transfer-encoding') || ''); - $ctype = lc $ctype; - - if ($name && $name =~ /\.(?:ade|adp|asx|bas|bat|chm|cmd|com|cpl|crt|dll|exe|hlp|hta|inf|ins|isp|js|jse|lnk|mda|mdb|mde|mdt|mdw|mdz|msc|msi|msp|mst|nws|ops|pcd|pif|prf|reg|scf|scr\??|sct|shb|shs|shm|swf|url|vb|vbe|vbs|vbx|vxd|wsc|wsf|wsh)$/) diff --git a/mail/p5-Mail-SpamAssassin/files/patch-bug6624 b/mail/p5-Mail-SpamAssassin/files/patch-bug6624 new file mode 100644 index 000000000000..54ee5573dadc --- /dev/null +++ b/mail/p5-Mail-SpamAssassin/files/patch-bug6624 @@ -0,0 +1,88 @@ +--- lib/Mail/SpamAssassin/BayesStore/MySQL.pm (revision 1138970) ++++ lib/Mail/SpamAssassin/BayesStore/MySQL.pm (working copy) +@@ -840,14 +840,28 @@ + return 0; + } + ++ # With ON DUPLICATE KEY UPDATE, the affected-rows value per row is 1 if ++ # the row is inserted as a new row and 2 if an existing row is updated. ++ # ++ # Due to a MySQL server bug a value of 3 can be seen. ++ # See: http://bugs.mysql.com/bug.php?id=46675 ++ # When executing the INSERT ... ON DUPLICATE KEY UPDATE statement ++ # and checking the rows return count: ++ # mysql_client_found_rows = 0: The second INSERT returns a row count ++ # of 2 in all MySQL versions. ++ # mysql_client_found_rows = 1: The second INSERT returns this row count: ++ # Before MySQL 5.1.20: 2 ++ # MySQL 5.1.20: undef on Mac OS X, 139775481 on Linux (garbage?) ++ # MySQL 5.1.21 and up: 3 ++ # + my $num_rows = $rc; + + $sth->finish(); + +- if ($num_rows == 1 || $num_rows == 2) { ++ if ($num_rows == 1 || $num_rows == 2 || $num_rows == 3) { + my $token_count_update = ''; + +- $token_count_update = "token_count = token_count + 1," if ($num_rows == 1); ++ $token_count_update = "token_count = token_count + 1," if $num_rows == 1; + $sql = "UPDATE bayes_vars SET + $token_count_update + newest_token_age = GREATEST(newest_token_age, ?), +@@ -872,7 +886,11 @@ + } + else { + # $num_rows was not what we expected +- dbg("bayes: _put_token: Updated an unexpected number of rows."); ++ my $token_displ = $token; ++ $token_displ =~ s/(.)/sprintf('%02x',ord($1))/egs; ++ dbg("bayes: _put_token: Updated an unexpected number of rows: %s, ". ++ "id: %s, token (hex): %s", ++ $num_rows, $self->{_userid}, $token_displ); + $self->{_dbh}->rollback(); + return 0; + } +@@ -987,8 +1005,24 @@ + else { + my $num_rows = $rc; + +- $need_atime_update_p = 1 if ($num_rows == 1 || $num_rows == 2); +- $new_tokens++ if ($num_rows == 1); ++ # With ON DUPLICATE KEY UPDATE, the affected-rows value per row is 1 if ++ # the row is inserted as a new row and 2 if an existing row is updated. ++ # But see MySQL bug (as above): http://bugs.mysql.com/bug.php?id=46675 ++ ++ if ($num_rows == 1) { ++ $new_tokens++; ++ $need_atime_update_p = 1; ++ } elsif ($num_rows == 2 || $num_rows == 3) { ++ $need_atime_update_p = 1; ++ } else { ++ # $num_rows was not what we expected ++ my $token_displ = $token; ++ $token_displ =~ s/(.)/sprintf('%02x',ord($1))/egs; ++ dbg("bayes: _put_tokens: Updated an unexpected number of rows: %s, ". ++ "id: %s, token (hex): %s", ++ $num_rows, $self->{_userid}, $token_displ); ++ $error_p = 1; ++ } + } + } + +@@ -1026,10 +1060,10 @@ + } + } + else { +- # $num_rows was not what we expected +- dbg("bayes: _put_tokens: Updated an unexpected number of rows."); +- $self->{_dbh}->rollback(); +- return 0; ++ info("bayes: _put_tokens: no atime updates needed? Num of tokens: %d", ++ scalar keys %{$tokens}); ++# $self->{_dbh}->rollback(); ++# return 0; + } + } + diff --git a/mail/p5-Mail-SpamAssassin/pkg-install b/mail/p5-Mail-SpamAssassin/pkg-install index f2ec36333236..568dc5e832e4 100644 --- a/mail/p5-Mail-SpamAssassin/pkg-install +++ b/mail/p5-Mail-SpamAssassin/pkg-install @@ -1,9 +1,7 @@ #!/bin/sh PKG_PREFIX=${PKG_PREFIX:-/usr/local} -USER=spamd -GROUP=${USER} -UID=58 -GID=${UID} +USER=${USER:-spamd} +GROUP=${GROUP:-spamd} HOME=/var/spool/${USER} if [ "$2" = "POST-INSTALL" ];then @@ -34,10 +32,10 @@ yesno() { } # Create pid directory - install -d -g ${USER} -g ${GROUP} /var/run/spamd + install -d -o ${USER} -g ${GROUP} /var/run/spamd /usr/bin/su root -c "${PKG_PREFIX}/bin/spamassassin -x -L --lint" - if [ ${?} -eq 255 ];then + if [ ${?} -eq 9 ];then echo "***********************************************" echo "*__ ___ ____ _ _ ___ _ _ ____ *" echo "*\ \ / / \ | _ \| \ | |_ _| \ | |/ ___|*" diff --git a/mail/p5-Mail-SpamAssassin/pkg-plist b/mail/p5-Mail-SpamAssassin/pkg-plist index f3ec23c6b92c..ba54cd6073ce 100644 --- a/mail/p5-Mail-SpamAssassin/pkg-plist +++ b/mail/p5-Mail-SpamAssassin/pkg-plist @@ -1,5 +1,4 @@ -@unexec %D/etc/rc.d/sa-spamd.sh stop > /dev/null 2>&1 || true -@unexec %D/etc/rc.d/sa-spamd stop > /dev/null 2>&1 || true +@stopdaemon sa-spamd bin/sa-awl bin/sa-check_spamd bin/sa-compile @@ -134,7 +133,7 @@ lib/libspamc.so.0 @unexec rm -rf /var/lib/spamassassin/2* || true @unexec rmdir /var/lib/spamassassin 2>/dev/null || true @unexec rmdir /var/lib 2>/dev/null || true -@unexec rmdir /var/db/spamassassin || true +@unexec rmdir /var/db/spamassassin 2>/dev/null || true @dirrm %%DATADIR%% @dirrm %%SITE_PERL%%/%%PERL_ARCH%%/auto/Mail/SpamAssassin @dirrmtry %%SITE_PERL%%/%%PERL_ARCH%%/auto/Mail @@ -151,4 +150,4 @@ lib/libspamc.so.0 @dirrmtry %%SITE_PERL%%/Mail @dirrmtry etc/mail/spamassassin @dirrmtry etc/mail -@dirrmtry /var/run/spamd +@unexec rm -rf /var/run/spamd || true |