Спам — это как пыль: вроде и не страшно, но постоянно раздражает и требует внимания. Особенно, если вы администрируете почтовый сервер. Хотите навести порядок на входе и не перегружать антиспам-фильтры? У нас есть простой и проверенный метод — greylisting.
Что такое greylisting и зачем он вам нужен?
Greylisting — это метод фильтрации входящих писем, при котором сервер временно отклоняет письмо от незнакомого отправителя с предложением «попробовать позже». Нормальные (RFC-соответствующие) почтовики через некоторое время повторят попытку — и письмо дойдёт. А вот спам-боты, как правило, на этом этапе сдаются.
Почему это работает?
- Спам-софт часто не умеет (или не хочет) повторно отправлять письма.
- Большая часть мусора отсеивается до попадания в очередь Postfix.
- Вы разгружаете SpamAssassin, ClamAV и прочие тяжёлые фильтры.
Преимущества:
- Меньше спама — чище логи и спокойнее жизнь.
- Меньше нагрузки на CPU — не надо гонять каждый подозрительный заголовок через тонны регулярных выражений.
- Простая реализация — никаких сложных конфигураций.
Недостатки (но не критичные):
- Первое письмо от нового отправителя задерживается (обычно на 1–5 минут).
- Если отправляющая сторона плохо настроена — письмо может потеряться. Но это, больше, проблема той стороны, а не greylisting.
Как реализовать greylisting с помощью Postgrey
Будем использовать связку Postfix + Postgrey. Работает на любом современном Linux-дистрибутиве, где доступен Perl и сам Postfix.
Установка Postgrey
Для начала убедитесь, что у вас уже установлен и настроен Postfix.
Установка через пакетный менеджер:
Debian/Ubuntu:
sudo apt install postgrey
RHEL/Fedora/CentOS (если есть в репах или EPEL):
sudo dnf install postgrey
Или соберите из исходников — Postgrey написан на Perl, и его зависимости довольно стандартны:
- Perl ≥ 5.6.0
- Модули:
Net::Server
,IO::Multiplex
,BerkeleyDB
- Библиотека Berkeley DB ≥ 4.1
Настройка Postgrey
Обычно Postgrey запускается с параметром:
--inet=127.0.0.1:10023
Также можно указать задержку (в секундах), через сколько разрешить повторную доставку:
postgrey --inet=127.0.0.1:10023 --delay=60
💡 Оптимально ставить задержку 60–300 секунд. Чем выше — тем больше шансов отсеять спам, но тем больше раздражения у легитимных отправителей.
Postgrey можно запустить вручную, через systemd unit, supervisord — как вам удобно.
Настройка Postfix
Открываем конфиг:
sudo nano /etc/postfix/main.cf
И в секции smtpd_recipient_restrictions
добавляем вызов Postgrey:
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination,
check_policy_service inet:127.0.0.1:10023
Сохраняем, выходим, перезагружаем Postfix:
sudo postfix reload
Проверка
- Отправьте тестовое письмо с нового адреса — должно быть отложено.
- Через минуту — повторная попытка, письмо дойдёт.
- Посмотрите логи:
/var/log/mail.log
илиjournalctl -u postfix
+journalctl -u postgrey
Заключение
Greylisting — это не серебряная пуля, но как первая линия обороны работает просто отлично. С минимальными затратами вы отсекаете значительную часть мусора на входе. Особенно в связке с другими мерами: SPF, DKIM, RBL, SpamAssassin, ClamAV и т.д.
Если вы обслуживаете корпоративную почту или просто не хотите тратить ресурсы на обработку каждой попытки впихнуть вам Viagrа-рекламу — внедряйте смело.
Дополнительные материалы.
Полезные ссылки:
Was this helpful?
0 / 0