Назад | Перейти на главную страницу

Exim ACL для удаления, если понятное имя в заголовке From совпадает с подстрокой

Я получаю особенно ужасный тип спама, который легко определить по текстовому имени в заголовке From.

В основном формат такой:

From: "foo" <some-random-address@example.com>

Я хотел бы написать условие данных ACL, которое проверяет, foo находится в заголовке From. Как бы вы это сделали?

Я верю, что это войдет в DATA ACL часть.

Я думаю, что ответ Джима У может быть лучшим способом достижения моих целей, но для записи, вот как я это сделал в DATA ACL:

acl_check_data:
  # Blacklist if friendly name matches any patterns.
  drop
    condition = ${if match{$h_from:}{"foo"}}
    message = Blacklisted.
    log_message = Blacklisted nasty.

Это приводит к 550 Blacklisted. ошибка клиенту SMTP и немедленно закрывает соединение.

Условно отбрасывает почту на основе полей заголовка:

exim.conf

system_filter = /etc/exim/system_filter.conf

system_filter.conf

if $header_from matches "foo.*<"
or $header_from contains "@morespam.com"
or $h_subject contains "Viagra"
then
  seen finish
endif

Первое условие будет соответствовать, только если foo появится в дружественной части заголовка From. Регулярное выражение не чувствительно к регистру.

Лучше всего протестировать файл фильтра после внесения каких-либо изменений. Синтаксические ошибки в system_filter.conf сделает входящие сообщения временно недоступными.

Тест

exim -bF /etc/exim/system_filter.conf <spam.eml

spam.eml

Subject: This is Spam Viagra
From: Fred Foo Jones <someuser@example.com>
To: John Smith <someother@mydomain.com>
Date: Mon, 22 Aug 2016 07:26:20 -0500

This is the body of the e-mail.

Тест сообщит вам, будет ли сообщение доставлено, отброшено ("Seen finish") или есть ошибки в файле фильтра (вы получите сообщение вроде Filter error: unknown filtering command "asldkf" near line 75 of filter file)


Не решение ACL, но мне легко его поддерживать. Мне нужно обновлять system_filter.conf` только при изменении условий.

Я ставлю system_filter в верхней части файла exim.conf (Основные настройки конфигурации). seen finish это черная дыра команда; он инструктирует exim о завершении обработки сообщения.

Ссылка: Файлы фильтров exim