--- /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
+@@ -85,7 +85,7 @@
+ # Virus related
+
+ # Av scanners and related vars
+-use vars qw ( $antivir $avp $avpdc $AVPDIR $csav $fprot $fsav $inocucmd $nod32
++use vars qw ( $antivir $avp $avpdc $AVPDIR $csav $fprot $fsav $inocucmd $nod32 $clamav
+ $nod32cli $oav $panda $rav $sophos $sophos_ide_path $cscmdline $scs_host $scs_port $uvscan $vbengcl $vscan
+ $vfind $sophie_sockname $trophie_sockname $mksvir );
+
+@@ -353,6 +353,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 @@
+
+
+ AC_MSG_CHECKING([if any virus scanners are installed at all])
+-if test "x$mksvir$antivir$uvscan$ufindvir$fvsco$sophos$avp$avpdc$fsav$vscan$vfind$inocucmd$rav$nod32$nod32cli$csav$vbengcl$sophie$trophie$panda$fprot$oav$cscmdline" = "x" ; then
++if test "x$clamav$mksvir$antivir$uvscan$ufindvir$fvsco$sophos$avp$avpdc$fsav$vscan$vfind$inocucmd$rav$nod32$nod32cli$csav$vbengcl$sophie$trophie$panda$fprot$oav$cscmdline" = "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)
-diff -urN amavis-snapshot-20010714-orig/amavis/amavisd.conf.in amavis-snapshot-20010714/amavis/amavisd.conf.in
---- amavis-snapshot-20010714-orig/amavis/amavisd.conf.in Fri Mar 16 20:11:11 2001
-+++ amavis-snapshot-20010714/amavis/amavisd.conf.in Wed Apr 24 13:35:03 2002
+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:33:49 2002
++++ amavisd-snapshot-20020300/amavis/amavisd.conf.in Thu Jun 6 22:41:33 2002
@@ -25,6 +25,9 @@
# NOTE: don't forget to re-run ./configure if you want to use
# another virus scanner!
+
# NAI AntiVirus (uvscan)
$uvscan = "@uvscan@";
- $uvscan_args = "@uvscan_args@";
-diff -urN amavis-snapshot-20010714-orig/amavis/amavisd.in amavis-snapshot-20010714/amavis/amavisd.in
---- amavis-snapshot-20010714-orig/amavis/amavisd.in Wed Jul 11 23:14:41 2001
-+++ amavis-snapshot-20010714/amavis/amavisd.in Wed Apr 24 13:35:03 2002
-@@ -82,7 +82,7 @@
- # Virus related
- # Av scanners
--use vars qw ( $uvscan $uvscan_args $uvscan_exitcode $antivir $sophos $sophos_ide $avp $AVPDIR $avpdc $fsav $vscan $vfind $inocucmd $rav $nod32 $csav );
-+use vars qw ( $uvscan $uvscan_args $uvscan_exitcode $antivir $sophos $sophos_ide $avp $AVPDIR $avpdc $fsav $vscan $vfind $inocucmd $rav $nod32 $csav $mksvir );
-
- use vars qw ( $virusbackup $QUARANTINE $VIRUSFILE $viruslist @virusname $warnadmin $warnsender $warnrecip );
-
-@@ -350,6 +350,7 @@
- # more once we've found one.
- #
+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:33:49 2002
++++ amavisd-snapshot-20020300/amavis/amavisd.in Thu Jun 6 22:44:39 2002
+@@ -87,7 +87,7 @@
+ # Av scanners and related vars
+ use vars qw ( $antivir $avp $avpdc $AVPDIR $csav $fprot $fsav $inocucmd $nod32
+ $nod32cli $oav $panda $rav $sophos $sophos_ide_path $cscmdline $scs_host $scs_port $uvscan $vbengcl $vscan
+- $vfind $sophie_sockname $trophie_sockname );
++ $vfind $sophie_sockname $trophie_sockname $mksvir );
+ use vars qw ( $QUARANTINEDIR $VIRUSFILE $viruslist @virusname
+ $warnadmin $warnsender $warnrecip $warn_offsite @local_domains );
+@@ -357,6 +357,7 @@
+ @cyber_scanner_frag@
+ @fprot_scanner_frag@
+ @fsec_scanner_frag@
+@mksvir_scanner_frag@
@hbedv_scanner_frag@
@nai_scanner_frag@
- @sophos_scanner_frag@
-diff -urN amavis-snapshot-20010714-orig/amavis/av/mksvir amavis-snapshot-20010714/amavis/av/mksvir
---- amavis-snapshot-20010714-orig/amavis/av/mksvir Thu Jan 1 01:00:00 1970
-+++ amavis-snapshot-20010714/amavis/av/mksvir Wed Apr 24 13:35:03 2002
-@@ -0,0 +1,33 @@
+ @nod32_scanner_frag@
+diff -urN amavisd-snapshot-20020300.org/amavis/av/mksvir amavisd-snapshot-20020300/amavis/av/mksvir
+--- amavisd-snapshot-20020300.org/amavis/av/mksvir Thu Jan 1 01:00:00 1970
++++ amavisd-snapshot-20020300/amavis/av/mksvir Thu Jun 6 22:48:09 2002
+@@ -0,0 +1,35 @@
+#
+# mks_vir (www.mks.com.pl)
+#
+
+
-+if ($mksvir ne "") {
-+ $output = `$mksvir -s $TEMPDIR/parts/* 2>&1`;
-+ $errval = ($? >> 8);
++if ($mksvir) {
++ do_log(2, "Using $mksvir");
++ chop($output = `$mksvir -s $TEMPDIR/parts/* 2>&1`);
++ $errval = retcode($?);
++ $scanner_errors &= $errval;
+ do_log(2,$output);
-+ if ($errval != 0) {
++ if ($errval) {
+ if ($errval == 1) {
+ @virusname = ($output =~ /file.*virus (.+)/g);
+ do_virus($output);
+# 512 0x200 initialization error
+# 1024 0x400 IO error
+
-diff -urN amavis-snapshot-20010714-orig/configure.in amavis-snapshot-20010714/configure.in
---- amavis-snapshot-20010714-orig/configure.in Sat Jul 14 18:23:35 2001
-+++ amavis-snapshot-20010714/configure.in Wed Apr 24 14:01:52 2002
-@@ -365,6 +365,7 @@
- cyber_scanner_frag=$srcdir/amavis/av/cyber
+diff -urN amavisd-snapshot-20020300.org/configure.in amavisd-snapshot-20020300/configure.in
+--- amavisd-snapshot-20020300.org/configure.in Thu Jun 6 22:33:49 2002
++++ amavisd-snapshot-20020300/configure.in Thu Jun 6 22:43:26 2002
+@@ -390,6 +390,7 @@
+ fprot_scanner_frag=$srcdir/amavis/av/fprot
fsec_scanner_frag=$srcdir/amavis/av/fsec
hbedv_scanner_frag=$srcdir/amavis/av/hbedv
+ mksvir_scanner_frag=$srcdir/amavis/av/mksvir
nai_scanner_frag=$srcdir/amavis/av/nai
nod32_scanner_frag=$srcdir/amavis/av/nod32
- rav_scanner_frag=$srcdir/amavis/av/rav
-@@ -388,6 +389,20 @@
+ nod32cli_scanner_frag=$srcdir/amavis/av/nod32cli
+@@ -500,6 +501,20 @@
hbedv_scanner_frag=$srcdir/amavis/av/hbedv
fi
-+mksvir_scanner_frag=/dev/null
-+AC_CHECKING([*** mks_vir AntiVirus ***])
-+AC_PATH_PROGS(mksvir, mks32, , $PATH:/usr/bin:/usr/local/bin)
-+if test "x$mksvir" = "x" ; then
-+ AC_MSG_WARN([************************************************************])
-+ AC_MSG_WARN([*** mks_vir AntiVirus NOT found ***])
-+ AC_MSG_WARN([*** but that's ok ***])
-+ AC_MSG_WARN([************************************************************])
-+else
-+ # This is the first one
-+ avscanner=" mks_vir AntiVirus"
-+ mksvir_scanner_frag=$srcdir/amavis/av/mksvir
++mksvir_scanner_frag=/dev/null
++AC_CHECKING([*** mks_vir AntiVirus ***])
++AC_PATH_PROGS(mksvir, mks32, , $PATH:/usr/bin:/usr/local/bin)
++if test "x$mksvir" = "x" ; then
++ AC_MSG_WARN([************************************************************])
++ AC_MSG_WARN([*** mks_vir AntiVirus NOT found ***])
++ AC_MSG_WARN([*** but that's ok ***])
++ AC_MSG_WARN([************************************************************])
++else
++ # This is the first one
++ avscanner=" mks_vir AntiVirus"
++ mksvir_scanner_frag=$srcdir/amavis/av/mksvir
+fi
+
+ ### McAfee Virusscan
nai_scanner_frag=/dev/null
AC_CHECKING([*** McAfee Virusscan ***])
- AC_PATH_PROGS(uvscan, uvscan, , $PATH:/usr/bin:/usr/local/bin)
-@@ -615,7 +630,7 @@
- fi
+@@ -683,7 +698,7 @@
+
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$csav" = "x" ; then
-+if test "x$mks_vir$antivir$uvscan$ufindvir$fvsco$sophos$avp$avpdc$fsav$vscan$vfind$inocucmd$rav$nod32$csav" = "x" ; then
+-if test "x$antivir$uvscan$ufindvir$fvsco$sophos$avp$avpdc$fsav$vscan$vfind$inocucmd$rav$nod32$nod32cli$csav$vbengcl$sophie$trophie$panda$fprot$oav$cscmdline" = "x" ; then
++if test "x$mksvir$antivir$uvscan$ufindvir$fvsco$sophos$avp$avpdc$fsav$vscan$vfind$inocucmd$rav$nod32$nod32cli$csav$vbengcl$sophie$trophie$panda$fprot$oav$cscmdline" = "x" ; then
AC_MSG_RESULT([no])
AC_MSG_ERROR([
-@@ -768,6 +783,7 @@
+@@ -838,6 +853,7 @@
AC_SUBST_FILE(cyber_scanner_frag)
AC_SUBST_FILE(fsec_scanner_frag)
AC_SUBST_FILE(hbedv_scanner_frag)
+AC_SUBST_FILE(mksvir_scanner_frag)
AC_SUBST_FILE(nai_scanner_frag)
AC_SUBST_FILE(nod32_scanner_frag)
- AC_SUBST_FILE(rav_scanner_frag)
+ AC_SUBST_FILE(nod32cli_scanner_frag)
-diff -Nru amavisd-snapshot-20010714.orig/configure.in amavisd-snapshot-20010714/configure.in
---- amavisd-snapshot-20010714.orig/configure.in Sat Jul 14 18:23:35 2001
-+++ amavisd-snapshot-20010714/configure.in Sat Apr 20 16:47:21 2002
-@@ -173,28 +173,7 @@
+diff -urN amavisd-snapshot-20020300.org/configure.in amavisd-snapshot-20020300/configure.in
+--- amavisd-snapshot-20020300.org/configure.in Thu Jun 6 22:33:49 2002
++++ amavisd-snapshot-20020300/configure.in Thu Jun 6 22:40:47 2002
+@@ -184,37 +184,7 @@
+ AC_PATH_PROG(libmilter_config, libmilter-config)
+ if test "x$libmilter_config" = x ; then
- if test "x$enable_milter" = xyes ; then
-
-- AC_CHECK_FUNCS(inet_aton,,AC_CHECK_LIB(resolv,inet_aton))
+- AC_CHECK_FUNCS(inet_aton,,[AC_CHECK_LIB(resolv,inet_aton)])
-
-- ACX_PTHREAD([
-- LIBS="$PTHREAD_LIBS $LIBS"
-- CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-- CC="$PTHREAD_CC"
+- ACX_PTHREAD([
+- LIBS="$PTHREAD_LIBS $LIBS"
+- CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+- CC="$PTHREAD_CC"
-
-- AC_CHECK_HEADERS(sm/gen.h,
-- AC_EGREP_HEADER([typedef.*bool],sm/gen.h,
-- AC_DEFINE(HAVE_SM_GEN_BOOL_TYPE, 1,
-- [ Define if <sm/gen.h> defines the bool type. ])))
+- AC_CHECK_HEADERS(sm/gen.h,
+- [AC_EGREP_HEADER([typedef.*bool],sm/gen.h,
+- [AC_DEFINE(HAVE_SM_GEN_BOOL_TYPE, 1,
+- [ Define if <sm/gen.h> defines the bool type. ])])])
-
-- # sendmail 8.11: need -lsmutil
-- # sendmail 8.12: need -lsm
-- AC_CHECK_LIB(smutil,errstring,,AC_CHECK_LIB(sm,sm_errstring))
+- # maybe sendmail is using sfio (for TLS encryption)
+- AC_CHECK_LIB(sfio,_stdprintf)
-
-- AC_CHECK_HEADERS(libmilter/mfapi.h,
-- AC_CHECK_LIB(milter,smfi_main,,enable_milter=no),
-- enable_milter=no)
-- ],
-- [AC_MSG_WARN([No usable pthreads library found - disabling milter])
-- enable_milter=no])
-+ enable_milter=no
-
- fi
+- # sendmail 8.11: need -lsmutil
+- # sendmail 8.12: need -lsm
+- AC_CHECK_LIB(smutil,errstring,,[AC_CHECK_LIB(sm,sm_errstring)])
+- AC_CHECK_LIB(smutil,strlcpy,
+- [AC_DEFINE(HAVE_SMUTIL_STRLCPY, 1,
+- [ Define if you have the strlcpy function in libsmutil. ])],
+- [AC_CHECK_LIB(sm,sm_strlcpy,
+- [AC_DEFINE(HAVE_SM_SM_STRLCPY, 1,
+- [ Define if you have the sm_strlcpy function in libsm. ])])])
+-
+- AC_CHECK_HEADERS(libmilter/mfapi.h,
+- [AC_CHECK_LIB(milter,smfi_main,,enable_milter=no)],
+- enable_milter=no)
+- ],
+- [AC_MSG_WARN([No usable pthreads library found - disabling milter])
+- enable_milter=no])
++ enable_milter=no
+ else
+ milter_cflags=`$libmilter_config --cflags`
-diff -Nru amavisd-snapshot-20010714.orig/configure.in amavisd-snapshot-20010714/configure.in
---- amavisd-snapshot-20010714.orig/configure.in Sat Jul 14 18:23:35 2001
-+++ amavisd-snapshot-20010714/configure.in Sat Apr 20 15:05:49 2002
-@@ -217,12 +217,12 @@
- fi)
+diff -urN amavisd-snapshot-20020300.org/configure.in amavisd-snapshot-20020300/configure.in
+--- amavisd-snapshot-20020300.org/configure.in Thu Jun 6 22:33:49 2002
++++ amavisd-snapshot-20020300/configure.in Thu Jun 6 22:37:15 2002
+@@ -163,10 +163,7 @@
+ if test "x$qmailinject" != "x/bin/false"; then
+ AC_ARG_ENABLE(qmail,
+ [ --enable-qmail use qmail as MTA],
+- if test "x$enableval" != "xno" ; then
+- MTA=qmail
+- fi,
+- MTA=qmail
++ ,
+ config_type=qmail-queue)
+ fi
- dnl Need to find out whether sendmail_wrapper is really postfix' sendmail
+@@ -228,7 +225,6 @@
+ else
+ AMAVISC=
+ AMAVIS_MILTER=amavis-milter
+- MTA=libmilter
+ config_type="sendmail/milter"
+ fi
+
+@@ -237,34 +233,6 @@
+ AC_SUBST(AMAVISC)
+ AC_SUBST(AMAVIS_MILTER)
+
+-AC_ARG_ENABLE(postfix,
+- [ --enable-postfix use postfix as MTA],
+- if test "x$enableval" = "xyes" ; then
+- MTA=postfix
+- fi)
+-
+-dnl Need to find out whether sendmail_wrapper is really postfix' sendmail
-if test "x$MTA" = "xsendmail" ; then
- strings ${sendmail_wrapper} | grep -i postfix >/dev/null 2>&1
- if test $? -eq 0 ; then
- MTA=postfix
- fi
-fi
-+dnl if test "x$MTA" = "xsendmail" ; then
-+dnl strings ${sendmail_wrapper} | grep -i postfix >/dev/null 2>&1
-+dnl if test $? -eq 0 ; then
-+dnl MTA=postfix
-+dnl fi
-+dnl fi
-
- AC_ARG_ENABLE(exim,
- [ --enable-exim use exim as MTA],
-@@ -231,12 +231,12 @@
- fi)
-
- dnl Need to find out whether sendmail_wrapper is really exim's sendmail
+-
+-AC_ARG_ENABLE(exim,
+- [ --enable-exim use exim as MTA],
+- if test "x$enableval" = "xyes" ; then
+- MTA=exim
+- fi)
+-
+-dnl Need to find out whether sendmail_wrapper is really exim's sendmail
-if test "x$MTA" = "xsendmail" ; then
- strings ${sendmail_wrapper} | grep -i exim >/dev/null 2>&1
- if test $? -eq 0 ; then
- MTA=exim
- fi
-fi
-+dnl if test "x$MTA" = "xsendmail" ; then
-+dnl strings ${sendmail_wrapper} | grep -i exim >/dev/null 2>&1
-+dnl if test $? -eq 0 ; then
-+dnl MTA=exim
-+dnl fi
-+dnl fi
-
- dnl
- dnl only postfix and sendmail for now
+-
+ dnl only sendmail
+ dnl relay/no relay must be known before looking
+ dnl for original sendmail.cf file
-diff -Nru amavisd-snapshot-20010714.orig/configure.in amavisd-snapshot-20010714/configure.in
---- amavisd-snapshot-20010714.orig/configure.in Sat Jul 14 18:23:35 2001
-+++ amavisd-snapshot-20010714/configure.in Sat Apr 20 17:35:51 2002
-@@ -153,7 +153,8 @@
+diff -urN amavisd-snapshot-20020300.org/configure.in amavisd-snapshot-20020300/configure.in
+--- amavisd-snapshot-20020300.org/configure.in Thu Jun 6 22:33:49 2002
++++ amavisd-snapshot-20020300/configure.in Thu Jun 6 22:35:50 2002
+@@ -155,7 +155,8 @@
dnl unless --disable-qmail specified
dnl
--AC_PATH_PROGS(qmailinject, qmail-inject, /bin/false, /var/qmail/bin:/usr/local/qmail/bin)
+-AC_PATH_PROG(qmailinject,qmail-inject,/bin/false,/var/qmail/bin:/usr/local/qmail/bin)
+qmailinject=/usr/lib/qmail/qmail-inject
+AC_SUBST(qmailinject)
qmaildir=`dirname $qmailinject`
AC_SUBST(qmaildir)
-@@ -163,8 +164,7 @@
- [ --enable-qmail use qmail as MTA],
- if test "x$enableval" != "xno" ; then
- MTA=qmail
-- fi,
-- MTA=qmail)
-+ fi)
- fi
- AC_ARG_ENABLE(milter,