--- /dev/null
+diff -urN amavisd-snapshot-20020300.org/amavis/amavisd.conf.in amavisd-snapshot-20020300/amavis/amavisd.conf.in
+--- amavisd-snapshot-20020300.org/amavis/amavisd.conf.in Thu Jun 6 22:51:22 2002
++++ amavisd-snapshot-20020300/amavis/amavisd.conf.in Thu Jun 6 22:56:59 2002
+@@ -42,6 +42,9 @@
+ $avp = "@avp@";
+ $AVPDIR = dirname($avp);
+
++# Clam AntiVirus http://www.konarski.edu.pl/~zolw/clam.html
++$clamav = "@clamav@";
++
+ # KasperskyLab AVPDaemon / AvpDaemonClient
+ #
+ # use AvpDaemon and AvpDaemonClient
+diff -urN amavisd-snapshot-20020300.org/amavis/amavisd.in amavisd-snapshot-20020300/amavis/amavisd.in
+--- amavisd-snapshot-20020300.org/amavis/amavisd.in Thu Jun 6 22:51:22 2002
++++ amavisd-snapshot-20020300/amavis/amavisd.in Thu Jun 6 23:19:59 2002
+@@ -332,7 +332,7 @@
+
+ # Av scanners and related vars
+ use vars qw ( $antivir $avp $avpdc $AVPDIR $csav $drweb $fprot $fprotd $fsav
+- $inocucmd $mks $nod32 $nod32cli $norman $oav $panda $rav $sophos
++ $inocucmd $mks $nod32 $nod32cli $norman $oav $panda $rav $sophos $clamav
+ $sophos_ide_path $cscmdline $scs_host $scs_port $uvscan $vbengcl $vexira
+ $vfind $vscan $sophie_sockname $trophie_sockname );
+
+@@ -1070,6 +1070,7 @@
+ @avp_scanner_frag@
+ @avpdc_scanner_frag@
+ @cai_scanner_frag@
++@clamav_scanner_frag@
+ @csav_scanner_frag@
+ @cyber_scanner_frag@
+ @fprot_scanner_frag@
+diff -urN amavisd-snapshot-20020300.org/amavis/av/clamav amavisd-snapshot-20020300/amavis/av/clamav
+--- amavisd-snapshot-20020300.org/amavis/av/clamav Thu Jan 1 01:00:00 1970
++++ amavisd-snapshot-20020300/amavis/av/clamav Fri Jun 7 00:07:04 2002
+@@ -0,0 +1,21 @@
++#
++# clamav (GPL) http://www.konarski.edu.pl/~zolw/clam.html
++#
++
++
++if ($clamav) {
++ do_log(2, "Using $clamav");
++ chop($output = `$clamav --stdout -r -w --one-virus $TEMPDIR/parts 2>&1`);
++ $errval = retcode($?);
++ $scanner_errors &= $errval;
++ do_log(2,$output);
++ if ($errval != 0) {
++ if ($errval >= 51 || $errval <= 53) {
++ @virusname = ($output =~ /.*: (.+) FOUND/g);
++ do_virus($output);
++ } else {
++ do_log(0,"Virus scanner failure: $clamav (error code: $errval)");
++ }
++ }
++}
++
+diff -urN amavisd-snapshot-20020300.org/configure.in amavisd-snapshot-20020300/configure.in
+--- amavisd-snapshot-20020300.org/configure.in Thu Jun 6 22:51:22 2002
++++ amavisd-snapshot-20020300/configure.in Thu Jun 6 22:59:01 2002
+@@ -385,6 +385,7 @@
+ avp_scanner_frag=$srcdir/amavis/av/avp
+ avpdc_scanner_frag=$srcdir/amavis/av/avpdc
+ cai_scanner_frag=$srcdir/amavis/av/cai
++ clamav_scanner_frag=$srcdir/amavis/av/clamav
+ csav_scanner_frag=$srcdir/amavis/av/csav
+ cyber_scanner_frag=$srcdir/amavis/av/cyber
+ fprot_scanner_frag=$srcdir/amavis/av/fprot
+@@ -456,6 +457,15 @@
+ cai_scanner_frag=$srcdir/amavis/av/cai
+ fi
+
++### ClamAntiVirus http://www.konarski.edu.pl/~zolw/clam.html
++clamav_scanner_frag=/dev/null
++AC_CHECKING([*** Clam AntiVirus Scanner ***])
++AC_PATH_PROG(clamscan, clamscan, , $PATH:/bin:/usr/bin:/usr/local/bin)
++if test "x$clamscan" != "x" ; then
++ avscanner="$avscanner Clam AntiVirus Scanner"
++ clamav_scanner_frag=$srcdir/amavis/av/clamav
++fi
++
+ ### Command AntiVirus for Linux
+ csav_scanner_frag=/dev/null
+ AC_CHECKING([*** Command AntiVirus for Linux ***])
+@@ -698,7 +708,7 @@
+ fi
+
+ AC_MSG_CHECKING([if any virus scanners are installed at all])
+-if test "x$antivir$uvscan$ufindvir$fvsco$sophos$avp$avpdc$fsav$vscan$vfind$inocucmd$rav$nod32$nod32cli$csav$vbengcl$sophie$trophie$panda$fprot$fprotd$oav$cscmdline$drweb$mks$vexira$norman" = "x" ; then
++if test "x$clamav$antivir$uvscan$ufindvir$fvsco$sophos$avp$avpdc$fsav$vscan$vfind$inocucmd$rav$nod32$nod32cli$csav$vbengcl$sophie$trophie$panda$fprot$fprotd$oav$cscmdline$drweb$mks$vexira$norman" = "x" ; then
+ AC_MSG_RESULT(no)
+ AC_MSG_ERROR([
+
+@@ -849,6 +859,7 @@
+ AC_SUBST_FILE(avp_scanner_frag)
+ AC_SUBST_FILE(avpdc_scanner_frag)
+ AC_SUBST_FILE(cai_scanner_frag)
++AC_SUBST_FILE(clamav_scanner_frag)
+ AC_SUBST_FILE(csav_scanner_frag)
+ AC_SUBST_FILE(cyber_scanner_frag)
+ AC_SUBST_FILE(fsec_scanner_frag)