[Exim-users] unsubscribe
___ Exim-users mailing list Exim-users@mailground.net http://mailground.net/mailman/listinfo/exim-users
Re: [Exim-users] Exim forany
Спасибо, посмотрю. Я на столько не успел заморочиться :( Что в голову пришло - сделал. Спам, который шел в то время, был отсеян. 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 " в том же Thunderbird и в списке писем и при просмотре письма в колонке и соответственно поле "От" будет указано: Mail-Admin если пытаться сооружать длинную конструкцию, которая будет из $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" , то при использовании минуса в качестве разделителя текста из From на части получится # exim -be '${sg{${extract{1}{<}{"Mail-Admin my-domain.ua" }}}{\N["\s/-]+\N}{;}}' ;Mail;Admin;my;domain.ua; и на наличие в +virtual_domains домен my-domain.ua проверен не будет. будут проверены отдельно my и domain.ua ___ Exim-users mailing list Exim-users@mailground.net http://mailground.net/mailman/listinfo/exim-users
Re: [Exim-users] Exim forany
On 27.01.2022 14:09, Victor Ustugov wrote: l...@lena.kiev.ua wrote on 27.01.2022 14:06: {\N"|\s+|-|\/\N} {\N["\s-/]+\N} Вернее так: {\N["\s/-]+\N} а там точно минус нужен? он может быть частью названия домена из +virtual_domains Так адрес же отсекается через extract по разделителю "<". ___ Exim-users mailing list Exim-users@mailground.net http://mailground.net/mailman/listinfo/exim-users
Re: [Exim-users] Exim forany
> > {\N"|\s+|-|\/\N} > > {\N["\s-/]+\N} Вернее так: {\N["\s/-]+\N} ___ Exim-users mailing list Exim-users@mailground.net http://mailground.net/mailman/listinfo/exim-users
Re: [Exim-users] Exim forany
да, оно. Спасибо. Убирает двойные значения... On 27.01.2022 13:20, l...@lena.kiev.ua wrote: {\N"|\s+|-|\/\N} {\N["\s-/]+\N} ___ Exim-users mailing list Exim-users@mailground.net http://mailground.net/mailman/listinfo/exim-users ___ Exim-users mailing list Exim-users@mailground.net http://mailground.net/mailman/listinfo/exim-users
Re: [Exim-users] Exim forany
On 27.01.2022 13:16, Victor Ustugov wrote: Mikhail Golub wrote on 27.01.2022 12:31: Доброго времени суток. доброго Такое выражение: exim -be -d+all '${if forany { :Mail:Admin:test:: } {inlisti {$item}{test}}}' Т.е. список начинается с пустого значения и заканчивается двумя пустыми значениями. по идее, в конце там не два пустых значения. задвоение двоеточия позволяет указать, что двоеточие является частью элемента списка. 6.20 List construction -- ... If a colon is actually needed in an item in a list, it must be entered as two colons. Так тоже не исправляет ситуацию: exim -be '${if forany {<; ;Mail;Admin;test;; } {inlisti {$item}{test}}}' Именно в конце списка такое поведение. Делимитер роли не играет (что ";", что запятая). И вот в конце два пустых значения подряд не обрабатывает. 12:25:11 11880 forany: $item = "" 12:25:11 11880 forany: $item = "Mail" 12:25:11 11880 forany: $item = "Admin" 12:25:11 11880 forany: $item = "test:" Суть всего этого - отсекание спама с моими доменами в поле "От:" в конверте, не в адресе. это не конверт. по крайней мере не то, что в SMTP называется envelope. Да, это "From:", не envelope-from: и как спам-то отсекается в данном случае? это способ поиска слова "test" в заголовке From перед адресом? Да, поиск своего домена в поле "От:" перед адресом. Это фишинговые письма ... Правилом ниже вот такие From: отсекаются. From: Documents-mydomain.ua А вот так уже нет. From: "Mail-Admin mydomain.ua" Потому как в конце кавычки и пробел, что дает "два пустых значения" в списке. Можно, конечно, перед обработкой удалять кавычки ... Но может как-то изхитриться с forany можно? Например: "Mail-Admin mydomain.ua" Варианты могут быть с разделением через пробел, дефис, косую черту ... Это решил через sg и extract. А вот с forany засада получается :( Вот полное условие: condition = ${if forany {<; ${sg{${extract{1}{<}{$h_From:}}}{\N"|\s+|-|\/\N}{;}} } {match_domain {$item}{+virtual_domains}}} P.S. Exim version 4.95 #1 (FreeBSD 12.3) ___ Exim-users mailing list Exim-users@mailground.net http://mailground.net/mailman/listinfo/exim-users
Re: [Exim-users] Exim forany
> {\N"|\s+|-|\/\N} {\N["\s-/]+\N} ___ Exim-users mailing list Exim-users@mailground.net http://mailground.net/mailman/listinfo/exim-users
[Exim-users] Exim forany
Доброго времени суток. Такое выражение: exim -be -d+all '${if forany { :Mail:Admin:test:: } {inlisti {$item}{test}}}' Т.е. список начинается с пустого значения и заканчивается двумя пустыми значениями. И вот в конце два пустых значения подряд не обрабатывает. 12:25:11 11880 forany: $item = "" 12:25:11 11880 forany: $item = "Mail" 12:25:11 11880 forany: $item = "Admin" 12:25:11 11880 forany: $item = "test:" Суть всего этого - отсекание спама с моими доменами в поле "От:" в конверте, не в адресе. Например: "Mail-Admin mydomain.ua" Варианты могут быть с разделением через пробел, дефис, косую черту ... Это решил через sg и extract. А вот с forany засада получается :( Вот полное условие: condition = ${if forany {<; ${sg{${extract{1}{<}{$h_From:}}}{\N"|\s+|-|\/\N}{;}} } {match_domain {$item}{+virtual_domains}}} P.S. Exim version 4.95 #1 (FreeBSD 12.3) ___ Exim-users mailing list Exim-users@mailground.net http://mailground.net/mailman/listinfo/exim-users