Гид по технологиям

Установка и настройка milter-greylist для Sendmail

• 7 min read • Почта • Обновлено 28 Nov 2025
milter-greylist: greylisting для Sendmail
milter-greylist: greylisting для 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-скрипта.

Скачивание и сборка

  1. Скачайте архив с официального зеркала: http://hcpnet.free.fr/milter-greylist
  2. Распакуйте tarball и прочитайте README — в нём есть опции сборки и особенности для SPF/GeoIP.
  3. Выполните обычную последовательность сборки:
./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.
  • Сообщения от новых отправителей отмечаются временным отказом и принимаются при повторной попытке.

Тесты:

  1. Отправьте сообщение с тестового SMTP-клиента, не относящегося к whitelists; ожидайте временный отказ на первой попытке и успех на повторной.
  2. Отправьте письмо с адреса из «white users» — оно должно пройти без задержки.
  3. Проверьте, что записи заносятся в /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, системой контент-фильтрации и регулярным мониторингом логов. Внимательно управляйте списками доверия, чтобы не блокировать легитимные отправления.

Краткие шаги ещё раз:

  1. Установите зависимости.
  2. Скачайте, соберите и установите milter-greylist.
  3. Настройте /etc/mail/greylist.conf (списки, параметры).
  4. Добавьте milter в sendmail.mc и пересоберите sendmail.cf.
  5. Запустите milter, затем перезапустите sendmail.
  6. Протестируйте и мониторьте.

Критерии приёмки

  • milter и sendmail успешно взаимодействуют.
  • Тестовые сценарии проходят.
  • Логи не содержат ошибок при инициализации.

Заметки

  • Всегда держите резервную копию конфигураций перед изменением.
  • Если используете systemd, создайте unit-файл с безопасными правами доступа на сокет.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро