Heiko Schlittermann via Exim-users wrote on 23.02.2025 11:13: > Viktor Ustiuhov via Exim-users <exim-users@lists.exim.org> (So 23 Feb 2025 > 03:02:30 CET): >> Sławomir Dworaczek via Exim-users wrote on 23.02.2025 2:06: >>> You're right, only 256 bytes can be in a file >>> Unfortunately, condition behaves as if it didn't work at all, all >>> emails, even those tagged spam, fall into inboxes >>> Regardless of whether they come from external or local domains >>> >>> This is a fragment of the SPAM header: >>> X-Bogofilterd: true >>> X-Bogosity: Spam, tests=bogofilter, spamicity=1.000000, version=1.2.5 >>> and this is a fragment of the HAM header: >>> X-Bogofilterd: true >>> X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.5 >> >> to exclude by sender address domain: >> >> ${if and{\ >> {match{$h_X-Bogosity:}{\N(?i)^\s*Spam\N}}\ > > X-Bogosity: Spam, tests=bogofilter, spamicity=1.000000, version=1.2.5\r\n > |<---- $h_x-bogosity: --------------------------------->| > |<----- $rh_x-bogosity: ------------------------------------>| > > > No need to check for the space before spam,
I prefer to explicitly specify the pattern for whitespace characters in case in the future for some reason I replace $h_X-Bogosity: with $rh_X-Bogosity: and forget to add \s or a space to the regex. > but better check for the > comma terminating that word. I suggest > > match{$h_x-bogosity:}{(?i)^spam,} In such cases, I prefer to use \b in case the syntax changes in the header value. >> {bool{${lookup{$sender_address_domain}wildlsearch{/etc/exim/listy_acl/bogo_list}{false}{true}}}}\ > > The wildlsearch isn't required (at least Sławomir didn't mention that he > wants to have *patterns* of domains). If subdomains should be covered, I assumed that exclusion by sender domains would be insufficient. And initially I tested more complex conditions. That's why after simplifying the condition, wildlsearch remained instead of lsearch and I didn't replace \$4 with \$1 after simplifying the regular expression. > I'd first try using partial-lsearch, as this would work with > dbm files too. > >> to exclude by sender address domain and domain from From: header (does >> not work for multiple addresses in From: header): >> >> {bool{${lookup{${domain:${sg{${sg{$rh_From:}{:}{\\\\:}}}{\N^\s*\S+@\S+\s*(<\S+@\S+>)\N}{\$4}}}}wildlsearch{/etc/exim/listy_acl/bogo_list}{false}{true}}}}\ > > We have ${address:<string>}, so e.g. ${address:$h_from:}, which extracts > the address. Try to check ${address:$h_From:} for From: mailb...@domain.tld <mailb...@domain.tld> Right now I can't remember which From header value I escaped the colon for, so the first replacement can indeed be removed. > Parsing the header with the expression above is likely > going to fail in allowed but not probably covered edge cases. (Though I > wasn't able to construct one yet.) Please, show me such cases. Above I showed a case where ${addresses:$h_From:} won't work. Now it's your turn. > To cover more complex cases, we have ${addresses:<string>}, Try to check ${addresses:mailb...@domain.tld <mailb...@domain.tld>} > which > extracts all addresses, in case there are multiple. The syntax I provided is not used to handle multiple addresses in the >From header. > Same on the wildlsearch here as for the sender_address_domain. > As mentioned in a previous message, DMARC forces us to have not more > than one address in the From: header (and Outlook365(?) seems to force > us too, not sure, if related to domains using DMARC). At least, recently > I saw rejections of messages with more than one address in the From: > header. > > Best regards from Dresden/Germany > Viele Grüße aus Dresden > Heiko Schlittermann > > > -- Best wishes Viktor Ustiuhov mailto:vic...@corvax.kiev.ua public GnuPG/PGP key: https://victor.corvax.kiev.ua/corvax.asc -- ## subscription configuration (requires account): ## https://lists.exim.org/mailman3/postorius/lists/exim-users.lists.exim.org/ ## unsubscribe (doesn't require an account): ## exim-users-unsubscr...@lists.exim.org ## Exim details at http://www.exim.org/ ## Please use the Wiki with this list - http://wiki.exim.org/