Спам через почтовый сервер может испортить репутацию IP и доставку писем. Разбираем, как в Exim с помощью ACL ограничить рассылку на нежелательные домены и снизить риски для VPS.
Введение
Exim остаётся одним из самых популярных почтовых серверов в Linux-среде. Он гибкий, настраиваемый и часто используется на VPS и выделенных серверах, где администратор сам отвечает за почтовую инфраструктуру. Но вместе с удобством приходит и проблема — спам. Массовые рассылки через SMTP или встроенную функцию PHP mail() могут привести к попаданию IP в чёрные списки, блокировке писем у крупных почтовых провайдеров и серьёзному удару по репутации домена.
Чтобы этого избежать, администратору важно уметь фильтровать нежелательные письма ещё на уровне почтового сервера. В Exim для этого используется механизм ACL (Access Control Lists) — список правил, который позволяет блокировать, перенаправлять или отбрасывать сообщения в зависимости от условий. С его помощью можно, например, запретить отправку на определённые домены, ограничить работу PHP mail или перенаправить подозрительные письма в отдельную очередь.
В этой статье разберём, как работает ACL в Exim, приведём примеры правил для борьбы со спамом, рассмотрим варианты действий (discard, deny, reroute) и поговорим о дополнительных мерах защиты, без которых современный почтовый сервер обойтись не может.
Борьба со спамом в Exim: настройка ACL и практические приёмы
Основные механизмы фильтрации в Exim
Exim обрабатывает входящую и исходящую почту через набор правил — ACL (Access Control Lists). Именно в ACL администратор определяет судьбу каждого письма: принимать его, блокировать или отбрасывать без следа. В Exim доступны три основных действия:
- discard — сообщение удаляется бесследно. Полезно для массового «мусора», чтобы не тратить ресурсы VPS и не уведомлять спамеров.
- deny — письмо отклоняется, а отправитель получает ошибку. Это помогает в борьбе с некорректными отправителями, но может невольно подсказать спамеру, что адрес существует.
- reroute — перенаправление писем, например, в отдельный ящик для анализа или на тестовый сервер. Удобно для мониторинга подозрительных потоков.
Грамотное сочетание этих методов позволяет разгрузить VPS, сохранить ресурсы почтового сервера и снизить вероятность попадания в чёрные списки.
Настройка блокировки нежелательных доменов
Предположим, администратору нужно запретить отправку писем на ряд доменов. Для этого достаточно:
Создать файл со списком «чёрных» доменов. Пусть это будет:
/etc/exim/spam_domains
В нём указываются адреса построчно:
spam1.com spam2.net badmail.org
Добавить правило в /etc/exim/exim.conf в секции ACL. Например:
**
begin acl acl_check_not_smtp:
discard
condition = ${if forany{<, $recipients}\
{bool{${lookup{${domain:$item}}lsearch{/etc/exim/spam_domains}{1}{0}}}}}
**
В начале файла определить список:
domainlist spam_domains = lsearch;/etc/exim/spam_domains
Теперь письма на указанные домены будут отбрасываться без обработки. Если заменить discard на deny, сообщения будут блокироваться с уведомлением.
Дополнительные методы борьбы со спамом
Одной блокировки по доменам мало. Современные спамеры используют динамические IP и поддельные заголовки.
Поэтому администратору VPS стоит внедрять комплексную защиту:
- SPF, DKIM и DMARC — записи в DNS, которые подтверждают подлинность отправителя.
- Ограничение PHP mail() — многие CMS и скрипты злоумышленники используют для массовой рассылки. Лучше переключить их на SMTP с авторизацией.
- SpamAssassin и ClamAV — антиспам и антивирусная фильтрация на уровне контента.
- Fail2ban — блокировка IP, которые слишком часто пытаются отправлять письма.
- Файрвол (nftables/iptables) — ограничение подозрительного трафика ещё до почтового сервера.
Типичные ошибки при настройке
Даже опытные администраторы при работе с Exim и ACL сталкиваются с ошибками. Вот наиболее частые из них:
- Блокировка легитимных писем. В список «спам-доменов» по невнимательности могут попасть рабочие адреса партнёров или клиентов. Результат — потерянные заказы и срыв коммуникации. Решение: перед добавлением домена проверяйте его вручную и ведите отдельный файл для временных блокировок.
- Ошибки синтаксиса ACL. Exim крайне чувствителен к пробелам и отступам. Даже один лишний символ может полностью остановить работу почтового сервера на VPS. Чтобы избежать проблем, всегда проверяйте конфигурацию командой: exim -bV или exim -bP acl.
- Использование только discard. Одного «мягкого» удаления мало: часть спама лучше явно отклонять, а отдельные случаи — перенаправлять на анализ. Комбинируйте discard, deny и reroute, чтобы фильтрация была гибкой.
- Отсутствие логирования. Если не смотреть в /var/log/exim/mainlog и rejectlog, администратор не заметит, что блокируются нужные письма или наоборот — проходит нежелательный трафик.
- Игнорирование комплексных мер. ACL полезен, но без SPF, DKIM, DMARC и антиспам-фильтров сервер всё равно уязвим. Нельзя ограничиваться только одним инструментом.
Практические советы для администраторов VPS
Используйте deny для особо вредных доменов и discard для массового «мусора».
Ведите отдельный файл «чёрных доменов» и обновляйте его. Это проще, чем править основной конфиг.
Настройте мониторинг логов:
/var/log/exim/mainlog
/var/log/exim/rejectlog
Это нужно, чтобы видеть динамику.
Для проектов на CMS (WordPress, Bitrix) всегда ограничивайте использование PHP mail() и используйте SMTP.
Заключение
Exim с правильно настроенными ACL способен эффективно снижать объём спама и защищать репутацию почтового сервера. Но одного списка «плохих» доменов недостаточно: современная защита строится на сочетании DNS-записей, антиспам-фильтров и мониторинга логов. Чем раньше администратор настроит комплексную систему, тем меньше риск попасть в чёрные списки и потерять доверие почтовых сервисов.
Читайте в блоге:
- Как настроить защиту от спама через DNSBL в ISPmanager
- Как не попасть в спам при рассылке: гайд по доставке писем в 2025 году
- Вирусы на хостинге и сайтах: как избежать заражения и удалить вирус