"Gil Gonzales" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> Ok.  So, I altered TMDA to do what I wanted (changed two existing lines
and
> added a couple dozen others) and it seems to be working.  It rejected my
> sample message and the incoming log is what I expected.  What was the
> overhead you mentioned?
>
>
>
> _____________________________________________
> tmda-users mailing list ([EMAIL PROTECTED])
> http://tmda.net/lists/listinfo/tmda-users
>

I don't claim to know python but in case anybody was interested in what I
did:

To TMDA-0.71:

In bin/tmda-rfilter:
Line 716 which reads:
    (actions, matching_line) = infilter.firstmatch(recipient_address,
                                                   sender_list,

orig_msgin_body_as_raw_string,

orig_msgin_headers_as_raw_string,
                                                   orig_msgin_size)

I changed to:
    (actions, matching_line) = infilter.firstmatch(recipient_address,
                                                   sender_list,

orig_msgin_body_as_raw_string,

orig_msgin_headers_as_raw_string,
                                                   orig_msgin_size,
                                                   msgin)


In TMDA/FilterParser.py:
After line 37 which reads:
import Util

I added:
import email

Line 788 which reads:
    def firstmatch(self, recipient, senders=None,
                   msg_body=None, msg_headers=None, msg_size=None):

I changed to:
    def firstmatch(self, recipient, senders=None,
                   msg_body=None, msg_headers=None, msg_size=None,
msg=None):


After line 948 which reads:
            if source in ('body', 'headers'):
                if source == 'body' and msg_body:
                    content = msg_body
                elif source == 'headers' and msg_headers:
                    content = msg_headers
                else:
                    content = None
                re_flags = re.MULTILINE
                if not args.has_key('case'):
                    re_flags = re_flags | re.IGNORECASE
                if content and re.search(match,content,re_flags):
                    found_match = 1
                    break

I added:
                if source == 'body' and msg:
                    for msg_part in msg.walk():
                        if msg_part.get_content_maintype() == 'text':
                            content = msg_part.get_payload(decode=1)
                            if content and
re.search(match,content,re_flags):
                                found_match = 1
                                break
                    if found_match:
                        break

After line 961 which reads:
            if source in ('body-file','headers-file'):
                match = os.path.expanduser(match)
                try:
                    match_list = Util.file_to_list(match)
                except IOError:
                    if not args.has_key('optional'):
                        raise
                else:
                    if source == 'body-file' and msg_body:
                        content = msg_body
                    elif source == 'headers-file' and msg_headers:
                        content = msg_headers
                    else:
                        content = None
                    re_flags = re.MULTILINE
                    if not args.has_key('case'):
                        re_flags = re_flags | re.IGNORECASE
                    for line in match_list:
                        mo = self.matches.match(line)
                        if mo:
                            expr = mo.group(2) or mo.group(3)
                            if content and re.search(expr,content,re_flags):
                                found_match = 1
                                break

I added:
                    if not found_match and source == 'body-file' and msg:
                        for line in match_list:
                            mo = self.matches.match(line)
                            if mo:
                                expr = mo.group(2) or mo.group(3)
                                for msg_part in msg.walk():
                                    if msg_part.get_content_maintype() ==
'text':
                                        content =
msg_part.get_payload(decode=1)
                                        if content and
re.search(expr,content,re_flags):
                                            found_match = 1
                                            break
                            if found_match:
                                break


I have attached a .txt file with the same changes in case my post get
wordwrapped.


begin 666 changes.txt
M5&[EMAIL PROTECTED]<[EMAIL PROTECTED]);B!B:6XO=&UD82UR9FEL=&[EMAIL PROTECTED]&EN92 W
M,[EMAIL PROTECTED]@@<F5A9',Z#0H@(" @*&%C=&EO;G,L(&UA=&-H:6YG7VQI;F4I
M(#T@:6YF:6QT97(N9FER<W1M871C:"AR96-I<&EE;G1?861D<F5S<RP-"B @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @('-E;F1E<E]L:7-T+ T*(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @;W)I9U]M<V=I;E]B;V1Y7V%S7W)A
M=U]S=')I;F<L#0H@(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @("!O<FEG7VUS9VEN7VAE861E<G-?87-?<F%W7W-T
M<FEN9RP-"B @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(&]R:6=?;7-G:6Y?<VEZ92D-"@T*22!C:&%N9V5D('1O
[EMAIL PROTECTED](" @("AA8W1I;VYS+"!M871C:&EN9U]L:6YE*2 ](&EN9FEL=&5R+F9I
M<G-T;[EMAIL PROTECTED]<F5C:7!I96YT7V%D9')E<W,L#0H@(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @("!S96YD97)?;&ES
M="P-"B @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(&]R:6=?;7-G:6Y?8F]D>5]A<U]R87=?<W1R:6YG+ T*(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @;W)I9U]M<V=I;E]H96%D97)S7V%S7W)A=U]S=')I;F<L#0H@(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @("!O
M<FEG7VUS9VEN7W-I>F4L#0H@(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @("!M<V=I;BD-"@T*#0I);B!4341!+T9I
M;'1E<E!A<G-E<BYP>3H-"D%F=&5R(&QI;F4@,S<@=VAI8V@@<F5A9',Z#0II
M;7!O<[EMAIL PROTECTED]; T*#0I)(&%D9&[EMAIL PROTECTED]:6UP;W)T(&5M86EL#0H-"DQI;F4@
[EMAIL PROTECTED]('=H:6-H(')[EMAIL PROTECTED](" @(&1E9B!F:7)S=&UA=&-H*'-E;&8L(')E
M8VEP:65N="P@<V5N9&5R<SU.;VYE+ T*(" @(" @(" @(" @(" @(" @(&US
M9U]B;V1Y/4YO;F4L(&US9U]H96%D97)S/4YO;F4L(&US9U]S:7IE/4YO;F4I
[EMAIL PROTECTED])(&[EMAIL PROTECTED]&\Z#0H@(" @9&5F(&9I<G-T;[EMAIL PROTECTED]<V5L9BP@
M<F5C:7!I96YT+"!S96YD97)S/4YO;F4L#0H@(" @(" @(" @(" @(" @(" @
M;7-G7V)O9'D]3F]N92P@;7-G7VAE861E<G,]3F]N92P@;7-G7W-I>F4]3F]N
M92P@;7-G/4YO;[EMAIL PROTECTED]"D%F=&5R(&QI;[EMAIL PROTECTED]('=H:6-H(')E861S
[EMAIL PROTECTED](" @(" @(" @(" @:68@<V]U<F-E(&EN("@G8F]D>2<L("=H96%D97)S
M)RDZ#0H@(" @(" @(" @(" @(" @:68@<V]U<F-E(#T]("=B;V1Y)R!A;F0@
M;7-G7V)O9'DZ#0H@(" @(" @(" @(" @(" @(" @(&-O;G1E;G0@/2!M<V=?
M8F]D>0T*(" @(" @(" @(" @(" @(&5L:68@<V]U<F-E(#T]("=H96%D97)S
M)R!A;F0@;7-G7VAE861E<G,Z#0H@(" @(" @(" @(" @(" @(" @(&-O;G1E
M;G0@/2!M<V=?:&5A9&5R<PT*(" @(" @(" @(" @(" @(&5L<V4Z#0H@(" @
M(" @(" @(" @(" @(" @(&-O;G1E;G0@/2!.;VYE#0H@(" @(" @(" @(" @
M(" @<F5?9FQA9W,@/2!R92Y-54Q424Q)3D4-"B @(" @(" @(" @(" @("!I
M9B!N;[EMAIL PROTECTED])G<RYH87-?:V5Y*"=C87-E)RDZ#0H@(" @(" @(" @(" @(" @
M(" @(')E7V9L86=S(#T@<F5?9FQA9W,@?"!R92Y)1TY/4D5#05-%#0H@(" @
M(" @(" @(" @(" @:[EMAIL PROTECTED]&5N="!A;F0@<F4N<V5A<F-H*&UA=&-H+&-O
M;G1E;G0L<F5?9FQA9W,[EMAIL PROTECTED](" @(" @(" @(" @(" @(" @("!F;W5N9%]M
M871C:" ](#$-"B @(" @(" @(" @(" @(" @(" @8G)E86L-"@T*22!A9&1E
M9#H-"B @(" @(" @(" @(" @("!I9B!S;W5R8V4@/3T@)V)O9'DG(&%N9"!M
M<V<Z#0H@(" @(" @(" @(" @(" @(" @(&9O<B!M<V=?<&%R="!I;B!M<V<N
M=V%L:[EMAIL PROTECTED]@T*(" @(" @(" @(" @(" @(" @(" @(" @:68@;7-G7W!A<G0N
M9V5T7V-O;G1E;G1?;6%I;G1Y<&4H*2 ]/2 G=&5X="<Z#0H@(" @(" @(" @
M(" @(" @(" @(" @(" @(" @8V]N=&5N=" ](&US9U]P87)T+F=E=%]P87EL
M;V%D*&1E8V]D93TQ*0T*(" @(" @(" @(" @(" @(" @(" @(" @(" @(&EF
M(&-O;G1E;[EMAIL PROTECTED](')E+G-E87)C:"AM871C:"QC;VYT96YT+')E7V9L86=S
M*3H-"B @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @9F]U;F1?;6%T
M8V@@/2 Q#0H@(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(&)R96%K
M#0H@(" @(" @(" @(" @(" @(" @(&EF(&9O=6YD7VUA=&[EMAIL PROTECTED](" @(" @
M(" @(" @(" @(" @(" @(" @8G)E86L-"@T*069T97(@;&EN92 [EMAIL PROTECTED]
M8V@@<F5A9',Z#0H@(" @(" @(" @("!I9B!S;W5R8V4@:[EMAIL PROTECTED]"=B;V1Y+69I
M;&4G+"=H96%D97)S+69I;&4G*3H-"B @(" @(" @(" @(" @("!M871C:" ]
M(&]S+G!A=&@N97AP86YD=7-E<BAM871C:"D-"B @(" @(" @(" @(" @("!T
M<GDZ#0H@(" @(" @(" @(" @(" @(" @(&UA=&-H7VQI<W0@/2!5=&EL+F9I
M;&5?=&]?;&ES="AM871C:"D-"B @(" @(" @(" @(" @("!E>&-E<'[EMAIL PROTECTED]
M<G)O<CH-"B @(" @(" @(" @(" @(" @(" @:68@;F]T(&%R9W,N:&%S7VME
M>[EMAIL PROTECTED];W!T:6]N86PG*3H-"B @(" @(" @(" @(" @(" @(" @(" @(')A:7-E
M#0H@(" @(" @(" @(" @(" @96QS93H-"B @(" @(" @(" @(" @(" @(" @
M:68@<V]U<F-E(#T]("=B;V1Y+69I;&4G(&%N9"!M<V=?8F]D>3H-"B @(" @
M(" @(" @(" @(" @(" @(" @(&-O;G1E;G0@/2!M<V=?8F]D>0T*(" @(" @
M(" @(" @(" @(" @("!E;&EF('-O=7)C92 ]/2 G:&5A9&5R<RUF:6QE)R!A
M;F0@;7-G7VAE861E<G,Z#0H@(" @(" @(" @(" @(" @(" @(" @("!C;VYT
M96YT(#T@;7-G7VAE861E<G,-"B @(" @(" @(" @(" @(" @(" @96QS93H-
M"B @(" @(" @(" @(" @(" @(" @(" @(&-O;G1E;G0@/2!.;VYE#0H@(" @
M(" @(" @(" @(" @(" @(')E7V9L86=S(#T@<F4N355,5$E,24Y%#0H@(" @
M(" @(" @(" @(" @(" @(&EF(&YO="!A<F=S+FAA<U]K97DH)V-A<V4G*3H-
M"B @(" @(" @(" @(" @(" @(" @(" @(')E7V9L86=S(#T@<F5?9FQA9W,@
M?"!R92Y)1TY/4D5#05-%(" @(" @(" @(" @(" @(" @(" @#0H@(" @(" @
M(" @(" @(" @(" @(&9O<B!L:6YE(&EN(&UA=&-H7VQI<W0Z#0H@(" @(" @
M(" @(" @(" @(" @(" @("!M;R ]('-E;&8N;6%T8VAE<RYM871C:"AL:6YE
M*0T*(" @(" @(" @(" @(" @(" @(" @(" @:68@;6\Z#0H@(" @(" @(" @
M(" @(" @(" @(" @(" @(" @97AP<B ](&UO+F=R;W5P*#(I(&]R(&UO+F=R
M;W5P*#,I#0H@(" @(" @(" @(" @(" @(" @(" @(" @(" @:[EMAIL PROTECTED]&5N
M="!A;F0@<F4N<V5A<F-H*&5X<'(L8V]N=&5N="QR95]F;&%G<RDZ#0H@(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(&9O=6YD7VUA=&-H(#T@,0T*
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @("!B<F5A:R @(" @(" @
M(" @(" @(" @#0H-"[EMAIL PROTECTED]@(" @(" @(" @(" @(" @(" @(&EF
M(&YO="!F;W5N9%]M871C:"!A;F0@<V]U<F-E(#T]("=B;V1Y+69I;&4G(&%N
M9"!M<V<Z#0H@(" @(" @(" @(" @(" @(" @(" @("!F;W(@;&EN92!I;B!M
M871C:%]L:[EMAIL PROTECTED](" @(" @(" @(" @(" @(" @(" @(" @(" @(&UO(#T@
M<V5L9BYM871C:&5S+FUA=&-H*&QI;F4I#0H@(" @(" @(" @(" @(" @(" @
M(" @(" @(" @:68@;6\Z#0H@(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(&5X<'(@/2!M;RYG<F]U<"@R*2!O<B!M;RYG<F]U<"@S*0T*(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @("!F;W(@;7-G7W!A<G0@:6X@;7-G
M+G=A;&LH*3H-"B @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(&EF(&US9U]P87)T+F=E=%]C;VYT96YT7VUA:6YT>7!E*"D@/3T@)W1E>'0G
[EMAIL PROTECTED](" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(&-O
M;G1E;G0@/2!M<V=?<&%R="YG971?<&%Y;&]A9"AD96-O9&4],2D-"B @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @("!I9B!C;VYT96YT
M(&%N9"[EMAIL PROTECTED]<BQC;VYT96YT+')E7V9L86=S*3H-"B @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @9F]U;F1?
M;6%T8V@@/2 Q#0H@(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(&)R96%K(" @(" @(" @(" @(" @(" @(" @(" @#0H@(" @
M(" @(" @(" @(" @(" @(" @(" @(" @:[EMAIL PROTECTED];F1?;[EMAIL PROTECTED]@(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(&)R96%K(" @(" @(" @(" @
'(" @(" -"@``
`
end


_____________________________________________
tmda-users mailing list ([EMAIL PROTECTED])
http://tmda.net/lists/listinfo/tmda-users

Reply via email to