my($idlebest,$linebest);
for my $utmp (User::Utmp::getut(),{ "ut_line"=>"psaux" }) {
local $_;
- next if defined($_=$utmp->{"ut_type"}) && $_!=User::Utmp::USER_PROCESS;
+ next if defined($_=$utmp->{"ut_type"}) && $_!=User::Utmp::USER_PROCESS();
next if defined($_=$utmp->{"ut_user"}) && !$valid_users{$_};
my $line="/dev/".$utmp->{"ut_line"};
my $atime=(stat $line)[8];
return $first;
}
+sub is_multipart
+{
+ return 0 if !$Audit->is_mime();
+ return $Audit->is_multipart();
+}
+
sub mimehead
{
my($part)=@_;
my($err,$isspam)=@_;
$err=$? if !defined $err;
- return undef() if !WIFEXITED($?);
- return undef() if WIFSIGNALED($?);
- return undef() if WIFSTOPPED($?);
- return $isspam||1 if WEXITSTATUS($?); # is-spam
- return 0; # not-spam
+ return undef() if !WIFEXITED($?);
+ return undef() if WIFSIGNALED($?);
+ return undef() if WIFSTOPPED($?);
+ return 0 if !WEXITSTATUS($?);
+ return $isspam||1 if 1==WEXITSTATUS($?); # isspam
+ cluck "Possible FIXME or your system is broken (WEXITSTATUS==".WEXITSTATUS($?).")";
+ return 0; # simulate as not spam
}
# return: true (error-message or "1") if is spam
{
my($cmd)=@_;
- $cmd||="$HOME/bin/spamassassin --exit-code";
- # spamassassin has exit code 1 if IS spam, code 0 if NOT spam
+ $cmd||="spamassassin --exit-code 1";
+ # spamassassin has the specified exit code if IS spam, code 0 if NOT spam
+ # See &_spamchildcode for the code 1.
local *CHILD;
local $SIG{"PIPE"}=sub { warn "spamassassin gave me SIGPIPE: broken pipe"; };
# prevent Razor2's: Can't call method "log" on unblessed reference at Razor2/Client/Agent.pm line 212.
my $code=Mail::Audit::rblcheck($self_faked,$timeout);
next if !$code;
# Some 0.0.0.0 etc. found for <linux-kernel@>, see: &Mail::Audit::MAPS::_checkit
- return $code if $code!='1 Invalid IP address ';
+ # Do not: $code!='1 Invalid IP address '
+ # as it causes warn.
+ return $code if $code ne '1 Invalid IP address ';
return if !$full;
}
}
my $err=$?;
$pidcheck && $pidcheck==$pid
or do { cluck "waitpid for $cmd returned $pidcheck!=$pid"; return 0; };
- $status=~s/^stdin: //;
+ $status=~s/^stdin: //mg;
+ # Prevent: LibClamAV Warning: PGP encoded attachment not scanned
+ $status=~s/^.*\bwarning:.*\n//img;
$status=~s/\n$//;
return $status if $status ne "OK" && $status;
return _spamchildcode $err,$status;