Как принудительно задействовать действие “greylist” в rspamd

Вопрос или проблема

Я хочу принудительно включить серый список для всех писем, которые совпадают с публичным черным списком, даже если они не достигают настроенного балла для серого списка.
Модуль серого списка имеет настройку под названием whitelist_symbols, но, к сожалению, нет blacklist_symbols, поэтому я пытаюсь сделать это с помощью модуля force_actions.

Моя идея следующая, local.d/force_actions.conf:

rules {
  greylist_all_spamlist_results {
    action = "greylist"

    # избегайте серого списка, только если оно иначе будет принято (не изменяйте "reject"):
    require_action = ["no action", "add header", "rewrite subject"] 

    # срабатывает, если совпадает любой символ черного списка
    expression = "RBL_SPAMHAUS_PBL or DBL_SPAM or RBL_SPAMHAUS_XBL or RBL_SPAMHAUS_SBL"
  }
}

К сожалению, документация не очень ясна на этот счет.

  1. Является ли “greylist” действительным действием? Документация этого не перечисляет, но, кажется, оно принимается (скриншот вкладки истории в WebUI):
    скриншот вкладки истории в WebUI, показывающий 'greylist' как выполненное (принудительное) действие
    Это было тестовое письмо, которое не было повторно отправлено, поэтому, к сожалению, оно не отвечает на вопрос 2 (ниже).
    Я знаю, что модуль серого списка вызывает “мягкий отказ”, когда активируется серый список, но это не означает, что действие “мягкий отказ” является синонимом “greylist”. Это просто метод для отказа при сером списке, поэтому использование “мягкий отказ” здесь 100% всегда отклонит письмо.

  2. Как действие “greylist”, предполагая, что оно существует, обрабатывает письмо, которое было в сером списке, повторно отправлено и, наконец, принято?
    Что произойдет, если force_actions изменит “no action” на “greylist” в этот момент? Будет ли оно (1) снова мягко отклонено, приводя к циклу отказа? Приведет ли это (2) к бесконечному циклу переключения действий в рамках сессии, что приведет к зависанию? Или это (3) просто сработает?
    Кажется, что я должен исключать ранее находившиеся в сером списке письма из этого правила, но я не вижу никакого способа сделать это в документации force_actions.

Ответ или решение

Чтобы настроить принудительное серое листингование в Rspamd для всех писем, которые соответствуют общественным черным спискам, даже если они не достигают установленного балла для серого листингования, вам следует воспользоваться модулем force_actions. Давайте подробно рассмотрим, как это можно реализовать.

Проблематика и Контекст

Основная задача состоит в принудительном применении действия "серый список" к письмам, которые совпадают с записями в общественных RBL-списках (Real-time Blackhole Lists). Серый список предполагает временное отклонение сообщения с возможностью его повторной отправки, что предотвращает автоматическую доставку спама.

Реализация через force_actions

  1. Конфигурирование правила серого списка: Для того чтобы настроить принудительное действие, вы можете использовать конфигурационный файл local.d/force_actions.conf. Пример вашего конфига будет выглядеть следующим образом:

    rules {
      greylist_all_spamlist_results {
        action = "greylist";  // Укажите желаемое действие
    
        // Убедитесь, что правило срабатывает, если
        // действие было бы менее строгим, чем "отклонить":
        require_action = ["no action", "add header", "rewrite subject"];
    
        // Установите выражение на основе совпадений с черными списками:
        expression = "RBL_SPAMHAUS_PBL or DBL_SPAM or RBL_SPAMHAUS_XBL or RBL_SPAMHAUS_SBL";
      }
    }
  2. Valid Action: Согласно документации и наблюдениям, действие "greylist" хотя и не задокументировано явно в списке действий, но оно поддерживается и может быть использовано. Это подтверждается через интерфейс WebUI, где это действие отображается среди возможных к применению.

  3. Повторные сообщения и исключение петель: Серое листингование предполагает, что сообщение может быть повторно отправлено после первоначального "отклонения". В случае с повторным применением "greylist", если сообщение уже было серо листинговано и повторно доставлено, важно избегать непрерывной петли. К сожалению, текущая документация force_actions не предусматривает встроенного метода для распознавания повторно доставленных писем. Однако в стандартной логике Rspamd, после получения "greylist", сообщения повторно не подвергаются серому листингованию, что теоретически устраняет проблему зацикливания.

Вывод

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

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

Оцените материал
Добавить комментарий

Капча загружается...