;ς
’)?Bc           @   sF  d  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 Z e i e
 i d   d  Z d   Z h  e i e d  <e i e d  <e i e d  <e i e d  <Z e i Z d f  d     YZ d f  d     YZ d S(   s   Handle delivery bounces.
N(   s
   StringType(   s   MIMEText(   s   MIMEMessage(   s   mm_cfg(   s   Utils(   s   Message(   s   MemberAdaptor(   s   Pending(   s   syslog(   s   i18ns    i   i   c         C   s   |  Sd  S(   N(   s   s(   s   s(    (    s   /var/mailman/Mailman/Bouncer.pys   _*   s    s   due to excessive bouncess   by yourselfs   by the list administrators   for unknown reasonss   _BounceInfoc           B   s#   t  Z d   Z d   Z d   Z RS(   Nc         C   s)   | |  _  t |  _ |  i | | |  d  S(   N(   s   members   selfs   Nones   cookies   resets   scores   dates   noticesleft(   s   selfs   members   scores   dates   noticesleft(    (    s   /var/mailman/Mailman/Bouncer.pys   __init__7   s    		c         C   s(   | |  _  | |  _ | |  _ t |  _ d  S(   N(   s   scores   selfs   dates   noticeslefts   ZEROHOUR_PLUSONEDAYs
   lastnotice(   s   selfs   scores   dates   noticesleft(    (    s   /var/mailman/Mailman/Bouncer.pys   reset<   s    			c         C   s   d |  i Sd  S(   Nsν   <bounce info for member %(member)s
        current score: %(score)s
        last bounce date: %(date)s
        email notices left: %(noticesleft)s
        last notice date: %(lastnotice)s
        confirmation cookie: %(cookie)s
        >(   s   selfs   __dict__(   s   self(    (    s   /var/mailman/Mailman/Bouncer.pys   __repr__B   s    (   s   __name__s
   __module__s   __init__s   resets   __repr__(    (    (    s   /var/mailman/Mailman/Bouncer.pys   _BounceInfo6   s   		s   Bouncerc           B   sG   t  Z d   Z d e d  Z d   Z d   Z d   Z e d  Z RS(   Nc         C   sv   t  i |  _ t  i |  _ t  i |  _ t  i |  _	 t  i
 |  _ t  i |  _ t  i |  _ t  i |  _ h  |  _ h  |  _ d  S(   N(   s   mm_cfgs   DEFAULT_BOUNCE_PROCESSINGs   selfs   bounce_processings   DEFAULT_BOUNCE_SCORE_THRESHOLDs   bounce_score_thresholds   DEFAULT_BOUNCE_INFO_STALE_AFTERs   bounce_info_stale_afters(   DEFAULT_BOUNCE_YOU_ARE_DISABLED_WARNINGSs    bounce_you_are_disabled_warningss1   DEFAULT_BOUNCE_YOU_ARE_DISABLED_WARNINGS_INTERVALs)   bounce_you_are_disabled_warnings_intervals.   DEFAULT_BOUNCE_UNRECOGNIZED_GOES_TO_LIST_OWNERs&   bounce_unrecognized_goes_to_list_owners&   DEFAULT_BOUNCE_NOTIFY_OWNER_ON_DISABLEs   bounce_notify_owner_on_disables&   DEFAULT_BOUNCE_NOTIFY_OWNER_ON_REMOVALs   bounce_notify_owner_on_removals   bounce_infos   delivery_status(   s   self(    (    s   /var/mailman/Mailman/Bouncer.pys   InitVarsP   s    	f1.0c      
   C   s.  |  i |  o d  Sn |  i |  } | t j o t i   d  } n t	 | t
  oK t
 | | | |  i  } |  i | |  t d d |  i   | | i  n!|  i |  t i j o! t d d |  i   |  d  Snη | i | j o7 t d d |  i   | t i d | d f d   n  t i |  } t i | i  } | |  i | j  o3 | i | | |  i  t d d	 |  i   |  n8 | i | 7_ | | _ t d d
 | |  i   | i  | i |  i j oR t d d |  i   | | i |  i  |  i | |  | i d | i | i  n d  S(   Ni   s   bounces   %s: %s bounce score: %ss   %s: %s residual bounce receiveds*   %s: %s already scored a bounce for date %ss   %d-%b-%Yi    i   s'   %s: %s has stale bounce info, resettings   %s: %s current bounce score: %ss-   sending %s list probe to: %s (score %s >= %s)(    s   selfs   isMembers   members   getBounceInfos   infos   days   Nones   times	   localtimes
   isinstances   _BounceInfos   weights    bounce_you_are_disabled_warningss   setBounceInfos   syslogs   internal_names   scores   getDeliveryStatuss   MemberAdaptors   ENABLEDs   dates   strftimes   Utilss   midnights   nows
   lastbounces   bounce_info_stale_afters   resets   bounce_score_thresholds	   sendProbes   msgs   noticesleft(   s   selfs   members   msgs   weights   days   infos   nows
   lastbounce(    (    s   /var/mailman/Mailman/Bouncer.pys   registerBouncei   sF    		"				
c         C   s   |  i t i |  i   |  } | | _ t d d |  i   |  |  i	 | t
 i  |  i |  |  i o |  i | |  n d  S(   Ns   bounces-   %s: %s disabling due to probe bounce received(   s   selfs   pend_news   Pendings	   RE_ENABLEs   internal_names   members   cookies   infos   syslogs   setDeliveryStatuss   MemberAdaptors   BYBOUNCEs   sendNextNotifications   bounce_notify_owner_on_disables   _Bouncer__sendAdminBounceNotices   msg(   s   selfs   members   infos   msgs   cookie(    (    s   /var/mailman/Mailman/Bouncer.pys   disableBouncingMember    s    		
c         C   s  t  i |  i  } t  i d h  d |  i <d | <d d <d t d  <d d <d	 d <d
 | <d |  } t d  } t i |  i   | | d |  i } | i d  | i t | d t  i |  i   t | t  o | i t |   n | i t |   | i |   d  S(   Ns
   bounce.txts   listnames   addrs   negatives    s   dids   disableds   buts   reenables	   owneraddrs   mlists   Bounce action notifications   langs   multipart/mixeds   _charset(   s   Utilss   get_site_emails   selfs	   host_names	   siteowners   maketexts	   real_names   members   _s   texts   subjects   Messages   UserNotifications   GetOwnerEmails   preferred_languages   umsgs   set_types   attachs   MIMETexts
   GetCharSets
   isinstances   msgs
   StringTypes   MIMEMessages   send(   s   selfs   members   msgs	   siteowners   texts   umsgs   subject(    (    s   /var/mailman/Mailman/Bouncer.pys   __sendAdminBounceNotice­   s    	K%c      	   C   s΅  |  i |  } | t j o d  Sn |  i |  }	 | i d j oΌ |  i | d d |  i	 d d |  i
 | i  |	 t i j o t d d |  i   |  n t d d	 |  i   | h  t i d
 <t i d <t i d <t i d <i |	 d   d  Sn d |  i d d d | i f } |  i | d d } |  i   } |  i |  } t i |	  } | t j o t d  } n t |  } |	 t i j oA t i  d t i! t" i# | i$    } t d  } | | 7} n t" i& d h  d |  i' <d | i <d | <d | <d |  i( |  <d |  i)   <d | <d | d |  } t+ i, | | d | d | }
 |
 d  =d! | i |
 d" <|
 i. |   | i d 8_ t i!   d#  | _/ d  S($   Ni    s   disabled addresss   admin_notifs   useracki   s   bounces'   %s: %s deleted after exhausting noticess	   subscribes%   %s: %s auto-unsubscribed [reason: %s]s   BYBOUNCEs   BYUSERs   BYADMINs   UNKNOWNs   invalid values   %s/%ss   confirms   absolutes   for unknown reasonss   %d-%b-%Ys5    The last bounce received from you was dated %(date)ss   disabled.txts   listnames   noticeslefts
   confirmurls
   optionsurls   passwords	   owneraddrs   reasons   langs   mlists   texts   subjects   confirm s   Subjecti   (0   s   selfs   getBounceInfos   members   infos   Nones   getDeliveryStatuss   reasons   noticeslefts   ApprovedDeleteMembers   bounce_notify_owner_on_removals   pend_confirms   cookies   MemberAdaptors   BYBOUNCEs   syslogs   internal_names   BYUSERs   BYADMINs   UNKNOWNs   gets   GetScriptURLs
   confirmurls   GetOptionsURLs
   optionsurls   GetRequestEmails   reqaddrs   getMemberLanguages   langs   REASONSs	   txtreasons   _s   times   strftimes	   localtimes   Utilss   midnights   dates   extras   maketexts	   real_names   getMemberPasswords   GetOwnerEmails   texts   Messages   UserNotifications   msgs   sends
   lastnotice(   s   selfs   members   infos
   confirmurls   langs   extras   texts   reqaddrs
   optionsurls   reasons   msgs   dates	   txtreason(    (    s   /var/mailman/Mailman/Bouncer.pys   sendNextNotificationΝ   sL    	
		C"		Wc   	      C   sΩ   | i   } | i d t d   } | t j o t d  } n t | i    } t	 i
 | i   |  i   | d |  i } | i d  t | d t i |  i  } | i |  | i t |   | i |   d  S(   Ns   subjects   (no subject)s!   [No bounce details are available]s   langs   multipart/mixeds   _charset(   s   msgs
   get_senders   senders   gets   _s   subjects   es   Nones   notices   Messages   UserNotifications   selfs   GetOwnerEmails   preferred_languages   bmsgs   set_types   MIMETexts   Utilss
   GetCharSets   txts   attachs   MIMEMessages   send(	   s   selfs   msgs   msgdatas   es   senders   notices   bmsgs   txts   subject(    (    s   /var/mailman/Mailman/Bouncer.pys   BounceMessage
  s    	(	   s   __name__s
   __module__s   InitVarss   Nones   registerBounces   disableBouncingMembers   _Bouncer__sendAdminBounceNotices   sendNextNotifications   BounceMessage(    (    (    s   /var/mailman/Mailman/Bouncer.pys   BouncerO   s   	7		 	=(   s   __doc__s   syss   times   typess
   StringTypes   email.MIMETexts   MIMETexts   email.MIMEMessages   MIMEMessages   Mailmans   mm_cfgs   Utilss   Messages   MemberAdaptors   Pendings   Mailman.Logging.Syslogs   syslogs   i18ns   EMPTYSTRINGs	   localtimes   dayss   ZEROHOUR_PLUSONEDAYs   _s   BYBOUNCEs   BYUSERs   BYADMINs   UNKNOWNs   REASONSs   _BounceInfos   Bouncer(   s   _s
   StringTypes   ZEROHOUR_PLUSONEDAYs   MIMEMessages   REASONSs   Utilss   Bouncers   EMPTYSTRINGs   syss   syslogs   mm_cfgs   MemberAdaptors   MIMETexts   times   i18ns   Messages   _BounceInfos   Pending(    (    s   /var/mailman/Mailman/Bouncer.pys   ?   s&   			N	