Re: [Exim] Filter Help

Top Page
Delete this message
Reply to this message
Author: Giuliano Gavazzi
Date:  
To: Marc Perkel, exim-users
Subject: Re: [Exim] Filter Help
At 8:03 -0800 2002/12/16, Marc Perkel wrote:
>OK - got your other message.
>
>That didn't quite do it unless I'm missing something. What I want to
>do is to take the email address and separate the name out and
>compare the name part to a list of prohibited names for spam control.
>
>So - we start with a from address like:
>
>Marc Perkel <marc@???> and compare the "Marc Perkel" part to the list.
>
>if ${something that returns Marc Perkel} matches
>"${readfile{/etc/exim/blockbyname}{|}}"
>
>What code would replace ${something that returns Marc Perkel} ?


I haven't tested it or checked thoroughly the syntax, but I think
that the expression I gave (I replaced " " with "\s" although I think
they are equivalent):

${if match{$h_from}{^From:\s*(.*)\s*<}{$1}{}}

applied on a $h_from of the form "From: xxx yyy <..." will return "xxx yyy".
Of course if $h_from does not start with ^From it will return the
empty string (that is the content of the last set of braces {}).
If $h_from is of the form " xxx yyy <..", with optional whitespace at
the beginning and before the <, then your match would be:

${if match{$h_from}{^\s*(.*)\s*<}{$1}{}}


You can test my expression using pcretest and giving the following RE

^(\s*)(.*)(\s*<)

this will return, as match 2, what my expression above returns.

So you would use one of the above expressions in place of ${something
that returns Marc Perkel}. You could use it as a lookup argument, for
instance.

Giuliano
--
H U M P H
    || |||
  software


Java & C++ Server/Client/Human Interface applications on MacOS - MacOS X
http://www.humph.com/