>Задача: письма с вирусами удалять, но посылать уведомление (скажем, на отдельный 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/sbin
LINE="-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"
(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.
Успехов !