echo
выводит строку, которую вы используете в качестве аргумента, а затем добавляет символ новой строки в конце выводимой строки, чтобы завершить строку.
С
echo "string"
вы получите string
и новую строку в конце.
Следовательно, с
echo -e "\n"
вы получите свою новую строку и новую строку в конце (т.е. две пустые строки ).
Если вам не нужен дополнительный перевод строки (, т. е. чтобы вывести непрерывающуюся строку ), используйте echo
с опцией -n
или, в этом случае, когда вы просто хотите вставить пустую строку, просто используйте echo ""
или echo
вообще без аргументов.
Из help echo
вbash
:
Options:
-n do not append a newline
-e enable interpretation of the following backslash escapes
Если вам нужно что-то переносимое на другие оболочки помимо bash
, используйте вместо этого printf
:
printf '\n' >>file.txt
printf 'bbbb\n' >>file.txt
Или,другой способ выполнения этих двух операторов с одним перенаправлением:
{
printf '\n'
printf 'bbbb\n'
} >>file.txt
Или просто
printf '\nbbbb\n' >>file.txt
Связанные:
Правильный способ - использовать 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 после реконфигурации.