ó
Nü½cc        +   @   sù  d  Z  d d l Z d d l Z d „  Z e d ƒ Z e d ƒ e d ƒ e d ƒ f e d ƒ e d	 ƒ e d
 ƒ f e d ƒ e d ƒ e d ƒ f e d ƒ e d ƒ e d ƒ f e d ƒ e d ƒ e d ƒ f e d ƒ e d ƒ e d ƒ f e d ƒ e d ƒ e d ƒ f e d ƒ e d ƒ e d ƒ f e d ƒ e d ƒ e d ƒ f e d ƒ e d ƒ e d ƒ f e d ƒ e d  ƒ e d! ƒ f e d" ƒ e d# ƒ e d ƒ f e d$ ƒ e d% ƒ e d& ƒ f e d' ƒ e d( ƒ e d) ƒ f e d* ƒ e d+ ƒ e d ƒ f e d* ƒ e d+ ƒ e d, ƒ f e d- ƒ e d. ƒ e d/ ƒ f e d0 ƒ e d1 ƒ e d) ƒ f e d2 ƒ e d3 ƒ e d ƒ f e d4 ƒ e d5 ƒ e d6 ƒ f e d7 ƒ e d8 ƒ e d) ƒ f e d9 ƒ e d: ƒ e d; ƒ f e d< ƒ e d= ƒ e d ƒ f e d> ƒ e d+ ƒ e d? ƒ f e d@ ƒ e dA ƒ e dB ƒ f e dC ƒ e dD ƒ e d& ƒ f e dE ƒ e dF ƒ e dG ƒ f e dH ƒ e dI ƒ e dJ ƒ f e dK ƒ e dF ƒ e dL ƒ f e dM ƒ e dD ƒ e dN ƒ f e dO ƒ e dD ƒ e dP ƒ f e dQ ƒ e dR ƒ e dS ƒ f e dT ƒ e dU ƒ e dV ƒ f e dW ƒ e dX ƒ e dY ƒ f e dZ ƒ e d[ ƒ e d) ƒ f e d\ ƒ e d] ƒ e d^ ƒ f e d_ ƒ e d` ƒ e dL ƒ f e da ƒ e db ƒ e dc ƒ f e dd ƒ e de ƒ e df ƒ f e dg ƒ e dh ƒ e di ƒ f g( Z d dj „ Z d S(k   s2   Recognizes simple heuristically delimited bounces.iÿÿÿÿNc         C   s   t  j |  t  j ƒ S(   N(   t   ret   compilet
   IGNORECASE(   t   pattern(    (    s;   /export/web/mailman/mailman/Mailman/Bouncers/SimpleMatch.pyt   _c   s    s'   ^[\x21-\x3d\x3f\x41-\x7e]+@[a-z0-9._]+$s&   here is your list of failed recipientss   here is your returned mails   <(?P<addr>[^>]*)>s   the following addresses hads   transcript of session followss=   ^ *(\(expanded from: )?<?(?P<addr>[^\s@]+@[^\s@>]+?)>?\)?\s*$s@   this message was created automatically by mail delivery softwares   original message followss   rcpt to:\s*<(?P<addr>[^>]*)>s*   message from interscan e-mail viruswall nts   end of messages   failed addresses follow:s   message text follows:s   \s*(?P<addr>\S+@\S+)s8   This is the machine generated message from mail service.s1   --- Below the next line is a copy of the message.s?   The following addresses did NOT receive a copy of your message:s   --- Session Transcript ---s   [>]\s*(?P<addr>.*)$s#   Intended recipient:\s*(?P<addr>.*)$s%   --------RETURNED MAIL FOLLOWS--------s&   Undeliverable Address:\s*(?P<addr>.*)$s   Original message attacheds7   This message was created automatically by mail deliverys$   ^---- START OF RETURNED MESSAGE ----s   addressed to '(?P<addr>[^']*)'s   User's mailbox is full:s   Unable to deliver mail.s+   User's mailbox is full:\s*<(?P<addr>[^>]*)>s=   The email below could not be delivered to the following user:s   Old message:s:   Unable to deliver message to the following address\(es\)\.s   --- Original message follows\.s   <(?P<addr>[^>]*)>:s.   Delivery to the following recipient(s)? faileds   ----- Original message -----s!   ^\s*(?P<addr>[^\s@]+@[^\s@]+)\s*$s6   A message that you( have)? sent could not be delivereds   ^---s   ^(?P<addr>[^\s@]+@[^\s@:]+):s@   Del(i|e)very to the following recipient(s)? (failed|was aborted)s   ^[^D][^@]{2,}$s&   ^\s*(. )?(?P<addr>[^\s@]+@[^\s@]+)\s*$s   ^Your message\s*$s	   ^because:s   ^Unable to deliver message tos   \*+\s+End of message\s+\*+s)   ^Sorry, unable to deliver your message tos   ^A copy of the original messages   \s*(?P<addr>[^\s@]+@[^\s@]+)\s+s%   ^A message could not be delivered to:s	   ^Subject:s   ^Invalid final delivery userid:s   ^Original message follows.s    \s*(?P<addr>[^\s@]+@[^\s@]+)\s*$s   ---- Failed Recipients ----s
    Mail ----s.   A message that you sent could not be delivereds   (?P<addr>[^\s@]+@[^\s@)]+)s   ^--> Error description:\s*$s   ^Error-End:s'   ^Error-for:\s+(?P<addr>[^\s@]+@[^\s@]+)s#   Your message could not be delivereds   ^-s&   Your message could not be delivered tos   ^\s*$s   (?P<addr>[^\s@]+@[^\s@]+)s.   Your message has encountered delivery problemss   Your message readss)   addressed to\s*(?P<addr>[^\s@]+@[^\s@)]+)s%   Did not reach the following recipients   \s(?P<addr>[^\s@]+@[^\s@]+)s   This is the deliver program ats   ^(?P<addr>[^\s@]+@[^\s@<>]+)s   this is the email server ats    \s(?P<addr>[^\s@]+@[^\s@]+)[\s,]s   - no such user heres   There is no users   ^(?P<addr>[^\s@]+@[^\s@]+)\ss-   The following recipient.*could not be reacheds   bogus stop patterns   ^(?P<addr>[^\s@]+@[^\s@]+)\s*$s   Could not deliver message tos   ^\s*--s2   ^Failed Recipient:\s*(?P<addr>[^\s@]+@[^\s@]+)\s*$s   --------Message not delivereds   --------Error Details   ^Your messages
   ^ReportingsD   Your message to (?P<addr>[^\s@]+@[^\s@]+) was automatically rejecteds$   A message that you sent was rejecteds   This is a copy of your messages2   Message could not be delivered to some recipients.s   Message headers follows-   Recipient: \[SMTP:(?P<addr>[^\s@]+@[^\s@]+)\]s-   wasn\'t able to deliver the following messages,   ---Below this line is a copy of the message.s   To: (?P<addr>[^\s@]+@[^\s@]+)s/   This is a delivery failure notification messages   The problem appears to bes   -- (?P<addr>[^\s@]+@[^\s@]+)c         C   s   | d  k r t } n  i  } xÖ | D]Î \ } } } d } x¬ t j j |  d t ƒD]’ } | d k r} | j | ƒ r} d } q} n  | d k rP | j | ƒ } | rÌ | j d ƒ }	 |	 rß d | |	 j d ƒ <qß qâ | j | ƒ râ Pqâ qP qP W| r" Pq" q" Wg  | j	 ƒ  D] }
 t
 j |
 ƒ r|
 ^ qS(   Ni    t   decodei   t   addrs   <>(   t   Nonet   PATTERNSt   emailt	   Iteratorst   body_line_iteratort   Truet   searcht   groupt   stript   keyst   VALIDt   match(   t   msgt   patternst   addrst   scret   ecret   acret   statet   linet   moR   t   x(    (    s;   /export/web/mailman/mailman/Mailman/Bouncers/SimpleMatch.pyt   processÓ   s(    	(	   t   __doc__R    t   email.IteratorsR	   R   R   R   R   R   (    (    (    s;   /export/web/mailman/mailman/Mailman/Bouncers/SimpleMatch.pyt   <module>   sü   																																																																																		