procmail
[Top] [All Lists]

Re: .procmailrc processing of To: field

1997-03-12 12:00:13
-----BEGIN PGP SIGNED MESSAGE-----

=== Nothing above this line is part of the message. ===

Mike de Laine <Mike(_dot_)de(_dot_)Laine(_at_)innosoft(_dot_)com> wrote:
* ^To:(_dot_)mike+test(_at_)*

[snip]

Mail sent with a subject containing questions is processed correctly,
but I don't seem to be able to achieve the correct processing based upon
the To: address.

The line extracted from the received message is:
To: mike+test(_at_)minerva(_dot_)innosoft(_dot_)com

What am I missing?

You're missing an hour curled up by the fireplace reading the output
of "man procmailrc", which says in part:

:       Conditions start with a leading `*', everything after that
:       character  is  passed  on to the internal egrep literally,
:       except for leading and trailing whitespace.  These regular
:       expressions   are  completely  compatible  to  the  normal
:       egrep(1) extended regular expressions.  See also Extended
:       regular expressions.

Then take a drink in your hand as you read the output from "man
egrep", or, failing that, "man grep", which (at least on my system)
says (after preventing that blasted tab damage):

:REGULAR EXPRESSIONS
:       A  regular expression is a pattern that describes a set of
:       strings. Regular expressions are constructed  analagously
:       to  arithmetic  expressions, by using various operators to
:       combine smaller expressions.

[snip]

:                                Any  metacharacter with special
:       meaning may be quoted by preceding it with a backslash.

[snip]

:       +      The  preceding  item  will  be  matched one or more
:              times.

Therefore, with your original expression:

* ^To:(_dot_)mike+test(_at_)*

escape the +, to get:

* ^To:(_dot_)mike\+test(_at_)*

But what's the period you have just before the mike?  That will match
exactly one character, which I guess is ok if that's what you want.
But you might have wanted .* which will match all characters before
the mike.

The @* will match zero or more occurrences of @, and in this context
has no effect.  If you wanted to say @ followed by any number of
characters or anything, you could have said

* ^To:(_dot_)mike\+test(_at_)(_dot_)*

but, since you don't have to specify the trailing anything-goes part
of a line, you can simply say

* ^To:.mike\+test@

unless, of course, you meant

* ^To:.*mike\+test@

Signatures Follow. (tm)

-----BEGIN PGP SIGNATURE-----
Version: 2.6.2

iQCVAwUBMyb7Hu7FqQNEGv6lAQF4lgQAn/2qyNYrDZZmqtxQv3kKBffy1LNNGTR2
8pL6j8ZwKrTJd+5sP80WOWX05yyxzqcCplgBuZHSGZ8oGp8ar3j0HqNdBewY2+0E
md+0xUrr/dw9tnul35Z9NqhJdwJVxJ6TUtpjq14PkE2gpo+hP9F1wLtWx4GQ5OsE
+lfhYjkpqK4=
=VnAP
-----END PGP SIGNATURE-----

-- It is now safe to turn off your computer.
Bill Evans/Box 4829/Irvine, California 92716/(714)551-2766  _   /| ACK!
Email-To: wje(_at_)acm(_dot_)org  -- PGP encrypted mail preferred. --  \`o_O' /
   Finger wje(_at_)netcom(_dot_)com for public key.   Key #: 441AFEA5   =( )=
PGPprint: FB D0 1C 1D EF DC 26 BA  B3 9E 84 0B 40 D6 59 9C     U

<Prev in Thread] Current Thread [Next in Thread>