21.3. Тестирование средств борьбы со спамом в Postfix

Проблема

Вам хотелось бы по возможности блокировать лишний трафик на уровне SMTP, чтобы снизить нагрузку на сервер. Для этого необходимо протестировать новые средства борьбы со спамом в Postfix, но вас беспокоит возможность потери нужных сообщений.

Решение

В Postfix существует два режима отключения «рикошета» сообщений при тестировании: глобальный и конфигурационный. Чтобы запретить отказы глобально, включите следующую строку в /etc/postfix/main.cf:

soft_bounce = yes

Чтобы уточнить настройку для отдельных конфигурационных параметров, используйте квалификатор warn_if_reject в параметре smtpd_recipient_restrictions:

smtpd_recipient_restrictions =
    reject_invalid_hostname,
    reject_non_fqdn_hostname,
    warn_if_reject reject_non_fqdn_sender,

Следите за журналами — Postfix заносит предупреждение в журнал, но доставляет сообщение. Это полезно для мониторинга потенциально заблокированных писем, так как предупреждения фиксируются, не блокируя почту на тестовом этапе.

После внесения изменений в main.cf всегда выполняйте команду postfix reload, чтобы применить настройки.

Комментарий

Чтение журналов Postfix входит в обязанности администраторов почтовых систем, особенно на стадии тестирования. Журналы позволяют отслеживать отклонённые или предупреждённые сообщения, и выявлять любые несоответствия в работе фильтров.

Подавление нежелательного трафика на уровне SMTP эффективно, но не защищено от ошибок, поскольку в мире существует немало некорректно работающих или неверно настроенных почтовых серверов. Нельзя исключать вероятность того, что будет отвергнута нужная почта, так что внимательно следите за происходящими событиями. Пример регулярного выражения для поиска сообщений об ошибках и предупреждениях в журналах:

# egrep '(reject|warning|error|fatal|panic):' /var/log/maillog

Анализируя логи, можно эффективно выявлять проблемы с конфигурацией или ошибочные блокировки и вносить коррективы в настройки фильтров Postfix. Особенно важно проверять такие сообщения, как warning и reject, чтобы видеть, какие письма могут быть ошибочно заблокированы. Если фильтры срабатывают некорректно, их настройки можно скорректировать, тем самым минимизируя вероятность потери важных писем.

Для эффективного тестирования также рекомендуется временно активировать режим "мягких отклонений" (soft_bounce), позволяющий не блокировать сообщения, но фиксировать все потенциальные ошибки. Этот подход удобен для идентификации настроек, требующих доработки, и исключает риск потери данных.

Если вы хотите более тонко настраивать фильтры, можно добавить дополнительные условия в smtpd_recipient_restrictions, такие как reject_rbl_client для блокировки IP из чёрных списков, или permit_sasl_authenticated, чтобы разрешать сообщения от авторизованных пользователей. Это помогает улучшить качество фильтрации и снизить вероятность ложных срабатываний.

См. также

RFC 2821; файл Postfix SMTPD_ACCESS_README; access(5).