procmail
[Top] [All Lists]

Re: bad message id's

1998-03-25 11:29:12
jari(_dot_)aalto(_at_)poboxes(_dot_)com writes:
|Thu 98-03-19 Philip Guenther <guenther(_at_)gac(_dot_)edu> list.procmail
| So, that line is it for matching commentless message-ids.  To make it into a
| condition and break it up into semi-readable chunks:
| 
| :0
| * ! ^Message-Id:[     ]*<[    ]*("([^"\]|\\.)*"|[-!#-'*+/-9=?A-Z^-~]+)\
|       ([      ]*\.[   ]*("([^"\]|\\.)*"|[-!#-'*+/-9=?A-Z^-~]+))*\
|       [       ]*(_at_)[    ]*\
|       (\[[    ]*([^][\]|\\.)*[        ]*\]|\
|          [-!#-'*+/-9=?A-Z^-~]+([      ]*\.[   ]*[-!#-'*+/-9=?A-Z^-~]+)*)\
|       [       ]*>
| 
| Hmm, maybe I'll start logging ids that match that condition.

Oh my,  Phil, would you please reformat that to more structural form,
so that variables are used instead of pure regexps:

<sigh> If you insist:

        dq = '"'                                # (literal) double-quote
        bw = "\\"                               # (literal) backwhack
        ws         = "[         ]*"                     # whitespace
        atom       = "[-!#-'*+/-9=?A-Z^-~]+"
        word       = "($atom|$dq([^$dq\]|$bw.)*$dq)'
        local_part = "$word($ws\.$ws$word)*"
        domain     = "(\[$ws([^][\]|$bw.)*$ws\]|$atom($ws\.$ws$atom)*)"

        :0
        * ! $ ^Message-Id:$ws<$ws$local_part$ws(_at_)$ws$domain$ws>
        whatever

And no, I haven't tested that.


Philip Guenther

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