Установка и настройка milter-greylist для Sendmail
Что такое greylisting (одно предложение)
Greylisting — метод антиспама: сервер сначала временно отклоняет сообщение от незнакомого отправителя; законные почтовые агенты повторяют попытку и тогда почта принимается.
Почему использовать milter-greylist
- Уменьшает поток автоматического спама без сложных правил.
- Простая интеграция через milter-интерфейс Sendmail и поддержка Postfix.
- Гибкая конфигурация списков доверенных сетей и пользователей.
Основные понятия (глоссарий)
- MTA: Mail Transfer Agent — программа, принимающая и пересылающая почту (например, Sendmail, Postfix).
- Milter: интерфейс фильтрации сообщений для Sendmail/Postfix.
- SPF: проверка подлинности источника по политикам домена.
Подготовка: зависимости и предварительная проверка
Перед сборкой убедитесь, что на сервере установлены все обязательные зависимости. Из README milter-greylist (сокращённо):
Build dependencies: - flex (AT&T lex cannot build milter-greylist sources) - yacc or bison (some older yacc will fail, use bison instead) - libmilter (comes with Sendmail, or with the sendmail-devel package on RedHat, Fedora and SuSE. Debian and Ubuntu have it in libmilter-dev) - Any POSIX threads library (Provided by libc on some systems) Optional dependencies: - libspf2, libspf_alt or libspf, for SPF support - libcurl, for URL checks support - libGeoIP, for GeoIP support - libbind from BIND 9, for DNSRBL support, except if your system has a thread-safe DNS resolver built-in.
Конфигурационный скрипт (./configure) выявит отсутствующие пакеты и остановит сборку до их установки.
Совет: на системах с systemd вы, возможно, захотите предпочесть пакеты из репозитория вашей дистрибуции или собрать unit-файл systemd вместо init.d-скрипта.
Скачивание и сборка
- Скачайте архив с официального зеркала: http://hcpnet.free.fr/milter-greylist
- Распакуйте tarball и прочитайте README — в нём есть опции сборки и особенности для SPF/GeoIP.
- Выполните обычную последовательность сборки:
./configure
./make
./make installПо умолчанию бинарники попадут в /usr/local/bin, база и pid — в /var/milter-greylist, конфиг — в /etc/mail/greylist.conf.
Интеграция с Sendmail
Добавьте в ваш sendmail.mc следующие строки (внимательно: если вы уже используете другие milters, следуйте предупреждениям README):
INPUT_MAIL_FILTER(`greylist',`S=local:/var/milter-greylist/milter-greylist.sock')dnldefine(`confMILTER_MACROS_CONNECT', `j, {if_addr}')dnldefine(`confMILTER_MACROS_HELO', `{verify}, {cert_subject}')dnldefine(`confMILTER_MACROS_ENVFROM', `i, {auth_authen}')dnldefine(`confMILTER_MACROS_ENVRCPT', `{greylist}')dnlЗатем пересоберите sendmail.cf:
#m4 sendmail.mc > sendmail.cfВажно: не перезапускайте демона sendmail до настройки и проверки milter.
Базовая конфигурация /etc/mail/greylist.conf
Откройте /etc/mail/greylist.conf и добавьте/раскомментируйте основные параметры:
quietgreylist 7mdumpfreq 1dautowhite 10dПояснения:
- quiet — сервер не сообщает задержку повторной попытки во время временного отказа. Это скрывает детали от спаммеров.
- greylist 7m — период greylisting 7 минут; после этого источник считается проверенным.
- dumpfreq 1d — дамп базы в /var/milter-greylist/greylist.db раз в день.
- autowhite 10d — после приёма почты источник белится на 10 дней.
Добавьте списки доверенных сетей и пользователей. Пример для локальной сети:
list "my network" addr { 127.0.0.1/8 10.230.1.0/24 192.168.1.0/24 }Обратите внимание: адреса разделяются пробелами, не запятыми.
Пример для внешних доверенных сетей:
# Trusted networks to not greylist:list "trusted" addr { 207.46.0.0/16 # Microsoft 72.33.0.0/16 # UW Madison}Существуют уже предзаполненные списки «broken mailers» в конфиге — их не стоит ставить под greylisting, иначе вы рискуете потерять почту от таких провайдеров.
Список пользователей, которые никогда не хотят задержек:
# List of users that want whitelisting (if greylisting is the default):list "white users" rcpt { vp@domain.com sysadmin@domain.com postmaster@domain.com }После определения списков пропишите применяемые правила доступа (racl):
# And here is the access listracl whitelist list "my network"racl whitelist list "broken mta"racl whitelist list "trusted"racl whitelist list "white users"Установите поведение по умолчанию:
racl greylist defaultЕсли вы хотите наоборот — сделать whitelist по умолчанию, используйте racl whitelist default и создайте список “grey users” для тех, кого нужно всегда подвергать greylist.
Запуск и опции
Сервис можно запустить через /etc/init.d/milter-greylist (если инсталлятор включил скрипт) либо вручную:
#milter-greylist -f /etc/mail/greylist.configПосмотрите man milter-greylist для полного списка опций и соответствия параметров конфигурации с ключами командной строки.
После настройки: перезапуск Sendmail
После успешного запуска milter и проверки сокета перезапустите Sendmail. Затем тестируйте приём почты.
Тестирование и критерии приёмки
Критерии приёмки:
- milter-greylist запущен и слушает локальный Unix-сокет /var/milter-greylist/milter-greylist.sock.
- Sendmail подключается к milter и в логах видно взаимодействие milter<->sendmail.
- Сообщения от новых отправителей отмечаются временным отказом и принимаются при повторной попытке.
Тесты:
- Отправьте сообщение с тестового SMTP-клиента, не относящегося к whitelists; ожидайте временный отказ на первой попытке и успех на повторной.
- Отправьте письмо с адреса из «white users» — оно должно пройти без задержки.
- Проверьте, что записи заносятся в /var/milter-greylist/greylist.db и что дампы выполняются по dumpfreq.
Полезные команды:
- ps aux | grep milter-greylist
- netstat -a | grep milter-greylist (или ss -xl для UNIX-сокетов)
- tail -f /var/log/maillog (или systemd journalctl -u sendmail)
Отладка: частые проблемы и решения
- Milter не запускается: проверьте права доступа к /var/milter-greylist и что пользователь, от имени которого запускается демоn, имеет права на создание сокета.
- Sendmail не связывается с milter: проверьте точный путь сокета в sendmail.mc и наличие файла socket.
- Слишком много ложных отрицаний: уменьшите greylist время или добавьте доверенные сети в списки.
- Проблемы с другими milters: порядок регистрации milters важен; конфликт макросов milter может нарушить работу — следуйте README.
Important: всегда делайте резервную копию sendmail.cf и /etc/mail/greylist.conf перед изменениями.
Когда greylisting может не помочь (ограничения)
- Современные спамеры и ботнеты умеют повторно подключаться, уменьшая эффективность greylisting.
- Некоторые легитимные отправители используют отправку через ненадёжные MTA и никогда не повторяют попытки — вы можете потерять почту.
- Не универсально для систем с жёсткими SLA по доставке почты (время задержки недопустимо).
Альтернативные и дополнительные подходы
- SPF, DKIM и DMARC — аутентификация отправителя.
- Потоковая фильтрация (SpamAssassin, rspamd) для анализа содержимого.
- DNSBL/RBL — блокировка по спискам вредоносных IP.
- Greylisting + content filtering дают лучший эффект, чем каждое решение по отдельности.
Безопасность и права доступа
- Защитите базу /var/milter-greylist от несанкционированного чтения.
- Ограничьте права на сокет, чтобы только sendmail и milter могли взаимодействовать.
- Регулярно обновляйте milter-greylist и зависимости (libmilter, bison, и т.д.).
Приватность и соответствие регуляциям
Greylisting не требует хранения содержимого сообщений, но база содержит записи отправителей и IP. Оцените применение политик хранения и удаления данных в соответствии с локальными законами о защите персональных данных.
Совместимость и миграция
- milter-greylist поддерживает Sendmail и Postfix (через milter-интерфейс).
- При миграции на Postfix проверьте синтаксис интеграции milters и порядок применения фильтров.
Роли и чек-листы (кто что делает)
Администратор сети:
- Установить зависимости и собрать milter-greylist.
- Настроить привилегии для /var/milter-greylist.
- Добавить milter в sendmail.mc и пересобрать конфиг.
Оператор почтового сервера:
- Запустить сервис и проверить логи.
- Выполнить тесты приёмки и сообщить о проблемах.
Служба поддержки (helpdesk):
- При поступлении жалобы проверить, не попал ли отправитель в базу «broken mta» или лист greylist.
- При необходимости временно добавить в white users.
Контрольные сценарии (test cases)
- Новый отправитель: первая попытка возвращает TEMPFAIL, вторая — ACCEPT.
- Whitelist-пользователь: ACCEPT с первой попытки.
- Адрес из списка “broken mta”: ACCEPT без greylist.
Полезные советы и подборка настроек
- Для агрессивной блокировки можно увеличить autowhite, но будьте осторожны — это может привести к долгой «иммунитетной» белизации.
- quiet помогает скрыть от спаммеров политику повторных попыток.
- Используйте external tools (GeoIP, DNSRBL) по мере необходимости, но они увеличивают сложность и требования к зависимостям.
Greylisting — простой и надёжный инструмент в арсенале администратора почтового сервера; он должен сочетаться с проверками аутентичности и сложной фильтрацией содержимого.
Итог и рекомендации
milter-greylist даёт практичный способ снижения спама на уровне транспортного агента. Он прост в установке и настройке, если следовать README и проверить зависимости. Используйте его в сочетании с SPF/DKIM, системой контент-фильтрации и регулярным мониторингом логов. Внимательно управляйте списками доверия, чтобы не блокировать легитимные отправления.
Краткие шаги ещё раз:
- Установите зависимости.
- Скачайте, соберите и установите milter-greylist.
- Настройте /etc/mail/greylist.conf (списки, параметры).
- Добавьте milter в sendmail.mc и пересоберите sendmail.cf.
- Запустите milter, затем перезапустите sendmail.
- Протестируйте и мониторьте.
Критерии приёмки
- milter и sendmail успешно взаимодействуют.
- Тестовые сценарии проходят.
- Логи не содержат ошибок при инициализации.
Заметки
- Всегда держите резервную копию конфигураций перед изменением.
- Если используете systemd, создайте unit-файл с безопасными правами доступа на сокет.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента