LINUX.ORG.RU
ФорумAdmin

Проблема с синтаксисом в acl (exim)

 ,


0

2

В acl_check_data хочу напилить простенькую проверку на наличие потенциально опасных скриптов в письме

  deny     message    = Rejected, bad syntax.
           condition  = ${if match{$message_body}{lsearch;/etc/exim/blacklist_words.conf}{yes}{no}}

в файлике построчно сначала указывал регулярки, но после неудачных попыток решил просто указать там рандомные слова (думал может из-за синтаксиса регулярок переменная как-то не так раскрывается), но даже с простым словарем exim продолжает игнорить содержимое. Если заменить {lsearch;...} на {word1|word2|word3}, то все работает.

Коллективный разум, помоги, 3-й день бьюсь.

★★★★★
Ответ на: комментарий от anonymous

И? там есть пример подобный.

leg0las ★★★★★
() автор топика

lsearch вообще не так работает. Без lookup , он работает когда ты знаешь, что ты ищешь , т.е. какой-то определенный тип (senders, domains, etc). Короче вот рабочий вариант для твоего случая.

${if match{Aaa}{${lookup {} lsearch* {/tmp/ex} }}{yes}{no}}'

# /tmp/ex :
*   ^(aaa|bbb)

проверяем

$ sudo exim  -v -be '${if match{aaa000}{${lookup {} lsearch* {/tmp/ex} }}{yes}{no}}'
yes

$ sudo exim  -v -be '${if match{zzzz000}{${lookup {} lsearch* {/tmp/ex} }}{yes}{no}}'
no
Bers666 ★★★★★
()

построчно указывал регулярки,
построчно указывал слова,

для этого вообще надо FOR городить.
Лучше сделай 1 ACL на 1 регулярку, просто и понятно.
Можешь нагенерить скриптом и заинклюдить в exim.conf.

Bers666 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.