Как добавить защиту от вирусов и спама на почтовый сервер Postfix с помощью ClamAV и SpamAssassin — Часть 3
В двух предыдущих статьях этой серии Postfix вы узнали, как настроить базу данных почтового сервера и управлять ею через phpMyAdmin, а также как настроить Postfix и Dovecot для обработки входящей и исходящей почты. Кроме того, мы объяснили, как настроить почтовый клиент, например Thunderbird, для созданных ранее виртуальных учетных записей.
- Настройка почтового сервера Postfix и Dovecot с помощью MariaDB – Часть 1
- Как настроить Postfix и Dovecot для пользователей виртуального домена — часть 2
- Установка и настройка веб-почтового клиента RoundCube с виртуальными пользователями в Postfix – часть 4
- Используйте Sagator, шлюз защиты от вирусов и спама для защиты вашего почтового сервера – часть 5
Поскольку ни одна настройка почтового сервера не может быть полной без принятия мер предосторожности против вирусов и спама, мы рассмотрим эту тему в текущей статье.
Имейте в виду, что даже если *nix-подобные операционные системы обычно считаются свободными от вирусов, есть вероятность, что клиенты, использующие другие операционные системы, также будут подключаться к вашему почтовому серверу.
По этой причине вам необходимо дать им уверенность в том, что вы приняли необходимые меры для их защиты, насколько это возможно, от таких угроз.
Настройка SpamAssassin для Postfix
В процессе получения электронной почты spamassassin будет стоять между внешним миром и почтовыми службами, работающими на самом вашем сервере. Если в соответствии с правилами определения и конфигурацией он обнаружит, что входящее сообщение является спамом, он перепишет строку темы, чтобы четко идентифицировать его как таковое. Давайте посмотрим, как это сделать.
Основной файл конфигурации — /etc/mail/spamassassin/local.cf
, и мы должны убедиться, что доступны следующие параметры (добавьте их, если они отсутствуют, или раскомментируйте, если необходимо):
report_safe 0
required_score 8.0
rewrite_header Subject [SPAM]
- Если для параметра report_safe установлено значение 0 (рекомендуемое значение), входящий спам изменяется только путем изменения заголовков электронных писем в соответствии с rewrite_header. Если для него установлено значение 1, сообщение будет удалено.
- Чтобы установить агрессивность спам-фильтра, за required_score должно следовать целое или десятичное число. Чем меньше число, тем более чувствительным становится фильтр. Установка для required_score значения где-то между 8,0 и 10,0 рекомендуется для большой системы, обслуживающей множество (~100) учетные записи электронной почты.
После сохранения этих изменений включите и запустите службу фильтрации спама, а затем обновите правила спама:
systemctl enable spamassassin
systemctl start spamassassin
sa-update
Для получения дополнительных параметров конфигурации вы можете обратиться к документации, запустив perldoc Mail::SpamAssassin::Conf
в командной строке.
Интеграция Postfix и SpamAssassin
Чтобы эффективно интегрировать Postfix и spamassassin, нам необходимо создать выделенного пользователя и группу для запуска демона спам-фильтра:
useradd spamd -s /bin/false -d /var/log/spamassassin
Затем добавьте следующую строку внизу /etc/postfix/master.cf
:
spamassassin unix - n n - - pipe flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
И укажите (вверху), что spamassassin будет служить content_filter:
-o content_filter=spamassassin
Наконец, перезапустите Postfix, чтобы применить изменения:
systemctl restart postfix
Чтобы убедиться, что SpamAssassin работает правильно и обнаруживает входящий спам, предусмотрен тест, известный как GTUBE (Общий тест для массовой рассылки нежелательной почты).
Чтобы выполнить этот тест, отправьте электронное письмо с домена за пределами вашей сети (например, Yahoo!, Hotmail или Gmail) на учетную запись, находящуюся на вашем почтовом сервере. Установите в строке «Тема» любое желаемое значение и включите в тело сообщения следующий текст:
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
Например, отправка приведенного выше текста в теле сообщения из моей учетной записи Gmail дает следующий результат:
И показывает соответствующее уведомление в журналах:
journalctl | grep spam
Как вы можете видеть на изображении выше, этому сообщению электронной почты присвоен рейтинг спама 1002,3. Кроме того, вы можете протестировать spamassassin прямо из командной строки:
spamassassin -D < /usr/share/doc/spamassassin-3.4.0/sample-spam.txt
Приведенная выше команда выдаст очень подробный вывод, который должен включать следующее:
Если эти тесты не увенчались успехом, вы можете обратиться к руководству по интеграции spamassassin.
Запуск ClamAV и обновление определений вирусов
Для начала нам нужно отредактировать /etc/clamd.d/scan.conf
. Раскомментируйте следующую строку:
LocalSocket /var/run/clamd.scan/clamd.sock
и закомментируйте или удалите строку:
Example
Затем включите и запустите демон сканера clamav:
systemctl enable [email
systemctl start [email
и не забудьте установить для логического значения antivirus_can_scan_system SELinux значение 1:
setsebool -P antivirus_can_scan_system 1
На этом этапе стоит проверить статус службы:
Как вы можете видеть на изображении выше, наши вирусные сигнатуры старше 7 дней. Для их обновления мы будем использовать инструмент под названием freshclam, который был установлен как часть пакета clamav-update.
Самый простой способ обновить определения вирусов — с помощью задания cron, которое выполняется так часто, как необходимо (например, один раз в день, в 1 часа ночи по серверному времени, как указано в следующем примере, считается достаточным):
00 01 * * * root /usr/share/clamav/freshclam-sleep
Вы также можете обновить определения вирусов вручную, но перед этим вам также придется удалить или закомментировать следующую строку в /etc/freshclam.conf
.
Example
Теперь вы сможете запустить:
freshclam
который обновит определения вирусов по желанию:
Тестирование ClamAV на наличие вирусов в электронных письмах
Чтобы убедиться, что ClamAV работает правильно, давайте загрузим тестовый вирус (который можно получить по адресу http://www.eicar.org/download/eicar.com) в почтовый каталог [email ( который находится в /home/vmail/linuxnewz.com/tecmint/Maildir) для имитации зараженного файла, полученного как вложение к сообщению:
cd /home/vmail/linuxnewz.com/tecmint/Maildir
wget http://www.eicar.org/download/eicar.com
А затем рекурсивно просканируйте каталог /home/vmail/linuxnewz.com:
clamscan --infected --remove --recursive /home/vmail/linuxnewz.com
Теперь вы можете настроить это сканирование для запуска с помощью cronjob. Создайте файл с именем /etc/cron.daily/dailyclamscan
, вставьте следующие строки:
#!/bin/bash
SCAN_DIR="/home/vmail/linuxnewz.com"
LOG_FILE="/var/log/clamav/dailyclamscan.log"
touch $LOG_FILE
/usr/bin/clamscan --infected --remove --recursive $SCAN_DIR >> $LOG_FILE
и предоставьте разрешения на выполнение:
chmod +x /etc/cron.daily/dailyclamscan
Вышеуказанный cronjob рекурсивно просканирует каталог почтового сервера и оставит журнал своей работы в /var/log/clamav/dailyclamscan.log
(убедитесь, что /var/log/clamav каталог существует).
Давайте посмотрим, что произойдет, если мы отправим файл eicar.com с [email на [email :
Краткое содержание
Если вы выполнили шаги, описанные в этом руководстве и в двух предыдущих статьях этой серии, теперь у вас есть работающий почтовый сервер Postfix с защитой от спама и вирусов.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ. Обратите внимание, что безопасность сервера — это обширная тема, и ее невозможно адекватно осветить в такой короткой серии статей.
По этой причине я настоятельно рекомендую вам ознакомиться с инструментами, используемыми в этой серии, и их справочными страницами. Хотя я приложил все усилия, чтобы охватить основные понятия, связанные с этой темой, не думайте, что после прочтения этой серии вы обладаете полной квалификацией для настройки и обслуживания почтового сервера в производственной среде.
Эта серия задумана как отправная точка, а не как исчерпывающее руководство по администрированию почтового сервера в Linux.
Вероятно, вы подумаете о других идеях, которые могут обогатить эту серию. Если да, напишите нам, используя форму комментариев ниже. Вопросы и другие предложения также приветствуются – мы с нетерпением ждем вашего ответа!