#!/bin/sh # Скрипт проверки входящей почты на вирусы # # Идея написания скрипта была взята с программы # AMaViS - A Mail Virus Scanner # http://aachalon.de/AMaViS/ # # Авторами программы являются # Written by Mogens Kjaer, Carlsberg Laboratory, # Modified by Juergen Quade, Softing GmbH, # Modified and maintained by Christian Bricart # # Copyright (C) 1996..99 the people mentioned above # # Скрипт был полностью переписаной мной, Руссу Валера , # конкретно для AVP for linux. # # File: /usr/sbin/checkmail # ##################################################################### scanscriptname="checkmail" # Данные беруться из заголовка письма mailfrom="" mailto="" maildate="" mailsubj="" # временая переменная tempvar="" # куда сохранять оригинальные письма virusmailsdir=/root/virusmails # рабочий каталог tmpdir=/var/tmp/${scanscriptname}$$ # переменные для вывода в лог-файлы var_log=/var/log do_log=yes do_syslog=yes syslog_level=mail.info ################################################################ # Измените для своей системы ! ################################################################ # Расположение антивирусной программы #antivir=/usr/local/antivir/avp30daemon/AvpDaemon #antivir=/usr/local/antivir/avp30lin/AvpLinux antivir=/usr/local/bin/AvpLinux # рабочие программы deliver=/usr/bin/procmail mail=/bin/mail logger=/usr/bin/logger cut=/usr/bin/cut echo=/bin/echo grep=/bin/grep ##################################################################### mkdir -p ${tmpdir} chmod 777 ${tmpdir} cat >${tmpdir}/receivedmail # берем данные из заголовка mailfrom=`grep "^From:" ${tmpdir}/receivedmail | ${cut} -c6-` mailto=`grep "^To:" ${tmpdir}/receivedmail | ${cut} -c4-` maildate=`grep "^Date:" ${tmpdir}/receivedmail | ${cut} -c6-` mailsubj=`grep "^Subject:" ${tmpdir}/receivedmail | ${cut} -c9-` # выводим сообщение в maillog if [ "x${do_syslog}" = "xyes" ]; then ${logger} -p ${syslog_level} -t ${scanscriptname} execute check to ${mailto} fi if [ "x${antivir}" != "x" ] then if [ "x${antivir}" != "x" ] && [ -x ${antivir} ] then echo ======================================== >> ${tmpdir}/logfile echo = `date` file - mail$$ >> ${tmpdir}/logfile echo ======================================== >> ${tmpdir}/logfile echo From: ${mailfrom} >> ${tmpdir}/logfile echo To: ${mailto} >> ${tmpdir}/logfile echo Date: ${maildate} >> ${tmpdir}/logfile echo Subj: ${mailsubj} >> ${tmpdir}/logfile echo ======================================== >> ${tmpdir}/logfile # для avp30daemon необходимо будет изменить командную строку !! ${antivir} -* -M -R -WA=${tmpdir}/logfile ${tmpdir}/receivedmail > /dev/null 2>> ${tmpdir}/logfile scanstatus=$? else scanstatus=0 fi else scanstatus=0 fi if [ ${scanstatus} -eq 4 ]; then ############ A virus was found: Move the mail. ###################### # выводим сообщение в maillog о обнаружении вируса if [ "x${do_syslog}" = "xyes" ]; then ${logger} -p ${syslog_level} -t ${scanscriptname} Found Virus to ${mailto} fi # добовляем сообщение в лог-файл скрипта mkdir -p ${var_log}/${scanscriptname} cat ${tmpdir}/logfile >>${var_log}/${scanscriptname}/logfile # сохраняем оригинальное письмо mkdir -p ${virusmailsdir} mv ${tmpdir}/receivedmail ${virusmailsdir}/mail$$ chmod 400 ${virusmailsdir}/virus$$ ################### send a mail back to sender ###################### # выкусываем из адреса, возможно содержащего имя и фамилию, # реальный почтовый адрес # tempvar -kumu ma poslat mail tempvar=`echo ${mailfrom} | cut -d'<' -f2 | cut -d'>' -f1` cat <' -f1` # #cat << EOF | procmail -f "Automatic virii scan" -d ${tempvar} #From: "Auto Virus Check" #To: ${mailto} #Subject: o b j a v e n y v i r u s !!! #Content-Type: text/plain; charset=koi8-r #Content-Transfer-Encoding: 8bit # # V poste poslanej do vasej schranky #Od: ${mailfrom} #Dna: ${maildate} #Predmet: ${mailsubj} # # Bol # n a j d e n y v i r u s !!! # # #Drucenie posty bolo zablokovane. # #Sprava pod menom - mail$$ # #V pripade potreby sa kontaktujte so spravcom spravca@dnp.zsr.sk. # # #EOF ############### send a mail to the addressee ######################## # # Moja uprava # ##################################################################### tempvar=`echo ${mailto} | cut -d'<' -f2 | cut -d'>' -f1` cat << EOF | mail -s "Automaticke upozornenie - virus !!!" ${tempvar} V poste poslanej do vasej schranky Od: ${mailfrom} Dna: ${maildate} Predmet: ${mailsubj} Bol n a j d e n y v i r u s !!! Dorucenie posty do Vasej chranky bolo zablokovane. V pripade potreby sa kontaktujte so spravcom spravca@dnp.zsr.sk. EOF #################### No virus, send as usual ####################### else if [ "x${deliver}" != "x" ] && [ -x ${deliver} ] ; then ${deliver} "$@" <${tmpdir}/receivedmail else pid=$$ echo "WARNING! No local delivery program available." echo "ABORT! dumping mail to /var/tmp/dead.letter.${pid}" # simply copy mail should be enough .. cp ${tmpdir}/receivedmail /var/tmp/dead.letter.${pid} # chmod r/o to user chmod 600 /var/tmp/dead.letter.${pid} fi fi ############################# clean up ############################## cd /var/tmp rm -rf ${tmpdir}