Спасибо, посмотрю.
Я на столько не успел заморочиться :(
Что в голову пришло - сделал. Спам, который шел в то время, был отсеян.
On 27.01.2022 16:36, Victor Ustugov wrote:
Victor Ustugov wrote on 27.01.2022 14:21:
Mikhail Golub wrote on 27.01.2022 14:11:
{\N"|\s+|-|\/\N}
{\N["\s-/]+\N}
Вернее так:
{\N["\s/-]+\N}
а там точно минус нужен?
он может быть частью названия домена из +virtual_domains
Так адрес же отсекается через extract по разделителю "<".
кстати, не факт, что это тоже удачная идея
например, для вот такого случая:
From: "Mail-Admin <[email protected]>" <[email protected]>
в том же Thunderbird и в списке писем и при просмотре письма в колонке и
соответственно поле "От" будет указано:
Mail-Admin <[email protected]>
если пытаться сооружать длинную конструкцию, которая будет из $h_From:
убирать не просто первую встретившуюся открывающуюся угловую скобку и
всё за ней, а то, то находится между последней открывающейся угловой
скобкой и последней закрывающейся, а также все пробельные символы до и
после, то при интерпретации всей конструкции (включая forany) в exim -be
тот может выдать вот такое сообщение об ошибке:
exim: length limit exceeded (286 > 256) for: recipient
всё зависит от общей длины конструкции, которая зависит от длины
заголовка From. но даже не очень длинные заголовки проверить не получилось.
как вариант - можно вынести логику получения текста перед адресов
отправителя из заголовка From в отдельный acl.
acl_addr_text:
accept message = ${if match{$acl_arg1}\
{\N^\s*(.*)\s*<[^<>]+@[^<>]>\s*$\N}\
{$1}\
{${if match{$acl_arg1}{\N^\s*(.*)\s\S+?\s*$\N}{$1}{}}}}
тогда само условие будет выглядеть как-то так:
condition = ${if forany {<; \
${sg{${acl{acl_addr_text}{$h_From:}}}{\N[@"'\s/<>]+\N}{;}}\
}{match_domain{$item}{+virtual_domains}}}
такое условие отловит и текст в виде полноценных почтовых адресов перед
адресом отправителя и минусы в названиях доменов.
extract отсекает из заголовка From адрес отправителя.
а я имею ввиду, что минус может быть частью названия домена из
именованного списка +virtual_domains, т. е. частью названия одного из
доменов получателей.
тогда при использовании минуса в качестве одного из возможных
разделителей текста из From такой домен будет разделён на две части.
т. е. если в +virtual_domains присутствует домен my-domain.ua, а
заголовок From выглядит как
"Mail-Admin my-domain.ua" <[email protected]>
, то при использовании минуса в качестве разделителя текста из From на
части получится
# exim -be '${sg{${extract{1}{<}{"Mail-Admin my-domain.ua"
<[email protected]>}}}{\N["\s/-]+\N}{;}}'
;Mail;Admin;my;domain.ua;
и на наличие в +virtual_domains домен my-domain.ua проверен не будет.
будут проверены отдельно my и domain.ua
_______________________________________________
Exim-users mailing list
[email protected]
http://mailground.net/mailman/listinfo/exim-users