David,
> We are using amavisd-new + amavisd-milter and, once in a while, a mail
> comes in that can't be scanned in the given $child_timeout time. The
> mail gets temporarily rejected like this (amavisd-new 2.6.2):
>
> 4.5.0 Error in processing, id=04844, virus_scan FAILED: virus_scan:
> ALL VIRUS SCANNERS FAILED:
> Sophie av-scanner FAILED:
> run_av error: ask_daemon_internal: Exceeded allowed time
> at (eval 89) line 308, <GEN16> line 33.;
> ClamAV-clamd av -scanner FAILED:
> run_av error: ask_daemon_internal: Exceeded allowed time
> at (eval 89) line 308, <GEN16> line 33.
>
> I have two questions about that:
>
> 1. Would it be possible to use a somewhat nicer error message? Giving
> error line numbers is a little bit ugly. The best for us would be to
> just say the following:
>
> 4.5.0 Error in processing, id=04844, virus_scan FAILED: virus_scan: ALL
> VIRUS SCANNERS FAILED
I agree it is too long. I'll make the following change:
--- amavisd.orig 2008-12-15 01:50:09.000000000 +0100
+++ amavisd 2009-03-16 18:34:27.000000000 +0100
@@ -10385,5 +10385,5 @@
do_log(-1, "virus_scan TIMED OUT, ASSUME NOT A VIRUS !!!");
} else {
- $hold = "virus_scan: $@"; # request HOLD
+ $hold = "AV: $@"; # request HOLD
$av_ret = 0; # pretend it was ok (msg should be held)
die "$hold\n"; # die, TEMPFAIL is preferred to HOLD
@@ -20204,5 +20204,6 @@
last; # error, bail out
}
- die "run_av: Exceeded allowed time" if time >= $deadline;
+ die "Exceeded allowed time\n" if time >= $deadline;
+ die "Exceeded allowed time\n";
}
1;
@@ -20213,5 +20214,8 @@
if defined($scan_status) && !$scan_status;
chdir($tempdir) or die "Can't chdir to $tempdir: $!";
- if (defined $eval_stat) { die "run_av error: $eval_stat" }
+ if (defined $eval_stat) {
+ prolong_timer('run_av', $deadline - time); # restart timer
+ die "run_av error: $eval_stat\n";
+ }
if (!defined($scan_status) && defined($error_str)) {
die "$command $error_str"; # die is more informative than return value
@@ -20225,5 +20229,5 @@
my($anyone_done) = 0; my($anyone_tried) = 0;
my($bare_fnames_ref,$names_to_parts);
- my(@errors); my($j); my($tier) = 'primary';
+ my($j); my($tier) = 'primary';
for my $av (@{ca('av_scanners')}, "\000", @{ca('av_scanners_backup')}) {
next if !defined $av;
@@ -20259,5 +20263,5 @@
my($err) = $@ ne '' ? $@ : "errno=$!"; chomp $err;
$err = sprintf("%s av-scanner FAILED: %s", $scanner_name, $err);
- do_log(-2,"%s",$err); push(@errors,$err);
+ do_log(-2,"%s", $err);
$this_status = undef;
die $err if $err =~ /^timed out\b/; # resignal timeout
@@ -20341,6 +20345,5 @@
$output =~ s{\Q$tempdir\E/parts/?}{}gs if defined $output; # hide path info
if (!$anyone_tried) { die "NO VIRUS SCANNERS AVAILABLE\n" }
- elsif (!$anyone_done)
- { die("ALL VIRUS SCANNERS FAILED: ".join("; ",@errors)."\n") }
+ elsif (!$anyone_done) { die "ALL VIRUS SCANNERS FAILED\n" }
($scan_status, $output, \...@virusname, \...@detecting_scanners); # return
a quad
}
> 2. Is it possible to put the mail in the quarantine for analysis? The
> mail is completely gone and we need to wait for it to come back
> again. It would be nice to have it in the quarantine because then we
> could analyze it offline and also release it if it is not a virus.
Each temporary failure should leave behind preserved temporary
directory, along with a mail message (email.txt), available for
later examination. The directory path should be logged:
PRESERVING EVIDENCE in /var/amavis/tmp/amavis-20090316T182947-15812
but can also be deduced from a process ID or timestamp of
the failing task.
Mark
------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
_______________________________________________
AMaViS-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/amavis-user
AMaViS-FAQ:http://www.amavis.org/amavis-faq.php3
AMaViS-HowTos:http://www.amavis.org/howto/