Спасибо, посмотрю.

Я на столько не успел заморочиться :(
Что в голову пришло - сделал. Спам, который шел в то время, был отсеян.


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

Ответить