;ς
’)?Bc           @   sG  d  Z  d k Z d k Z d k Z d k Z d k l Z d k l Z d k	 l
 Z
 d k l Z d k l Z d k l Z d k l Z d	 k l Z d
 k l Z d k l Z d k l Z d k l Z d Z y e e f Wn e j
 o d Z d Z n Xd f  d     YZ d e e f d     YZ  d   Z! d   Z" d   Z# d S(   s   Bounce queue runner.N(   s   MIMEText(   s   MIMEMessage(   s	   parseaddr(   s   mm_cfg(   s   Utils(   s   LockFile(   s   UserNotification(   s
   BouncerAPI(   s   Runner(   s   get_switchboard(   s   syslog(   s   _s   , i   i    s   BounceMixinc           B   s>   t  Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   Nc         C   sQ   t  i i t i d t  i    |  _ t |  _	 d |  _
 t i   t i |  _ d  S(   Ns   bounce-events-%05d.pcki    (   s   oss   paths   joins   mm_cfgs   DATA_DIRs   getpids   selfs   _bounce_events_files   Nones   _bounce_events_fps
   _bouncecnts   times   REGISTER_BOUNCES_EVERYs   _nextaction(   s   self(    (    s*   /var/mailman/Mailman/Queue/BounceRunner.pys   __init__1   s    !%		c         C   s¨   t  i   d  } |  i t j o t |  i d  |  _ n x0 | D]( } t
 i | | | | f |  i d  q@ W|  i i   t i |  i i    |  i t |  7_ d  S(   Ni   s   a+bi   (   s   times	   localtimes   todays   selfs   _bounce_events_fps   Nones   opens   _bounce_events_files   addrss   addrs   cPickles   dumps   listnames   msgs   flushs   oss   fsyncs   filenos
   _bouncecnts   len(   s   selfs   listnames   addrss   msgs   addrs   today(    (    s*   /var/mailman/Mailman/Queue/BounceRunner.pys   _queue_bouncesX   s     c         C   sm  t  d d |  |  i  h  } |  i i d  x t o y" t i |  i  \ } } } } Wn8 t j
 o } t  d d |  n t j
 o Pn X| i | g   i | | | f  q/ Wx} | i   D]o } |  i |  } | i   zB x1 | | D]% \ } } } | i | | d | qτ W| i   Wd  | i   XqΗ W|  i i   t |  _ t i |  i  d |  _ d  S(   Ns   bounces   %s processing %s queued bouncesi    s   Error reading bounce events: %ss   day(   s   syslogs   selfs
   _bouncecnts   eventss   _bounce_events_fps   seeks   Trues   cPickles   loads   listnames   addrs   days   msgs
   ValueErrors   es   EOFErrors
   setdefaults   appends   keyss
   _open_lists   mlists   Locks   registerBounces   Saves   Unlocks   closes   Nones   oss   unlinks   _bounce_events_file(   s   selfs   listnames   es   addrs   days   mlists   msgs   events(    (    s*   /var/mailman/Mailman/Queue/BounceRunner.pys   _register_bouncesc   s8    	 "' 
  	c         C   s"   |  i d j o |  i   n d  S(   Ni    (   s   selfs
   _bouncecnts   _register_bounces(   s   self(    (    s*   /var/mailman/Mailman/Queue/BounceRunner.pys   _cleanup   s    c         C   sR   t  i    } |  i | j p |  i d j o d  Sn | t i |  _ |  i   d  S(   Ni    (   s   times   nows   selfs   _nextactions
   _bouncecnts   mm_cfgs   REGISTER_BOUNCES_EVERYs   _register_bounces(   s   selfs   now(    (    s*   /var/mailman/Mailman/Queue/BounceRunner.pys   _doperiodic   s
     c         C   s   | i   } | o | i   n zT | i |  \ } } } | i	 |  } | i | | |  | o | i   n Wd  | o | i   n Xd  S(   N(   s   mlists   Lockeds   lockeds   Locks   pend_confirms   tokens   ops   addrs   bmsgs   getBounceInfos   infos   disableBouncingMembers   Saves   Unlock(   s   selfs   mlists   tokens   infos   lockeds   addrs   bmsgs   op(    (    s*   /var/mailman/Mailman/Queue/BounceRunner.pys   _probe_bounce   s     (   s   __name__s
   __module__s   __init__s   _queue_bouncess   _register_bouncess   _cleanups   _doperiodics   _probe_bounce(    (    (    s*   /var/mailman/Mailman/Queue/BounceRunner.pys   BounceMixin0   s   	'				s   BounceRunnerc           B   s;   t  Z e i Z e d d  Z d   Z e i	 Z	 d   Z
 RS(   Ni   c         C   s$   t  i |  | |  t i |   d  S(   N(   s   Runners   __init__s   selfs   slices	   numslicess   BounceMixin(   s   selfs   slices	   numslices(    (    s*   /var/mailman/Mailman/Queue/BounceRunner.pys   __init__’   s    c      	   C   sC  | i   t t i  } | i d d  t i	 d d  j o5 | i
 | | d t i	   g d t i	 d d  n | i o d  Sn t | |  } | oD t | |  } | o |  i | |  d  Sn t i | |  } n | o. t d d	 | i d
   t | |  d  Sn t t |  } |  i | i   | |  d  S(   Ns   tos    s   extras   owners   recipss	   envsenders   loops   bounces-   bounce message w/no discernable addresses: %ss
   message-id(   s   mlists   Loads   get_switchboards   mm_cfgs   OUTQUEUE_DIRs   outqs   msgs   gets   Utilss   get_site_emails   enqueues   msgdatas   bounce_processings   verp_bounces   addrss
   verp_probes   tokens   selfs   _probe_bounces
   BouncerAPIs   ScanMessagess   syslogs   maybe_forwards   filters   Nones   _queue_bouncess   internal_name(   s   selfs   mlists   msgs   msgdatas   outqs   tokens   addrs(    (    s*   /var/mailman/Mailman/Queue/BounceRunner.pys   _dispose¦   s,    
%	c         C   s   t  i |   t i |   d  S(   N(   s   BounceMixins   _cleanups   selfs   Runner(   s   self(    (    s*   /var/mailman/Mailman/Queue/BounceRunner.pys   _cleanupΫ   s    (   s   __name__s
   __module__s   mm_cfgs   BOUNCEQUEUE_DIRs   QDIRs   Nones   __init__s   _disposes   BounceMixins   _doperiodics   _cleanup(    (    (    s*   /var/mailman/Mailman/Queue/BounceRunner.pys   BounceRunner   s
   		3	c   
      C   s  t  i |  i    \ } } g  } x3 d d d d f D] } | i | i
 | g    q4 WxΌ | D]΄ } t |  d } | o q^ n t i t i |  } | o q^ n y7 | | i d  j o w^ n d | i d d	  }	 Wn* t j
 o t d
 d t i  g  Sn X|	 g Sq^ Wd  S(   Ns   tos   delivered-tos   envelope-tos   apparently-toi   s   bouncess   %s@%ss   mailboxs   hosts   errors4   VERP_REGEXP doesn't yield the right match groups: %s(   s   Utilss
   ParseEmails   mlists   GetBouncesEmails   bmailboxs   bdomains   valss   headers   extends   msgs   get_alls   fields	   parseaddrs   tos   res   searchs   mm_cfgs   VERP_REGEXPs   mos   groups   addrs
   IndexErrors   syslog(
   s   mlists   msgs   fields   tos   headers   bdomains   valss   mos   bmailboxs   addr(    (    s*   /var/mailman/Mailman/Queue/BounceRunner.pys   verp_bounceα   s.      
	c         C   s6  t  i |  i    \ }
 } g  } x3 d d d d f D] } | i | i
 | g    q4 WxΤ | D]Μ } t |  d } | o q^ n t i t i |  }	 |	 o q^ n yZ |
 |	 i d  j o w^ n |	 i d  } |  i | d t } | t j	 o | Sn Wq^ t j
 o t d	 d
 t i  q^ Xq^ Wt Sd  S(   Ns   tos   delivered-tos   envelope-tos   apparently-toi   s   bouncess   tokens   expunges   errors:   VERP_PROBE_REGEXP doesn't yield the right match groups: %s(   s   Utilss
   ParseEmails   mlists   GetBouncesEmails   bmailboxs   bdomains   valss   headers   extends   msgs   get_alls   fields	   parseaddrs   tos   res   searchs   mm_cfgs   VERP_PROBE_REGEXPs   mos   groups   tokens   pend_confirms   Falses   datas   Nones
   IndexErrors   syslog(   s   mlists   msgs   fields   tos   headers   bdomains   valss   tokens   datas   mos   bmailbox(    (    s*   /var/mailman/Mailman/Queue/BounceRunner.pys
   verp_probe  s2      c         C   s   |  i od |  i d d d d } |  i | d t d  d t d  d	 d
 t d d | i d d   n t d d | i d d   d  S(   Ns   admins   absolutei   s   /bounces   texts*  The attached message was received as a bounce, but either the bounce format
was not recognized, or no member addresses could be extracted from it.  This
mailing list has been configured to send all unrecognized bounce messages to
the list administrator(s).

For more information see:
%(adminurl)s

s   subjects   Uncaught bounce notifications   tomoderatorsi    s   bounces'   forwarding unrecognized, message-id: %ss
   message-ids   n/as'   discarding unrecognized, message-id: %s(	   s   mlists&   bounce_unrecognized_goes_to_list_owners   GetScriptURLs   adminurls   ForwardMessages   msgs   _s   syslogs   get(   s   mlists   msgs   adminurl(    (    s*   /var/mailman/Mailman/Queue/BounceRunner.pys   maybe_forward$  s    
	

		($   s   __doc__s   oss   res   times   cPickles   email.MIMETexts   MIMETexts   email.MIMEMessages   MIMEMessages   email.Utilss	   parseaddrs   Mailmans   mm_cfgs   Utilss   LockFiles   Mailman.Messages   UserNotifications   Mailman.Bouncerss
   BouncerAPIs   Mailman.Queue.Runners   Runners   Mailman.Queue.sbcaches   get_switchboards   Mailman.Logging.Syslogs   syslogs   Mailman.i18ns   _s
   COMMASPACEs   Trues   Falses	   NameErrors   BounceMixins   BounceRunners   verp_bounces
   verp_probes   maybe_forward(   s   get_switchboards   syslogs   MIMETexts   LockFiles   maybe_forwards   res
   verp_probes   BounceRunners   Trues   cPickles   BounceMixins   mm_cfgs   Falses   _s	   parseaddrs   UserNotifications   MIMEMessages   Runners   Utilss
   BouncerAPIs   verp_bounces   times   oss
   COMMASPACE(    (    s*   /var/mailman/Mailman/Queue/BounceRunner.pys   ?   s6   				oB	 	#