Правильный способ - использовать ACL exim'а вместо фильтрации.
Найдите часть конфига, начинающуюся с такой строчки:
acl_rcpt:
Ваш конфиг может быть другим, но должны присутствовать acl, rcpt и точка с запятой. Затем должен быть ряд блоков, начиная с принятия, отказа, требования и других глаголов.
Вы должны добавить новый блок:
deny condition = ${lookup{$sender_address}nwildlsearch{/path/black.list}{yes}}
message = Not that time, sorry.
Файл /path/black.list должен содержать запрещенные адреса и/или регулярные выражения, по одному на строку:
## You can block the certain sender
^some_spammer@domain\.icu
## Or everybody from some domain
^.*@domain\.icu
## Or even all top-level domain at once
^.*@.*\.icu
Здесь .
— это токен PCRE, который означает any symbol
, .*
означает any number of any symbols
, а \.
означает the dot
. Строго говоря, шаблон ^.*@domain\.icu
означает:
Sender address starting with any number (0..n) of any symbols,
then symbol '@',
then 'domain' substring,
and ending with '.icu' symbols
Строка ugly_spammer_from@domain.icu
будет соответствовать этому RE.
Помните, что правила ACL применяются в том порядке, в котором они определены в файле конфигурации. Те ACL, которые вы хотите внедрить, должны быть помещены в начало определений ACL для этапа RCPT.
Перезапустить exim после реконфигурации.
Вы можете использовать paste -s
для соединения линий:
shuf -i1-10 | paste -sd, -
Здесь используется опция -i
команды shuf для указания диапазона положительных целых чисел.
Выход seq
может быть передан в shuf:
seq 10 | shuf | paste -sd, -
Или -e
для перетасовки аргументов:
shuf -e {1..10} | paste -sd, -
Существует два типа списков чисел от 1 до 10. Какой из них вам нужен?
Лучший способ объяснить их — использовать аналогию:
Положите в мешок 10 шаров, пронумерованных от 1 до 10. В каждый ход извлекайте по одному шарику, читайте число и не возвращайте шарик в мешок. Это генерирует список максимум из 10 номеров. В списке появятся все номера, но (принудительно )только один раз.
Такой список будет сгенерирован командами, подобными:
$ echo $(seq 10 | shuf) | tr " " ","
10,7,5,2,3,9,1,4,8,6
$ shuf -i1-10 | paste -sd, -
1,9,4,6,2,8,10,5,3,7
Положите в мешок 10 шаров, пронумерованных от 1 до 10. В каждый ход извлекайте из мешка один шар, читайте номер на нем и возвращайте шар в мешок. Список может быть бесконечным, повторение чисел может занять некоторое время.
Такой список можно сгенерировать с помощью команды, аналогичной:
$ shuf -n 20 -r -i1-10 | paste -sd, -
9,9,7,8,2,8,5,5,4,9,8,6,6,6,4,10,6,6,9,7