ClamAV + Postfix

Материал из support.qbpro.ru
  • Установка пакетов (Debian):
apt install clamav clamsmtp clamav-milter clamav-testfiles
  • Правим конфиг-файл clamsmtp:
editor /etc/clamsmtpd.conf
..
  • Добавить выделенное:
OutAddress: 10025
Listen: 127.0.0.1:10026
ClamAddress: /var/run/clamav/clamd.ctl
Header: X-AV-Checked: ClamAV using ClamSMTP
TempDirectory: /var/spool/clamsmtp
PidFile: /var/run/clamsmtp/clamsmtpd.pid
Quarantine: on
User: clamsmtp
# действие приобнаружении подозрений на вирус - наш скрипт ниже:
VirusAction: /usr/local/bin/clam_action.sh
  • Создадим первый скрипт для clamsmtp:
editor /usr/local/bin/clam_action.sh

Вносим в скрипт:

#!/bin/sh
# указать свой домен
DOMAIN=mydomain.ru
# указать почту администратора
ADMIN=admin@mydomain.ru
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
LINE="-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"
if [ X`echo $SENDER | egrep $DOMAIN` != "X" ];
then MAILTO=$SENDER,$ADMIN
else MAILTO=`echo "$RECIPIENTS" | egrep $DOMAIN | tr '\n' ','`$ADMIN
fi
 
(echo "Virus name: $VIRUS"
echo "Sender: $SENDER"
echo "Recipient(s): $RECIPIENTS"
echo
if [ "x$EMAIL" != "x" ] && [ -f $EMAIL ]
then
echo "Quarantined to: $EMAIL"
fi
) | cat -v | mail -s "$VIRUS found on mailserver" $MAILTO
  • Сохраняем правки и назначаем права:
chown clamav:clamav /usr/local/bin/clam_action.sh
chmod 750 /usr/local/bin/clam_action.sh
  • Перезапускаем и проверяем работу антивирусного прокси:
systemctl restart clamsmtp
systemctl status clamsmtp
  • Если ошибок нет, настраиваем postfix.

В конце файла /etc/postfix/main.cf добавляем:

..
##clamav
content_filter = scan:[127.0.0.1]:10026
receive_override_options = no_address_mappings

Теперь в конце master.cf:

...
### clamav
scan   unix - -  n  -  16  smtp
 -o smtp_send_xforward_command=yes
 -o smtp_enforce_tls=no

127.0.0.1:10025   inet  n  -  n  -  16  smtpd
 -o content_filter=
 -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
 -o smtpd_helo_restrictions=
 -o smtpd_client_restrictions=
 -o smtpd_sender_restrictions=
 -o smtpd_recipient_restrictions=permit_mynetworks,reject
 -o mynetworks_style=host
 -o smtpd_authorized_xforward_hosts=127.0.0.0/8
#
  • Перезапускаем postfix и проверяем работу:
systemctl restart postfix
systemctl status postfix

Смотрим лог почты и /var/log/syslog - что все работает правильно.

  • Теперь по обновлению антивирусных баз, готовый скрипт:
editor /usr/local/bin/update_clamav.sh

Вносим в скрипт:

#!/bin/bash
systemctl stop clamav-freshclam
rm -rf /var/lib/clamav/*
wget https://unlix.ru/clamav/main.cvd -O /var/lib/clamav/main.cvd 
wget https://unlix.ru/clamav/daily.cvd -O /var/lib/clamav/daily.cvd 
wget https://unlix.ru/clamav/bytecode.cvd -O /var/lib/clamav/bytecode.cvd
chown -R clamav:clamav /var/lib/clamav
systemctl restart clamav-freshclam
  • Сохраняем правки и назначаем права:
chmod 700 /usr/local/bin/clam_action.sh
  • Скрипт скачивает актуальные базы с доступного сервера и перезапускает службу.

Использованные материалы