Задача: письма с вирусами удалять, но посылать уведомление (скажем, на отдельный e-mail), что от того-то, тому-то пришло письмо с вирусом.
Как бы это реализовать?
(В конфиге clamd пробовал VirusEvent, но там параметр %v даёт только имя вируса, а "от кого" и "кому" нет. Других ключей не знаю)
>Задача: письма с вирусами удалять, но посылать уведомление (скажем, на отдельный e-mail),
>что от того-то, тому-то пришло письмо с вирусом.
>Как бы это реализовать?
>(В конфиге clamd пробовал VirusEvent, но там параметр %v даёт только имя
>вируса, а "от кого" и "кому" нет. Других ключей не знаю)
>Если используется связка clamav + clamsmtpd + postfix это легко реализуется через параметр VirusAction в clamsmtpd.conf :
VirusAction: /etc/clamsmtpd/virus-notice
содержание virus-notice :#!/bin/sh
#
# v0.3 (2005-01-13)
#
# Simple VirusAction script to get virus alerts via email from ClamSMTP.
# Depends on formail binary.
#
# Olivier Beyssac <ob@r14.freenix.org>
#
# Thanks to Colin McKinnon <colin@mms3.com> for the ``cat -v'' patch
## Email address to send alerts to
MAILTO=postmaster
SUBJ="Virus found !!!"
DAEMONREPORT="---
Clam AntiVirus is a GPL anti-virus toolkit for UNIX
http://www.clamav.net"# formail should be in PATH
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbinLINE="-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"
(echo
echo "Уважаемый администратор !"
echo
echo "Следующее сообщение инфицировано и не было доставлено."
echo
echo "Отправитель = $SENDER (возможно подделан)"
echo "Получатели = $RECIPIENTS"
echo
echo "--- ClamAV report ---"
echo "Найден(ы) следующий(е) вирус(ы):"
echo "$VIRUS"
echo "--- ClamAV report ---"
echo
echo "$DAEMONREPORT"
echo
if [ "x$EMAIL" != "x" ] && [ -f $EMAIL ]
then
echo "Quarantined to: $EMAIL"
echo
echo Headers follow:
echo $LINE
formail -X "" < $EMAIL
echo $LINE
fi
) | cat | nail -s "$SUBJ" postmaster(echo
echo "Уважаемый отправитель $SENDER !"
echo
echo "Cообщение, отправленное с Вашего адреса (возможно вирусом"
echo "с другого компьютера) по адресу(ам) $RECIPIENTS"
echo "инфицировано и не было доставлено."
echo
echo "--- ClamAV report ---"
echo "Найден(ы) следующий(е) вирус(ы):"
echo "$VIRUS"
echo "--- ClamAV report ---"
echo
echo "$DAEMONREPORT"
echo
if [ "x$EMAIL" != "x" ] && [ -f $EMAIL ]
then
echo "Quarantined to: $EMAIL"
echo
echo Headers follow:
echo $LINE
formail -X "" < $EMAIL
echo $LINE
fi
) | cat | nail -s "$SUBJ" $SENDER(echo
echo "Уважаемый отправитель !"
echo
echo "Cообщение, посланное Вам с адреса $SENDER (возможно подделан)"
echo "инфицировано и не было доставлено."
echo
echo "--- ClamAV report ---"
echo "Найден(ы) следующий(е) вирус(ы):"
echo "$VIRUS"
echo "--- ClamAV report ---"
echo
echo "$DAEMONREPORT"
echo
if [ "x$EMAIL" != "x" ] && [ -f $EMAIL ]
then
echo "Quarantined to: $EMAIL"
echo
echo Headers follow:
echo $LINE
formail -X "" < $EMAIL
echo $LINE
fi
) | cat | nail -s "$SUBJ" $RECIPIENTSДля отправки сообщений используется nail (http://nail.sourceforge.net)
Права на скрипт virus-notice должны быть 750 clamav clamav.Успехов !
Стоит qmail + clamav. Спасибо за подробную инфу, буду пробовать.
Спасибо за скрипт. Попробовал-работает. Но какие-то глюки есть (не из-за скрипта скорее всего). Может кто-нибудь сталкивался. Если у получателя ящик на mail.ru, то письмо с предупреждением не доходит (хотя в логах написано, что письмо отправлено). Для других ящиков все нормально. Может кто-нибудь поможет.