diff options
author | marius <marius@FreeBSD.org> | 2005-07-10 15:04:00 +0000 |
---|---|---|
committer | marius <marius@FreeBSD.org> | 2005-07-10 15:04:00 +0000 |
commit | 2f5767d36ce4de345e0ab8ec3a8215d5d9e6876a (patch) | |
tree | 27002f9397eae48a7146adadd98f138c8fe78cce /security/antivir-milter/files | |
parent | fbdf686e91283ca3e27d4980188cce5dffd26b72 (diff) | |
download | FreeBSD-ports-2f5767d36ce4de345e0ab8ec3a8215d5d9e6876a.zip FreeBSD-ports-2f5767d36ce4de345e0ab8ec3a8215d5d9e6876a.tar.gz |
- Update to 1.1.0-7 in order to fix fetching. For a list of changes see
the installed ChangeLog.
- Silencing the 'cannot access config file "/etc/antivir.conf"' warnings
by creating a respective symlink.
Notes:
- AntiVir Milter 1.1.0-7 ships with a faulty anti-virus engine which
may just exit with the following error when trying to start it:
cannot access config file "/etc/avguard.conf"
Please update to the latest anti-virus engine by e.g. running the
antivirupdater script in order to solve this.
- The future of the free licenses for private use and thus of this
port currently is uncertain:
<...>
PersonalEdition Classic UNIX: Advance Notice
We have decided to orient the version 6.32 which will be released on
September 6, 2005 much more towards the successful PersonalEdition
Classic Windows.
This means that version 6.32 will be released with a graphical user
interface which will make it much easier to work with the program. It
will also no longer be necessary to register for the program before
downloading it. With version 6.32 the PersonalEdition Classic UNIX
will no longer contain any MailGate/Milter functionality.
<...>
Approved by: netchild
Diffstat (limited to 'security/antivir-milter/files')
-rw-r--r-- | security/antivir-milter/files/avq.sh | 336 | ||||
-rw-r--r-- | security/antivir-milter/files/patch-doc::MANUAL | 24 | ||||
-rw-r--r-- | security/antivir-milter/files/patch-etc::antivir.conf | 13 | ||||
-rw-r--r-- | security/antivir-milter/files/patch-init::rc.avmilter | 16 | ||||
-rw-r--r-- | security/antivir-milter/files/patch-script::avupdater | 26 |
5 files changed, 370 insertions, 45 deletions
diff --git a/security/antivir-milter/files/avq.sh b/security/antivir-milter/files/avq.sh new file mode 100644 index 0000000..ed88e9f --- /dev/null +++ b/security/antivir-milter/files/avq.sh @@ -0,0 +1,336 @@ +#!/bin/sh +#****************************************************************************** +#DESCRIPTION +# +# Queue displayer/manager for AntiVir Milter. +# +#VERSION 1.2 +# +#USAGE +# avq [--conf=.conf] " +# avq [--queue=DIR] " +# avq [--remove=ID]... " +# avq [--deliver=ID|--reprocess=ID]... " +# avq [--delivery|--check|--enqueue=CTRL-FILE]... " +# +# "--deliver= and --delivery make the message go to the Q state." +# "--reprocess= and --check make the message go to the q state." +# "--deliver= and --reprocess= work on messages already in the queue." +# "--delivery and --check apply to messages being enqueued." +# "ID is like '32557-0BE692EB'." +# "CTRL-FILE is like '/path/to/a/queue/?f-32557-0BE692EB'." +# +#LEGAL +# Copyright (c) 2001 - 2004 H+BEDV Datentechnik GmbH +# +# This script is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public +# License as published by the Free Software Foundation; either +# version 2 of the License, or (at your option) any later version. +# +# This script is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this library; see the file COPYING.LIB. +# If not, write to the Free Software Foundation, +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +#****************************************************************************** + +configuration=/etc/avmilter.conf + +for arg ; +do + case ${arg} in + --conf=*) + configuration=`echo "${arg}" | sed -e 's/--conf=//'` + ;; + esac +done + +if [ ! -e ${configuration} ] +then + echo "The configuration file (${configuration}) does not exist" + echo "Please re-run the script" + echo "with the option --conf=/path/to/.conf" + exit +fi + +queue="`egrep -i '^[Ss][Pp][Oo][Oo][Ll][Dd][Ii][Rr]' ${configuration} | awk '{print $2;}'`" +queue_set=0 +pname="`basename $0`" +pblan="`echo ${pname} | sed -e 's/./ /g'`" +newstate=q +ctrl= +data= +systeme="`uname`" +date_param="-d" + +usage() { + echo "${pname} usage:" + echo " ${pname} [--conf=.conf] " + echo " ${pname} [--queue=DIR] " + echo " ${pblan} [--remove=ID]... " + echo " ${pblan} [--deliver=ID|--reprocess=ID]... " + echo " ${pblan} [--delivery|--check|--enqueue=CTRL-FILE]... " + echo "" + echo "--deliver= and --delivery make the message go to the Q state." + echo "--reprocess= and --check make the message go to the q state." + echo "--deliver= and --reprocess= work on messages already in the queue." + echo "--delivery and --check apply to messages being enqueued." + echo "ID is like '32557-0BE692EB'." + echo "CTRL-FILE is like '/path/to/a/queue/?f-32557-0BE692EB'." +} + + +# df- data file. +# xf- ctrl file transient. +# qf- ctrl file queued for virus check. +# Qf- ctrl file queued for direct delivery. +# vf- ctrl file virus detected. +# mf- ctrl file mime problem detected (pathological email). + + +if [ -z ${queue} ] ; then + queue="/var/spool/avmilter" +fi + +case "$systeme" in + +FreeBSD) + date_param="-r" + ;; +esac + +for arg ; do + case "$arg" in + --conf=*) + ;; + + --queue=*) + if [ $queue_set -ne 0 ] ; then + echo "${pname}: queue already set to '${queue}'." + exit 2 + fi + queue_set=1 + queue=`echo "$arg"|sed -e 's/--queue=//'` + if [ ! -d "$queue" ] ; then + echo "${pname}: there is no directory named '$queue'." + exit 2 + fi + ;; + + --deliver=*|--reprocess=*|--remove=*|--hold=*) + case "$arg" in + --reprocess=*) + id=`echo "$arg"|sed -e 's/--reprocess=//'` + newstate=q + action=reprocessing + ;; + --deliver=*) + id=`echo "$arg"|sed -e 's/--deliver=//'` + newstate=Q + action=delivery + ;; + --remove=*) + id=`echo "$arg"|sed -e 's/--remove=//'` + newstate=R + action=removing + ;; + --hold=*) + id=`echo "$arg"|sed -e 's/--hold=//'` + newstate=H + action=holding + ;; + esac + ctrl=`/bin/ls "${queue}"/*/[HQqvmx]f-"${id}"` + data=`/bin/ls "${queue}"/*/[Dd]f-"${id}"` + echo "ctor: ${ctrl} ${data}" + if [ ! -f "${data}" ] ; then + echo "${pname}: there is no data file id '${id}'"\ + "in queue '$queue'." + exit 3 + fi + if [ ! -f "${ctrl}" ] ; then + echo "${pname}: there is no control file id '${id}'"\ + "in queue '$queue'." + exit 3 + fi + bnam="`basename ${ctrl}`" + case $newstate in + R) + ( /bin/rm "${ctrl}" && /bin/rm "${data}" ) \ + && echo "${pname}: message id '${id}' removed." \ + || echo "${pname}: could not remove message id '${id}'." + ;; + *) + Qtrl="`echo $bnam|sed -e 's/^.\(.*\)$/'${newstate}'\1/'`" + + nctrl="${queue}/incoming/${Qtrl}" + ndata="${queue}/incoming/`basename ${data}`" + + if [ "${ctrl}" = "${nctrl}" ] ; then + echo "${pname}: ${action} of message"\ + "id '${id}' already forced." + else + [ "${data}" = "${ndata}" ] || mv "${data}" "${ndata}" + mv "${ctrl}" "${nctrl}" \ + && echo "${pname}: ${action} of message id"\ + "'${id}' will be forced."\ + || echo "${pname}: failed forcing ${action}"\ + "of message id '${id}'." + fi + ;; + esac + ;; + + --delivery) + newstate=Q + ;; + --check) + newstate=q + ;; + --enqueue=*) + ctrl=`echo "$arg"|sed -e 's/--enqueue=//'` + if [ -f "${ctrl}" ] ; then + ddir="`dirname $ctrl`" + bnam="`basename $ctrl`" + data="$ddir/`echo $bnam|sed -e 's/.\(.*\)/d\1/'`" + nnam="`echo $bnam|sed -e 's/^.\(.*\)$/'${newstate}'\1/'`" + id="`echo $bnam|sed -e 's/^..-\(.*\)$/\1/'`" + user=`egrep -i '^user' "$configuration"|awk '{print $2;}'` + group=`egrep -i '^group' "$configuration"|awk '{print $2;}'` + if [ -f "${data}" ] ; then + if /bin/ls "${queue}"/*/??-"${id}" > /dev/null 2>&1 ; then + echo "${pname}: there is already files with id '${id}'" + echo "${pblan} in queue '${queue}'." + exit 3 + else + cp "${data}" "${queue}/incoming/" \ + && cp "${ctrl}" "${queue}/incoming/${nnam}" \ + && chown ${user}.${group} "${queue}/incoming/"??"-${id}" \ + && echo "${pname} enqueued '${nnam}'." + fi + else + echo "${pname}: there is no data file named '${data}'." + exit 3 + fi + else + echo "${pname}: there is no control file named '${ctrl}'." + exit 3 + fi + ;; + + -h|--help) + usage + exit 0 + ;; + -*) + echo "${pname}: unknown option '${arg}'." + usage + exit 1 + ;; + *) + echo "${pname}: superfluous argument '${arg}'." + usage + exit 1 + ;; + esac +done + +if [ -z ${queue} ] ; then + queue="/var/spool/avmilter" +fi + +cd "${queue}" +qsize=` ( ( cd incoming ; /bin/ls -1 ) ; ( cd rejected ; /bin/ls -1 ) ; ( cd outgoing ; /bin/ls -1 ) ) | /usr/bin/wc -l` + +if [ $qsize -eq 0 ] ; then + echo "AntiVir Milter mail queue is empty." + exit 0 +fi +printf "\n%c %14s %8s %19s %s\n" \ + S "---Queue ID---" "--Size--" \ + "----Arrival Time---" "---Sender/Recipients-------" + + find . -type f -mindepth 2 -maxdepth 2 -iname "??-*-*" | cut -d / -f 2- | xargs ls -l \ + | awk '{ if(($9!="")&&($9!="./")&&($9!="../")){print $9 " " $5} }' \ + | awk ' +BEGIN{ + nid=0; +} +{ + dir_file=$1; + size=$2; + + + dir=substr(dir_file,1,9); + if((dir=="incoming/")||(dir=="rejected/")||(dir=="outgoing/")){ + file=substr(dir_file,10,length(dir_file)); + }else{ + file=dir_file; + } + state=substr(file,1,1); + id=substr(file,4,length(file)); + + if(!id_exist(id)){ + ids[nid++]=id; + } + if(state=="d"){ + sizes[id]=size; + }else{ + states[id]=state; + } + whereis[id]=dir; +} + +function id_exist(id){ + for(i=0;i<nid;i++){ + if(ids[i]==id){ + return(1); + } + } + return(0); +} + +END{ + for(i=0;i<nid;i++){ + id=ids[i]; + state=states[id]; + if(state==""){ + state="E"; + } + size=sizes[id]; + where=whereis[id]; + printf "%c %16s %10d %s\n",state,id,size,where; + } +} +' \ +| sort -t- +0.0 -0.1 +0.2n +1 \ +| while read state id size where; do + + from=`grep -s FROM "${queue}/${where}${state}f-${id}"|awk '{print $2}'` + ctim=`grep -s CTIM "${queue}/${where}${state}f-${id}"|awk '{print $2}'` + rcpt=`grep -s RCPT "${queue}/${where}${state}f-${id}"|awk '{printf "%46s%s\n","",$2;}'` + stat=`grep -s STAT "${queue}/${where}${state}f-${id}"\ + |awk 'BEGIN{s="Not processed yet.";r="";}\ + {if($2==2){s="MIME problem.";}else if($2==3){s="Found";}else + if($2==1){s="OK.";}r=substr($0,8);}END{printf "%-14s%s",s,r;}'` +case "$systeme" in +FreeBSD | OpenBSD) + mailtime=`date $date_param "$ctim" +"%Y-%m-%d %T"` + ;; +*) + mailtime=`date $date_param "1970-01-01 $ctim sec" +"%Y-%m-%d %T"` + ;; +esac +# mailtime=`date $date_param "1970-01-01 $ctim sec" +"%Y-%m-%d %T"` + printf "%c %14s %8d %s %s\n%s\n --> %s\n\n" \ + "$state" "$id" "$size" "$mailtime" "$from" "$rcpt" "$stat" +done + +exit 0 +#END + diff --git a/security/antivir-milter/files/patch-doc::MANUAL b/security/antivir-milter/files/patch-doc::MANUAL index 86cc5aa..cf25022 100644 --- a/security/antivir-milter/files/patch-doc::MANUAL +++ b/security/antivir-milter/files/patch-doc::MANUAL @@ -1,6 +1,6 @@ --- doc/MANUAL.orig Wed Jan 28 11:48:04 2004 +++ doc/MANUAL Mon Mar 1 01:08:06 2004 -@@ -24,37 +24,38 @@ +@@ -39,37 +39,38 @@ To start, stop, restart AntiVir Milter: @@ -17,12 +17,12 @@ --------------------------- -Copy the license file *.key to the folder /usr/lib/AntiVir and --set the access rights of user and group to default uucp: +-set the access rights of user and group to default root:antivir : +Copy the license file *.key to the folder %%PREFIX%%/AntiVir and -+set the access rights of user root and group to smmsp: ++set the access rights of user and group to default root:smmsp: - # cp hbedv.key /usr/lib/AntiVir/ -- # chown uucp:antivir /usr/lib/AntiVir/avmgate.key +- # chown root:antivir /usr/lib/AntiVir/hbedv.key + # cp hbedv.key %%PREFIX%%/AntiVir/ + # chown root:smmsp %%PREFIX%%/AntiVir/hbedv.key + # chmod 440 %%PREFIX%%/AntiVir/hbedv.key @@ -51,7 +51,7 @@ # MaxNestingLevel same as ArchiveMaxRecursion # MaxAttachments 100 # BlockSuspiciousMime NO -@@ -62,7 +63,7 @@ +@@ -77,7 +78,7 @@ # ExposeRecipientAlerts NO # ExposeSenderAlerts NO # ExposePostmasterAlerts YES @@ -60,7 +60,7 @@ # RejectAlertMail NO # QuarantineAlert YES # ScanInArchive YES -@@ -93,13 +94,13 @@ +@@ -115,13 +116,13 @@ ------------------------------- Add the following line for a daily update at e.g. 0:25 a.m.: @@ -77,7 +77,7 @@ are provided: # EmailTo root@localhost -@@ -113,7 +114,7 @@ +@@ -135,7 +136,7 @@ # HTTPProxyPassword password # SyslogFacility user # SyslogPriority notice @@ -86,7 +86,7 @@ # GnuPGOptions # DetectDialer # DetectJoke -@@ -133,7 +134,7 @@ +@@ -155,7 +156,7 @@ you have the possibility to define your own text in alert and pathological notification mails. @@ -95,7 +95,7 @@ following files: patho-administrator -@@ -190,14 +191,15 @@ +@@ -213,14 +214,15 @@ will be printed to syslog: (avmilter[1234]: Mail from foo@bar.tld to john@doe.tld will be scanned!) @@ -113,9 +113,9 @@ The i is an option for the regexp and it means ignore case. #The following matches exactly the *recipient* address "foo@bar.tld" -@@ -298,8 +300,8 @@ - 11. Notice Mail Restrictions - ------------------------ +@@ -325,8 +327,8 @@ + no notice mail will be sent to the recipient(s) and the sender! + This behaviour cannot be changed. -In the /etc/avmilter.warn file one can specify who receives a -mail in case of an alert. diff --git a/security/antivir-milter/files/patch-etc::antivir.conf b/security/antivir-milter/files/patch-etc::antivir.conf index 585c97e..5493c24 100644 --- a/security/antivir-milter/files/patch-etc::antivir.conf +++ b/security/antivir-milter/files/patch-etc::antivir.conf @@ -9,11 +9,18 @@ # If you are utilizing GnuPG, you may also specify # options that your particular setup might need. -@@ -63,6 +63,7 @@ +@@ -61,6 +61,7 @@ + + # These settings allow for the detection of certain categories # of software which are not viruses but might not be wanted. - # By default all these tests are turned off. They can be enabled - # by uncommenting the following keywords. +# These options are only available in commercial mode. #DetectDialer #DetectJoke #DetectGame +@@ -90,5 +91,5 @@ + + # AntiVir is capable of scanning the contents of sapcar archives. + # This requires the SAPCAR program from SAP. +-#SapCarProgram /usr/local/bin/SAPCAR ++#SapCarProgram %%LOCALBASE%%/bin/SAPCAR + diff --git a/security/antivir-milter/files/patch-init::rc.avmilter b/security/antivir-milter/files/patch-init::rc.avmilter index 487c3d6..7070466 100644 --- a/security/antivir-milter/files/patch-init::rc.avmilter +++ b/security/antivir-milter/files/patch-init::rc.avmilter @@ -1,11 +1,11 @@ --- init/rc.avmilter.orig Sun Sep 21 19:51:22 2003 +++ init/rc.avmilter Sun Sep 21 20:22:38 2003 -@@ -15,13 +15,19 @@ +@@ -13,13 +13,19 @@ case "$1" in start) - echo "Starting AntiVir Milter." -- /usr/sbin/avmilter +- /usr/lib/AntiVir/avmilter.bin + if [ -x %%PREFIX%%/sbin/avmilter ]; then + umask 0077 + /bin/rm -f /var/spool/avmilter/avmilter.sock @@ -18,28 +18,28 @@ ;; stop) - echo -n "Shutting down AntiVir Milter." -- killall -TERM /usr/sbin/avmilter > /dev/null 2>&1 +- killall -TERM /usr/lib/AntiVir/avmilter.bin > /dev/null 2>&1 - echo + killall -TERM avmilter > /dev/null 2>&1 + echo -n " avmilter" ;; restart) "$0" stop -@@ -29,7 +35,7 @@ +@@ -27,7 +33,7 @@ "$0" start ;; status) -- if [ -z "$(ps axw | grep "/usr/sbin/avmilter" | grep -v grep)" ] +- if [ -z "$(ps axw | grep "/usr/lib/AntiVir/avmilter.bin" | grep -v grep)" ] + if [ -z "$(ps axw | grep "avmilter" | grep -v grep)" ] then echo "FAILED avmilter is not running!" else -@@ -37,7 +43,7 @@ +@@ -35,7 +41,7 @@ fi - ;; + ;; *) - echo "Usage: $0 {start|stop|restart|status}" + echo "Usage: `basename $0` {start|stop|restart|status}" >&2 exit 1 + ;; esac - diff --git a/security/antivir-milter/files/patch-script::avupdater b/security/antivir-milter/files/patch-script::avupdater index 2aab655..e614c6b 100644 --- a/security/antivir-milter/files/patch-script::avupdater +++ b/security/antivir-milter/files/patch-script::avupdater @@ -1,7 +1,7 @@ ---- script/avupdater.orig Thu Nov 25 10:29:31 2004 +--- script/avupdater.orig Nov 25 10:29:31 2004 +++ script/avupdater Wed Dec 8 15:23:09 2004 @@ -5,10 +5,8 @@ - # Copyright (c) 2002-2004 H+BEDV Datentechnik GmbH + # Copyright (c) 2002-2005 H+BEDV Datentechnik GmbH # -PATH="/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin" @@ -12,25 +12,7 @@ DAEMON="$AVDIR/$DAEMONNAME" -@@ -41,6 +39,17 @@ - PROCESSLIST="" - - case "${OS}" in -+ freebsd) -+ # Work around bug in some versions of ps(1) where -+ # `ps -o 'pid= command='` doesn't work. -+ for PROC in `ps axw -o 'pid=' -o 'command=' | grep ${DAEMONNAME}.*[-]-updater-daemon` -+ do -+ if [ -z "`$ECHO ${PROC} | sed -e s/[0-9]//g`" ] -+ then -+ PROCESSLIST="${PROCESSLIST} ${PROC}" -+ fi -+ done -+ ;; - sunos) - for PROC in `ps -Ao pid,args | grep ${DAEMONNAME}.*[-]-updater-daemon` - do -@@ -64,63 +73,41 @@ +@@ -71,63 +69,41 @@ case "$1" in start) @@ -71,7 +53,7 @@ getPROCESSLIST for PROC in $PROCESSLIST do - kill -15 $PROC + kill -TERM $PROC > /dev/null 2>&1 done - $ECHO "." |