;ò
¢)?Bc           @   sU  d  Z  d k Z d k Z d k Z d k Z d k Z d k 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 Td k Z d k l Z l Z 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 k) l* Z* d k+ l, Z, d k- l. Z. d k/ l0 Z0 d k l1 Z1 d k l2 Z2 d k l3 Z3 d k4 l5 Z5 d k l6 Z6 d k l7 Z7 d k l8 Z8 d k9 l: Z: e8 i; Z; d Z< y e= e> f Wn e? j
 o d Z= d  Z> n Xd! e* e$ e, e e& e. e" e( e  e0 e1 i1 f d" „  ƒ  YZ@ d S(#   sU   The class representing a Mailman mailing list.

Mixes in many task-specific classes.
N(   s   StringIO(   s   UserDict(   s   urlparse(   s   *(   s   getaddressess
   formataddrs	   parseaddr(   s   mm_cfg(   s   Utils(   s   Errors(   s   LockFile(   s   UserDesc(   s   Archiver(   s   Autoresponder(   s   Bouncer(   s	   Deliverer(   s   Digester(   s   GatewayManager(   s   HTMLFormatter(   s	   ListAdmin(   s   SecurityManager(   s   TopicMgr(   s   Pending(   s   Gui(   s   MemberAdaptor(   s   OldStyleMemberships(   s   Message(   s   Site(   s   i18n(   s   syslogs    i   i    s   MailListc           B   sô  t  Z e d d „ Z d „  Z d „  Z d d „ Z d „  Z d „  Z d	 „  Z	 d
 „  Z
 e d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d d „ Z d d d „ Z d „  Z e d d d „ Z d „  Z d „  Z e d „ Z e e d „ Z d „  Z d „  Z d „  Z e d „ Z d „  Z d  „  Z  d! „  Z! d d" „ Z" e d# „ Z# e e d d d$ „ Z$ e e e d% „ Z% e e e d& „ Z& d' „  Z' d( „  Z( d) „  Z) e d* „ Z* e e d+ „ Z+ d, „  Z, d- „  Z- d. „  Z. d/ „  Z/ d0 „  Z0 RS(1   Ni   c         C   s!  x5 |  i i D]' } t | d ƒ o | i |  ƒ q q W|  i | ƒ t |  ƒ |  _	 | t
 j o d  Sn t i i |  i ƒ  d ƒ } h  } y t | | ƒ Wn< t j
 o0 } | i t i j o qþ t d d | ƒ n& X| i d ƒ } | o | |  ƒ n | o |  i ƒ  n |  i ƒ  d  S(   Ns   __init__s	   extend.pys   errors"   IOError reading list extension: %ss   extend(   s   selfs	   __class__s	   __bases__s	   baseclasss   hasattrs   __init__s   InitTempVarss   names   OldStyleMembershipss   _memberadaptors   Nones   oss   paths   joins   fullpaths   filenames   dicts   execfiles   IOErrors   es   errnos   ENOENTs   syslogs   gets   funcs   locks   Locks   Load(   s   selfs   names   locks   es   filenames   dicts   funcs	   baseclass(    (    s    /var/mailman/Mailman/MailList.pys   __init__\   s,     c         C   sr   y t  |  i | ƒ SWnW t j
 oK xF |  i D]- } y t  | | ƒ SWq/ t j
 o q/ Xq/ Wt | ‚ n Xd  S(   N(   s   getattrs   selfs   _memberadaptors   names   AttributeErrors   _guis   guicomponent(   s   selfs   names   guicomponent(    (    s    /var/mailman/Mailman/MailList.pys   __getattr__‚   s    
 	c         C   s>   |  i ƒ  o
 d } n d } d |  i ƒ  | t |  ƒ f Sd  S(   Ns   (locked)s
   (unlocked)s   <mailing list "%s" %s at %x>(   s   selfs   Lockeds   statuss   internal_names   id(   s   selfs   status(    (    s    /var/mailman/Mailman/MailList.pys   __repr__’   s    
i    c         C   sE   |  i i | ƒ y |  i ƒ  Wn  t j
 o |  i ƒ  ‚  n Xd  S(   N(   s   selfs   _MailList__locks   locks   timeouts   Loads	   Exceptions   Unlock(   s   selfs   timeout(    (    s    /var/mailman/Mailman/MailList.pys   Lockž   s    
c         C   s   |  i i d d ƒ d  S(   Ns   unconditionallyi   (   s   selfs   _MailList__locks   unlock(   s   self(    (    s    /var/mailman/Mailman/MailList.pys   Unlock¨   s    c         C   s   |  i i ƒ  Sd  S(   N(   s   selfs   _MailList__locks   locked(   s   self(    (    s    /var/mailman/Mailman/MailList.pys   Locked«   s    c         C   s   |  i Sd  S(   N(   s   selfs   _internal_name(   s   self(    (    s    /var/mailman/Mailman/MailList.pys   internal_name³   s    c         C   s   |  i Sd  S(   N(   s   selfs
   _full_path(   s   self(    (    s    /var/mailman/Mailman/MailList.pys   fullpath¶   s    c         C   sF   | t j o d |  i ƒ  |  i f Sn d |  i ƒ  | |  i f Sd  S(   Ns   %s@%ss   %s-%s@%s(   s   extras   Nones   selfs   internal_names	   host_name(   s   selfs   extra(    (    s    /var/mailman/Mailman/MailList.pys   getListAddress¹   s    c         C   s   |  i d ƒ Sd  S(   Ns   bounces(   s   selfs   getListAddress(   s   self(    (    s    /var/mailman/Mailman/MailList.pys   GetBouncesEmail¿   s    c         C   s   |  i d ƒ Sd  S(   Ns   owner(   s   selfs   getListAddress(   s   self(    (    s    /var/mailman/Mailman/MailList.pys   GetOwnerEmailÂ   s    c         C   s   |  i d ƒ Sd  S(   Ns   request(   s   selfs   getListAddress(   s   self(    (    s    /var/mailman/Mailman/MailList.pys   GetRequestEmailÅ   s    c         C   s6   t  i h  d d |  i ƒ  <d | <d |  i Sd  S(   Ns   addrs
   %s-confirms   cookies   @(   s   mm_cfgs   VERP_CONFIRM_FORMATs   selfs   internal_names   cookies	   host_name(   s   selfs   cookie(    (    s    /var/mailman/Mailman/MailList.pys   GetConfirmEmailÈ   s    c         C   s   |  i ƒ  Sd  S(   N(   s   selfs   getListAddress(   s   self(    (    s    /var/mailman/Mailman/MailList.pys   GetListEmailÎ   s    c         C   sF   |  i o | Sn0 t | i d ƒ ƒ \ } } d | |  i | f Sd S(   s¼  Usually the member addr, but modified for umbrella lists.

        Umbrella lists have other mailing lists as members, and so admin stuff
        like confirmation requests and passwords must not be sent to the
        member addresses - the sublists - but rather to the administrators of
        the sublists.  This routine picks the right address, considering
        regular member address to be their own administrative addresses.

        s   @s   %s%s@%sN(   s   selfs   umbrella_lists   members   tuples   splits   accts   hosts   umbrella_member_suffix(   s   selfs   members   accts   host(    (    s    /var/mailman/Mailman/MailList.pys   GetMemberAdminEmailÑ   s
    	 c         C   s(   t  i | |  i | ƒ d |  i ƒ  Sd  S(   Ns   /(   s   Utilss	   ScriptURLs
   scriptnames   selfs   web_page_urls   absolutes   internal_name(   s   selfs
   scriptnames   absolute(    (    s    /var/mailman/Mailman/MailList.pys   GetScriptURLá   s    c         C   sM   |  i d | ƒ } | o t i | ƒ } n d | t i	 | i
 ƒ  ƒ f Sd  S(   Ns   optionss   %s/%s(   s   selfs   GetScriptURLs   absolutes   urls   obscures   Utilss   ObscureEmails   users   urllibs   quotes   lower(   s   selfs   users   obscures   absolutes   url(    (    s    /var/mailman/Mailman/MailList.pys   GetOptionsURLå   s    c         C   s  d |  _ t i t i i t i | p d ƒ d d t i	 d t i
 ƒ|  _ | |  _ | o t i | ƒ |  _ n
 d |  _ x5 |  i i D]' } t | d ƒ o | i |  ƒ q† q† Wg  |  _ xG t t ƒ D]9 } | i d ƒ o qÇ n |  i i t t | ƒ ƒ  ƒ qÇ Wd	 S(
   s6   Set transient variables of this and inherited classes.i    s   <site>s   .locks   lifetimes   withloggings    s   InitTempVarss   _N(   s   selfs   _MailList__timestamps   LockFiles   oss   paths   joins   mm_cfgs   LOCK_DIRs   names   LIST_LOCK_LIFETIMEs   LIST_LOCK_DEBUGGINGs   _MailList__locks   _internal_names   Sites   get_listpaths
   _full_paths	   __class__s	   __bases__s	   baseclasss   hasattrs   InitTempVarss   _guis   dirs   Guis	   components
   startswiths   appends   getattr(   s   selfs   names	   baseclasss	   component(    (    s    /var/mailman/Mailman/MailList.pys   InitTempVarsï   s&     	&			 	 s    c         C   sÅ  | o | |  _ n t i ƒ  |  _ d |  _ h  |  _ t i |  _	 d |  _
 d |  _ h  |  _ h  |  _ h  |  _ h  |  _ t i |  _ d |  _ t i |  _ t i |  _ t i |  _ t i p t i |  _ t i p t i t i |  _ | g |  _! g  |  _" t i# |  _$ d |  _% t i& |  _' t i( |  _) t i* |  _+ t i, |  _- t i. |  _/ t i0 |  _1 t i2 |  _3 t i4 |  _5 t i6 |  _7 t i8 |  _9 t i: |  _; g  |  _< t i= |  _> |  i? ƒ  } | d iA ƒ  | d |  _B d |  _C d |  _D d |  _E d |  _F t iG |  _H t iI |  _J t iK |  _L t iM |  _N t iO |  _P t iQ |  _R t iS |  _T g  |  _U d |  _V d |  _W t iX |  _Y t iZ |  _[ t i\ |  _] t i^ |  __ t i` |  _a t ib |  _c d |  _d t ie |  _f d |  _g d |  _h d |  _i g  |  _j g  |  _k g  |  _l g  |  _m t in |  _o t ip |  _q g  |  _r | |  _t h  |  _u x5 |  iv iw D]' } ty | d ƒ o | iz |  ƒ q<q<Wt i{ |  i| |  _} t i~ |  _ t i€ |  _ t‚ iƒ |  iT ƒ d j o d |  _„ n
 d |  _„ d S(	   s?   Assign default values - some will be overriden by stored state.i   i    f1.0s    s   InitVarss   us-asciii   N(…   s   names   selfs   _internal_names   times
   created_ats   volumes   memberss   mm_cfgs   DATA_FILE_VERSIONs   data_versions   last_post_times   post_ids   user_optionss   languages	   usernamess	   passwordss   DEFAULT_NEW_MEMBER_OPTIONSs   new_member_optionss   respond_to_post_requestss   DEFAULT_LIST_ADVERTISEDs
   advertiseds   DEFAULT_MAX_NUM_RECIPIENTSs   max_num_recipientss   DEFAULT_MAX_MESSAGE_SIZEs   max_message_sizes   DEFAULT_HOST_NAMEs   DEFAULT_EMAIL_HOSTs	   host_names   DEFAULT_URLs   DEFAULT_URL_PATTERNs   DEFAULT_URL_HOSTs   web_page_urls   admins   owners	   moderators   DEFAULT_REPLY_GOES_TO_LISTs   reply_goes_to_lists   reply_to_addresss   DEFAULT_FIRST_STRIP_REPLY_TOs   first_strip_reply_tos   DEFAULT_ADMIN_IMMED_NOTIFYs   admin_immed_notifys   DEFAULT_ADMIN_NOTIFY_MCHANGESs   admin_notify_mchangess$   DEFAULT_REQUIRE_EXPLICIT_DESTINATIONs   require_explicit_destinations   DEFAULT_ACCEPTABLE_ALIASESs   acceptable_aliasess   DEFAULT_UMBRELLA_LISTs   umbrella_lists$   DEFAULT_UMBRELLA_MEMBER_ADMIN_SUFFIXs   umbrella_member_suffixs   DEFAULT_SEND_REMINDERSs   send_reminderss   DEFAULT_SEND_WELCOME_MSGs   send_welcome_msgs   DEFAULT_SEND_GOODBYE_MSGs   send_goodbye_msgs   DEFAULT_BOUNCE_MATCHING_HEADERSs   bounce_matching_headerss   header_filter_ruless   DEFAULT_ANONYMOUS_LISTs   anonymous_lists   internal_names   internalnames   uppers	   real_names   descriptions   infos   welcome_msgs   goodbye_msgs   DEFAULT_SUBSCRIBE_POLICYs   subscribe_policys   DEFAULT_UNSUBSCRIBE_POLICYs   unsubscribe_policys   DEFAULT_PRIVATE_ROSTERs   private_rosters   DEFAULT_OBSCURE_ADDRESSESs   obscure_addressess   DEFAULT_ADMIN_MEMBER_CHUNKSIZEs   admin_member_chunksizes   DEFAULT_ADMINISTRIVIAs   administrivias   DEFAULT_SERVER_LANGUAGEs   preferred_languages   available_languagess   include_rfc2369_headerss   include_list_post_headers   DEFAULT_FILTER_MIME_TYPESs   filter_mime_typess   DEFAULT_PASS_MIME_TYPESs   pass_mime_typess   DEFAULT_FILTER_CONTENTs   filter_contents!   DEFAULT_CONVERT_HTML_TO_PLAINTEXTs   convert_html_to_plaintexts   DEFAULT_FILTER_ACTIONs   filter_actions   DEFAULT_NONDIGESTABLEs   nondigestables   personalizes!   DEFAULT_DEFAULT_MEMBER_MODERATIONs   default_member_moderations	   emergencys   member_moderation_actions   member_moderation_notices   accept_these_nonmemberss   hold_these_nonmemberss   reject_these_nonmemberss   discard_these_nonmemberss   DEFAULT_FORWARD_AUTO_DISCARDSs   forward_auto_discardss    DEFAULT_GENERIC_NONMEMBER_ACTIONs   generic_nonmember_actions   ban_lists   crypted_passwords   passwords   hold_and_cmd_autoresponsess	   __class__s	   __bases__s	   baseclasss   hasattrs   InitVarss   DEFAULT_SUBJECT_PREFIXs   __dict__s   subject_prefixs   DEFAULT_MSG_HEADERs
   msg_headers   DEFAULT_MSG_FOOTERs
   msg_footers   Utilss
   GetCharSets   encode_ascii_prefixes(   s   selfs   names   admins   crypted_passwords   internalnames	   baseclass(    (    s    /var/mailman/Mailman/MailList.pys   InitVars
  s¦     																														 c         C   s]   d t  f d „  ƒ  Y} | ƒ  } x3 |  i D]( } | i ƒ  \ } } | | f | | <q) W| Sd  S(   Ns   CategoryDictc           B   s,   t  Z d „  Z d „  Z d „  Z d „  Z RS(   Nc         C   s   t  i |  ƒ t i |  _ d  S(   N(   s   UserDicts   __init__s   selfs   mm_cfgs   ADMIN_CATEGORIESs   keysinorder(   s   self(    (    s    /var/mailman/Mailman/MailList.pys   __init__ˆ  s    c         C   s   |  i Sd  S(   N(   s   selfs   keysinorder(   s   self(    (    s    /var/mailman/Mailman/MailList.pys   keys‹  s    c         C   s<   g  } x+ t i D]  } | i | |  i | f ƒ q W| Sd  S(   N(   s   itemss   mm_cfgs   ADMIN_CATEGORIESs   ks   appends   selfs   data(   s   selfs   itemss   k(    (    s    /var/mailman/Mailman/MailList.pys   items  s
    
 c         C   s6   g  } x% t i D] } | i |  i | ƒ q W| Sd  S(   N(   s   valuess   mm_cfgs   ADMIN_CATEGORIESs   ks   appends   selfs   data(   s   selfs   valuess   k(    (    s    /var/mailman/Mailman/MailList.pys   values’  s
    
 (   s   __name__s
   __module__s   __init__s   keyss   itemss   values(    (    (    s    /var/mailman/Mailman/MailList.pys   CategoryDict‡  s   			(	   s   UserDicts   CategoryDicts
   categoriess   selfs   _guis   guis   GetConfigCategorys   ks   v(   s   selfs   CategoryDicts   guis   vs   ks
   categories(    (    s    /var/mailman/Mailman/MailList.pys   GetConfigCategories†  s    	
 c         C   sT   xI |  i D]> } t | d ƒ o( | i | ƒ } | t j	 o | SqH q
 q
 Wt Sd  S(   Ns   GetConfigSubCategories(   s   selfs   _guis   guis   hasattrs   GetConfigSubCategoriess   categorys   subcats   None(   s   selfs   categorys   subcats   gui(    (    s    /var/mailman/Mailman/MailList.pys   GetConfigSubCategoriesŸ  s    
 c         C   sP   xI |  i D]> } t | d ƒ o( | i |  | | ƒ } | o | SqH q
 q
 Wd  S(   Ns   GetConfigInfo(   s   selfs   _guis   guis   hasattrs   GetConfigInfos   categorys   subcats   value(   s   selfs   categorys   subcats   values   gui(    (    s    /var/mailman/Mailman/MailList.pys   GetConfigInfo¨  s    
 c         C   s  t  i | ƒ o t i | ‚ n | t j o t i } n d | | f } y t  i
 | ƒ Wn" t i j
 o t i | ‚ n Xt  i
 | ƒ | |  _ t i | d d ƒ|  _ |  i i ƒ  |  i | | | ƒ |  i ƒ  | t j o |  i g |  _ n
 | |  _ d  S(   Ns   %s@%ss   createi   (   s   Utilss   list_existss   names   Errorss   MMListAlreadyExistsErrors	   emailhosts   Nones   mm_cfgs   DEFAULT_EMAIL_HOSTs   postingaddrs   ValidateEmails   MMBadEmailErrors   BadListNameErrors   admins   selfs   _internal_names   Sites   get_listpaths
   _full_paths   _MailList__locks   locks   InitVarss   crypted_passwords   CheckValuess   langss   preferred_languages   available_languages(   s   selfs   names   admins   crypted_passwords   langss	   emailhosts   postingaddr(    (    s    /var/mailman/Mailman/MailList.pys   Create³  s$    	
c         C   s¡  t  i i |  i ƒ  d ƒ } | d t i ƒ  t  i ƒ  f } | d } t } y[ t | d ƒ } t i | | d ƒ | i ƒ  t i o t  i | i ƒ  ƒ n | i ƒ  WnF t j
 o: } t d d | ƒ | t j	 o t  i | ƒ n ‚  n Xy t  i | ƒ Wn/ t j
 o# } | i t i j o ‚  q2n Xy t  i | | ƒ Wn/ t j
 o# } | i t i j o ‚  qxn Xt  i | | ƒ t  i i  | ƒ |  _! d  S(   Ns
   config.pcks
   .tmp.%s.%ds   .lasts   wi   s   errors0   Failed config.pck write, retaining old state.
%s("   s   oss   paths   joins   selfs   fullpaths   fnames   sockets   gethostnames   getpids	   fname_tmps
   fname_lasts   Nones   fps   opens   cPickles   dumps   dicts   flushs   mm_cfgs   SYNC_AFTER_WRITEs   fsyncs   filenos   closes   IOErrors   es   syslogs   unlinks   OSErrors   errnos   ENOENTs   links   renames   getmtimes   _MailList__timestamp(   s   selfs   dicts   fps	   fname_tmps   fnames
   fname_lasts   e(    (    s    /var/mailman/Mailman/MailList.pys   __saveÕ  s:     



  c         C   s±   |  i i ƒ  h  } xR |  i i ƒ  D]A \ } } | d d j p t | ƒ t	 j o q# n | | | <q# Wt
 i d ƒ } z |  i | ƒ Wd  t
 i | ƒ |  i ƒ  X|  i ƒ  d  S(   Ni    s   _i   (   s   selfs   _MailList__locks   refreshs   dicts   __dict__s   itemss   keys   values   types
   MethodTypes   oss   umasks   omasks   _MailList__saves   SaveRequestsDbs   CheckHTMLArchiveDir(   s   selfs   values   dicts   keys   omask(    (    s    /var/mailman/Mailman/MailList.pys   Saveý  s     $ c      
   C   sj  | i d ƒ p | i d ƒ o t i } n. | i d ƒ p | i d ƒ o t i } n y@ t i i | ƒ } | |  i j o t t f Sn t | ƒ } Wn9 t j
 o- } | i t i j o ‚  n t | f Sn Xzo y1 | | ƒ } t | ƒ t j o t d f Sn Wn7 t t t t t i t i f j
 o } t | f Sn XWd  | i ƒ  X| |  _ | t f Sd  S(   Ns   .dbs   .db.lasts   .pcks	   .pck.lasts&   Load() expected to return a dictionary(   s   dbfiles   endswiths   marshals   loads   loadfuncs   cPickles   oss   paths   getmtimes   mtimes   selfs   _MailList__timestamps   Nones   opens   fps   EnvironmentErrors   es   errnos   ENOENTs   dicts   types   DictTypes   EOFErrors
   ValueErrors	   TypeErrors   MemoryErrors   PicklingErrors   UnpicklingErrors   close(   s   selfs   dbfiles   fps   es   loadfuncs   dicts   mtime(    (    s    /var/mailman/Mailman/MailList.pys   __load  s2        ( 	c   
      C   sÏ  t  i |  i ƒ  ƒ o t i ‚ n t i i |  i	 ƒ  d ƒ } | d } t i i |  i	 ƒ  d ƒ }	 |	 d } x‹ | | |	 | f D]U } |  i | ƒ \ } } | t j o, | t j	 o t d d | | ƒ qÖ d  Sq Pq Wt d d |  i ƒ  ƒ t i | ‚ | | j p
 | | j oƒ t d d | ƒ t } zM y |  i i ƒ  Wn t i j
 o t } n X|  i | | | |	 | ƒ Wd  | o |  i i ƒ  n Xn |  i i | ƒ | o |  i  | ƒ |  i! ƒ  n d  S(   Ns
   config.pcks   .lasts	   config.dbs   errors   couldn't load config file %s
%ss(   All %s fallbacks were corrupt, giving ups%   fixing corrupt config file, using: %s("   s   Utilss   list_existss   selfs   internal_names   Errorss   MMUnknownListErrors   oss   paths   joins   fullpaths   pfiles   plasts   dfiles   dlasts   files   _MailList__loads   dicts   es   Nones   syslogs   MMCorruptListDatabaseErrors   Trues   unlocks   _MailList__locks   locks   LockFiles   AlreadyLockedErrors   Falses   _MailList__fix_corrupt_pckfiles   __dict__s   updates   check_versions   CheckVersions   CheckValues(
   s   selfs   check_versions   dlasts   es   pfiles   unlocks   dicts   plasts   files   dfile(    (    s    /var/mailman/Mailman/MailList.pys   LoadB  sD    

 		 c         C   s  | | j o¹ y t i | | d ƒ Wn/ t j
 o# } | i t i j o ‚  qW n Xy t i	 | d ƒ Wn/ t j
 o# } | i t i j o ‚  qž n Xt
 i | | ƒ t
 i | | d ƒ nÇ | | j o¹ y t i | | d ƒ Wn/ t j
 o# } | i t i j o ‚  qn Xy t i	 | d ƒ Wn/ t j
 o# } | i t i j o ‚  qdn Xt
 i | | ƒ t
 i | | d ƒ n d  S(   Ns   .corrupts   .safety(   s   files   plasts   oss   renames   pfiles   OSErrors   es   errnos   ENOENTs   removes   shutils   copys   dlasts   dfile(   s   selfs   files   pfiles   plasts   dfiles   dlasts   e(    (    s    /var/mailman/Mailman/MailList.pys   __fix_corrupt_pckfilex  s4        c         C   s²   |  i t i j o d Sn |  i ƒ  d |  _ |  i d d ƒ |  i ƒ  } | o |  i	 ƒ  n z4 d k
 l } | |  | ƒ t i |  _ |  i ƒ  Wd | o |  i ƒ  n Xd S(   s    Auto-update schema if necessary.Ni    s   check_version(   s   Update(   s   selfs   data_versions   mm_cfgs   DATA_FILE_VERSIONs   InitVarss   _MailList__timestamps   Loads   Lockeds	   waslockeds   Locks   versionss   Updates   stored_states   Saves   Unlock(   s   selfs   stored_states	   waslockeds   Update(    (    s    /var/mailman/Mailman/MailList.pys   CheckVersionš  s"     
	 c         C   s{  d t  |  i ƒ d  j o! t i p t i t i |  _ n |  i o |  i d d j o |  i d |  _ n y2 |  i i ƒ  o |  i	 o t
 i |  i ƒ n WnD t i j
 o5 t d d |  i |  i ƒ  ƒ d |  _ d |  _	 n Xg  } x |  i D]t \ } } } } y t i | ƒ Wn5 t i t f j
 o  t d d | |  i ƒ  ƒ qö X| i | | | | f ƒ qö W| |  _ d	 S(
   s+   Normalize selected values to known formats.s    i   iÿÿÿÿs   /s   errors.   Bad reply_to_address "%s" cleared for list: %si    s#   Bad topic pattern "%s" for list: %sN(   s   urlparses   selfs   web_page_urls   mm_cfgs   DEFAULT_URLs   DEFAULT_URL_PATTERNs   DEFAULT_URL_HOSTs   reply_to_addresss   strips   reply_goes_to_lists   Utilss   ValidateEmails   Errorss   EmailAddressErrors   syslogs   internal_names
   goodtopicss   topicss   names   patterns   descs	   emptyflags   res   compiles   errors	   TypeErrors   append(   s   selfs	   emptyflags   names   patterns
   goodtopicss   desc(    (    s    /var/mailman/Mailman/MailList.pys   CheckValues±  s.     !		
 	c         C   s=  | i } t i | ƒ |  i ƒ  } |  i ƒ  | _	 |  i
 t i | ƒ } d |  i d d d ƒ| f } |  i }
 | t i d h  d | <d |
 <d |  i <d	 | <d
 | <d | <d |  i ƒ  <d |  ƒ7} t i o t d ƒ }	 |  i | ƒ } n d | }	 | } t i | | |	 | d |  i ƒ} | i  |  ƒ d S(   sÄ   Invite a new member to the list.

        This is done by creating a subscription pending for the user, and then
        crafting a message to the member informing them of the invitation.
        s   %s/%ss   confirms   absolutei   s
   invite.txts   emails   listnames   hostnames
   confirmurls   requestaddrs   cookies	   listowners   mlists;   You have been invited to join the %(listname)s mailing lists   confirm s   langN(!   s   userdescs   addresss   invitees   Utilss   ValidateEmails   selfs   GetRequestEmails   requestaddrs   internal_names
   invitations   pend_news   Pendings   SUBSCRIPTIONs   cookies   GetScriptURLs
   confirmurls	   real_names   listnames   texts   maketexts	   host_names   GetOwnerEmails   mm_cfgs   VERP_CONFIRMATIONSs   _s   subjs   GetConfirmEmails   senders   Messages   UserNotifications   preferred_languages   msgs   send(   s   selfs   userdescs   texts   requestaddrs   senders
   confirmurls   invitees   cookies   msgs   subjs   listname(    (    s    /var/mailman/Mailman/MailList.pys   InviteNewMemberÖ  s&     		K

c         C   s  t  i | i ƒ } t | d d ƒ } t | d |  i ƒ } t | d t
 ƒ } t | d t  i ƒ  ƒ } | t
 j o |  i o
 d } qŽ d } n t  i | ƒ |  i | ƒ o t i | ‚ n | i ƒ  |  i ƒ  i ƒ  j o t i ‚ n d } xŠ |  i D] } | i d ƒ oE y( t i | | t i ƒ o d } Pn Wqvt i j
 o qvXq÷ | i ƒ  | i ƒ  j o d } Pq÷ q÷ W| o# t d	 d
 | | ƒ t i | ‚ n | o |  i  o t i! ‚ n! | o |  i o t i" ‚ n | | _ | | _# | | _ | | _$ | | _ |  i% d j o |  i& | d | p d ƒnÒ|  i% d j p |  i% d j o†|  i( t) i* | ƒ } | t
 j o d } } n d | } t- d ƒ } |  i. | ƒ } |  i0 }	 d |  i2 d d d ƒ| f } t  i4 d h  d | <d |  i ƒ  <d |	 <d | <d |  i5 ƒ  <d | <d |  i6 ƒ  <d | <d | d |  ƒ} t8 i9 | |  i5 ƒ  d | d | ƒ} | d =d | | d  <|  i5 ƒ  | d! <| i; |  ƒ t< | | f ƒ }
 t d" d# |  i> ƒ  |
 | ƒ t i? ‚ n, |  i@ | | | | | ƒ t iA t- d$ ƒ ‚ d% S(&   sÒ  Front end to member subscription.

        This method enforces subscription policy, validates values, sends
        notifications, and any other grunt work involved in subscribing a
        user.  It eventually calls ApprovedAddMember() to do the actual work
        of subscribing the user.

        userdesc is an instance with the following public attributes:

            address  -- the unvalidated email address of the member
            fullname -- the member's full name (i.e. John Smith)
            digest   -- a flag indicating whether the user wants digests or not
            language -- the requested default language for the user
            password -- the user's password

        Other attributes may be defined later.  Only address is required; the
        others all have defaults (fullname='', digests=0, language=list's
        preferred language, password=generated).

        remote is a string which describes where this add request came from.
        s   fullnames    s   languages   digests   passwordi    i   s   ^s   vettes%   banned subscription: %s (matched: %s)s   whencei   s    s    from %(remote)ss   %s/%ss   confirms   absolutes
   verify.txts   emails   listaddrs   listnames   cookies   requestaddrs   remotes	   listadmins
   confirmurls   langs   mlists   texts   subjects   confirm s   Subjects   Reply-Tos	   subscribes   %s: pending %s %ss8   subscriptions to %(realname)s require moderator approvalN(B   s   Utilss   LCDomains   userdescs   addresss   emails   getattrs   names   selfs   preferred_languages   langs   Nones   digests   MakeRandomPasswords   passwords   nondigestables   ValidateEmails   isMembers   Errorss   MMAlreadyAMembers   lowers   GetListEmails   MMBadEmailErrors   bans   ban_lists   patterns
   startswiths   res   searchs
   IGNORECASEs   errors   syslogs   MembershipIsBanneds
   digestables   MMCantDigestErrors   MMMustDigestErrors   fullnames   languages   subscribe_policys   ApprovedAddMembers   remotes   pend_news   Pendings   SUBSCRIPTIONs   cookies   bys   _s   GetMemberAdminEmails	   recipients	   real_names   realnames   GetScriptURLs
   confirmurls   maketexts   GetRequestEmails   GetOwnerEmails   texts   Messages   UserNotifications   msgs   sends
   formataddrs   whos   internal_names   MMSubscribeNeedsConfirmations   HoldSubscriptions   MMNeedApproval(   s   selfs   userdescs   remotes
   confirmurls   texts   patterns   digests   msgs   emails   realnames   whos   cookies   passwords	   recipients   bys   langs   names   ban(    (    s    /var/mailman/Mailman/MailList.pys	   AddMember   sˆ      



 				
					 
		]	c      
   C   s˜  | t j o |  i } n | t j o |  i } n t i | i	 ƒ }
 t | d d ƒ } t | d |  i ƒ } t | d t ƒ } t | d t i ƒ  ƒ } | t j o |  i o
 d } qÂ d } n t i |
 ƒ |  i |
 ƒ o t i |
 ‚ n |  i |
 d | d | d | d | ƒ|  i |
 t i d |  i ƒ |  i |
 t i |  i ƒ | o
 d	 } n d } t d
 d |  i  ƒ  | t! |
 | f ƒ | ƒ | o# |  i# |
 |  i$ |
 ƒ | | ƒ n | o× |  i } t& i' ƒ  } t& i) | ƒ z |  i* } t, d ƒ }	 Wd t& i. | ƒ Xt/ | t0 ƒ o | i1 t i2 | ƒ d ƒ } n t i3 d h  d | <d t! | |
 f ƒ <d |  ƒ} t4 i5 |  |	 | ƒ } | i7 |  ƒ n d S(   s  Add a member right now.

        The member's subscription must be approved by what ever policy the
        list enforces.

        userdesc is as above in AddMember().

        ack is a flag that specifies whether the user should get an
        acknowledgement of their being subscribed.  Default is to use the
        list's default flag value.

        admin_notif is a flag that specifies whether the list owner should get
        an acknowledgement of this subscription.  Default is to use the list's
        default flag value.
        s   fullnames    s   languages   digests   passwordi    i   s   realnames	    (digest)s	   subscribes   %s: new%s %s, %ss&   %(realname)s subscription notificationNs   replaces   adminsubscribeack.txts   listnames   members   mlist(8   s   acks   Nones   selfs   send_welcome_msgs   admin_notifs   admin_notify_mchangess   Utilss   LCDomains   userdescs   addresss   emails   getattrs   names   preferred_languages   langs   digests   MakeRandomPasswords   passwords   nondigestables   ValidateEmails   isMembers   Errorss   MMAlreadyAMembers   addNewMembers   setMemberOptions   mm_cfgs   DisableMimes   mime_is_default_digests   Moderates   default_member_moderations   kinds   syslogs   internal_names
   formataddrs   whences   SendSubscribeAcks   getMemberPasswords   texts   i18ns   get_translations   otranss   set_languages	   real_names   realnames   _s   subjects   set_translations
   isinstances   UnicodeTypes   encodes
   GetCharSets   maketexts   Messages   OwnerNotifications   msgs   send(   s   selfs   userdescs   acks   admin_notifs   texts   whences   otranss   digests   msgs   subjects   emails   realnames   passwords   langs   kinds   name(    (    s    /var/mailman/Mailman/MailList.pys   ApprovedAddMember  s`      




		 	!c         C   s_   t  | ƒ \ } } |  i d j o |  i | | | | ƒ n  |  i
 | ƒ t i t d ƒ ‚ d  S(   Ni    s*   unsubscriptions require moderator approval(   s	   parseaddrs   names   realnames   emails   selfs   unsubscribe_policys   ApprovedDeleteMembers   whences   admin_notifs   useracks   HoldUnsubscriptions   Errorss   MMNeedApprovals   _(   s   selfs   names   whences   admin_notifs   useracks   emails   realname(    (    s    /var/mailman/Mailman/MailList.pys   DeleteMemberË  s
    c         C   s'  | t j o |  i } n | t j o |  i } n t | ƒ \ }	 } |  i
 | ƒ } |  i | ƒ | o |  i | | ƒ n | oh |  i } t d ƒ }
 t i d h  d | <d |  i <d |  ƒ} t i |  |
 | ƒ } | i |  ƒ n | o d | } n d } t d d	 |  i ƒ  | | ƒ d  S(
   Ns%   %(realname)s unsubscribe notifications   adminunsubscribeack.txts   members   listnames   mlists   ; %ss    s	   subscribes   %s: deleted %s%s(   s   useracks   Nones   selfs   send_goodbye_msgs   admin_notifs   admin_notify_mchangess	   parseaddrs   names   fullnames	   emailaddrs   getMemberLanguages   userlangs   removeMembers   SendUnsubscribeAcks	   real_names   realnames   _s   subjects   Utilss   maketexts   texts   Messages   OwnerNotifications   msgs   sends   whences   syslogs   internal_name(   s   selfs   names   whences   admin_notifs   useracks   userlangs   texts	   emailaddrs   msgs   fullnames   subjects   realname(    (    s    /var/mailman/Mailman/MailList.pys   ApprovedDeleteMemberÔ  s,    			c         C   sÏ   |  i | | ƒ | o d  Sn x¨ t i ƒ  D]š } | |  i ƒ  j o q- n t	 | d d ƒ} | i |  i j o q- n | i | ƒ o q- n | i ƒ  z | i | | ƒ | i ƒ  Wd  | i ƒ  Xq- Wd  S(   Ns   locki    (   s   selfs   setMemberNames   addrs   names   globallys   Utilss
   list_namess   listnames   internal_names   MailLists   mlists	   host_names   isMembers   Locks   Saves   Unlock(   s   selfs   addrs   names   globallys   listnames   mlist(    (    s    /var/mailman/Mailman/MailList.pys   ChangeMemberNameô  s$     
 c   
      C   s˜  t  i | ƒ } t  i | ƒ | o | | j o |  i | ƒ o t i	 ‚ n | |  i
 ƒ  i ƒ  j o t i ‚ n |  i t i | | | ƒ } d |  i d d d ƒ| f } |  i } |  i | ƒ } t  i d h  d | <d |  i
 ƒ  <d | <d	 | <d
 |  i ƒ  <d d <d |  i ƒ  <d | <d | d |  ƒ} t i | |  i ƒ  d | d | ƒ}	 |	 d =d | |	 d <|  i ƒ  |	 d <|	 i |  ƒ d  S(   Ns   %s/%ss   confirms   absolutei   s
   verify.txts   emails   listaddrs   listnames   cookies   requestaddrs   remotes    s	   listadmins
   confirmurls   langs   mlists   texts   subjects   confirm s   Subjects   Reply-To(   s   Utilss   LCDomains   newaddrs   ValidateEmails   globallys   oldaddrs   selfs   isMembers   Errorss   MMAlreadyAMembers   GetListEmails   lowers   MMBadEmailErrors   pend_news   Pendings   CHANGE_OF_ADDRESSs   cookies   GetScriptURLs
   confirmurls	   real_names   realnames   getMemberLanguages   langs   maketexts   GetRequestEmails   GetOwnerEmails   texts   Messages   UserNotifications   msgs   send(
   s   selfs   oldaddrs   newaddrs   globallys   langs
   confirmurls   realnames   texts   cookies   msg(    (    s    /var/mailman/Mailman/MailList.pys   ChangeMemberAddress  s(    %		]c         C   s  |  i | ƒ o |  i | ƒ n |  i | | ƒ | o d  Sn xÉ t i ƒ  D]» } | |  i
 ƒ  j o qN n t | d d ƒ} | i |  i j o qN n | i | ƒ o qN n | i ƒ  z? | i | ƒ o | i | ƒ n | i | | ƒ | i ƒ  Wd  | i ƒ  XqN Wd  S(   Ns   locki    (   s   selfs   isMembers   newaddrs   removeMembers   oldaddrs   changeMemberAddresss   globallys   Utilss
   list_namess   listnames   internal_names   MailLists   mlists	   host_names   Locks   Saves   Unlock(   s   selfs   oldaddrs   newaddrs   globallys   listnames   mlist(    (    s    /var/mailman/Mailman/MailList.pys   ApprovedChangeMemberAddress8  s,     
 c         C   sÂ  |  i | ƒ } | t j o t i d | ‚ n y | d } | d } Wn& t	 j
 o t i d | f ‚ n X| t
 i j oSd } y_ | d } t | t ƒ o | | 7} d } n | i } | i } | i } | i } | i } Wn& t	 j
 o t i d | f ‚ n Xt | d t ƒ } | o4 | |  i ƒ  j o |  i | | ƒ t i ‚ qªnO |  i d	 d
 f j o8 |  i | | | | | ƒ |  i  } t i" t# d ƒ ‚ n |  i$ | d | ƒ| | | | | f Snë| t
 i% j oN | d } t | t& i& ƒ o
 d } n d } |  i' | d | ƒ| | f Sn| t
 i( j o3 | \ } } } |  i, | | | ƒ | | | f SnJ| t
 i- j oþ| d } t }
 t | t& i& ƒ o.| i0 d | i0 d ƒ ƒ }
 |
 oy& t1 t2 i3 i4 | d d ƒ ƒ d } Wn t6 j
 o t } n X| oº t7 | i8 ƒ  ƒ }	 x¥ t: o™ |	 i; ƒ  } | o Pn | i= ƒ  o q)n | i> d ƒ } | d j oJ | |  i@ ƒ  d j p | |  i@ ƒ  d j o | | d i= ƒ  }
 qÄn Pq)WqÒqÖn |
 t j	 oR |  iA tB iC tB iD g |
 ƒ tB iE j o tB iF } q>|  iH | | ƒ t iI ‚ n
 tB iJ } y |  iK | | ƒ Wn# tL j
 o tM d d | ƒ n X| f Sn< | t
 iN j o+ | d } |  iP | tQ iR ƒ | | f Sn d  S(   Ns   No cookie record for %si    i   s   op-less data %ss   via email confirmations   via web confirmations   bad subscr data %ss
   invitationi   i   s8   subscriptions to %(name)s require administrator approvals   whences   email confirmations   web confirmations   Approveds   Approves   texts   plains   :s   approves   approveds   errors"   Could not process HELD_MESSAGE: %s(S   s   selfs   pend_confirms   cookies   recs   Nones   Errorss   MMBadConfirmations   ops   datas
   ValueErrors   Pendings   SUBSCRIPTIONs   whences   userdescs
   isinstances   contexts   UserDescs   addresss   addrs   fullnames   passwords   digests   languages   langs   getattrs   Falses
   invitations   internal_names   SendHostileSubscriptionNotices   HostileSubscriptionErrors   subscribe_policys   HoldSubscriptions	   real_names   names   MMNeedApprovals   _s   ApprovedAddMembers   UNSUBSCRIPTIONs   Messages   ApprovedDeleteMembers   CHANGE_OF_ADDRESSs   oldaddrs   newaddrs   globallys   ApprovedChangeMemberAddresss   HELD_MESSAGEs   ids   approveds   gets   lists   emails	   Iteratorss   typed_subpart_iterators   subparts
   IndexErrors   StringIOs   get_payloads   ss   Trues   readlines   lines   strips   finds   is   lowers   Authenticates   mm_cfgs   AuthListAdmins   AuthListModerators   UnAuthorizeds   APPROVEs   actions   pend_repends   MMBadPasswordErrors   DISCARDs   HandleRequests   KeyErrors   syslogs	   RE_ENABLEs   members   setDeliveryStatuss   MemberAdaptors   ENABLED(   s   selfs   cookies   contexts   globallys   userdescs   ids   digests   addrs   subparts   ss   approveds   members   recs   newaddrs   oldaddrs   lines   passwords   datas   langs   names   is   whences
   invitations   actions   fullnames   op(    (    s    /var/mailman/Mailman/MailList.pys   ProcessConfirmation\  sª    



					


& .	
c   
      C   sb  | t j o |  i | ƒ } n |  i t i | ƒ } d |  i	 d d d ƒ| f } |  i }	 | t j	 o d | } t d ƒ } n d } d } t i d h  d	 | <d
 |  i ƒ  <d |	 <d | <d |  i ƒ  <d | <d |  i ƒ  <d | <d | d |  ƒ} t i | |  i ƒ  d | d | ƒ} | d =d | | d <|  i ƒ  | d <| i |  ƒ d  S(   Ns   %s/%ss   confirms   absolutei   s    s    from %(remote)ss    s	   unsub.txts   emails   listaddrs   listnames   cookies   requestaddrs   remotes	   listadmins
   confirmurls   langs   mlists   texts   subjects   confirm s   Subjects   Reply-To(   s   langs   Nones   selfs   getMemberLanguages   addrs   pend_news   Pendings   UNSUBSCRIPTIONs   cookies   GetScriptURLs
   confirmurls	   real_names   realnames   remotes   bys   _s   Utilss   maketexts   GetListEmails   GetRequestEmails   GetOwnerEmails   texts   Messages   UserNotifications   msgs   send(
   s   selfs   addrs   langs   remotes
   confirmurls   texts   cookies   msgs   bys   realname(    (    s    /var/mailman/Mailman/MailList.pys   ConfirmUnsubscriptionØ  s&    	
	]c         C   sƒ  d |  i ƒ  |  i f } g  }	 g  } x9 d d d d f D]% } | i t | i
 | g  ƒ ƒ ƒ q8 Wx‚ | D]z \ } } | t j o qh n | i ƒ  } | i d ƒ d }
 |
 |  i ƒ  j p
 | | j o d Sn |	 i | |
 f ƒ qh Wd	 „  } x‰ |	 D] \ } }
 xr |  i i d
 ƒ D]^ } | i ƒ  } | o qn d | j o | | |
 ƒ o d Sn | | | ƒ o d SqqWqö Wd Sd S(   sW   True if list name or any acceptable_alias is included among the
        to or cc addrs.s   %s@%ss   tos   ccs	   resent-tos	   resent-ccs   @i    i   c         C   s`   y t  i |  | ƒ o d Sn Wn: t  i j
 o+ t  i t  i |  ƒ | ƒ o d Sq\ n Xd  S(   Ni   (   s   res   matchs   patterns   addrs   errors   escape(   s   patterns   addr(    (    s    /var/mailman/Mailman/MailList.pys   domatch  s    s   
N(   s   selfs   internal_names	   host_names   listfullnames   recipss   tos   headers   extends   getaddressess   msgs   get_alls   fullnames   addrs   Nones   lowers   splits	   localparts   appends   domatchs   acceptable_aliasess   aliass   strips   stripped(   s   selfs   msgs   domatchs   addrs   headers   strippeds   tos   aliass   listfullnames   recipss	   localparts   fullname(    (    s    /var/mailman/Mailman/MailList.pys   HasExplicitDestý  s:      #  	  c         C   s  g  } xý |  i i d ƒ D]é } | i ƒ  } | p | d d j o q n | i d ƒ } | d j  o t d d |  i	 | ƒ q | |  } | | d i ƒ  } y t i | t i ƒ } Wn1 t i j
 o" } t d d |  i	 | | ƒ q X| i | | | f ƒ q W| Sd	 S(
   s:   Return a list of triples [(field name, regex, line), ...].s   
i    s   #s   :s   configs&   bad bounce_matching_header line: %s
%si   s=   bad regexp in bounce_matching_header line: %s

%s (cause: %s)N(   s   alls   selfs   bounce_matching_headerss   splits   lines   strips   finds   is   syslogs	   real_names   headers   lstrips   values   res   compiles
   IGNORECASEs   cres   errors   es   append(   s   selfs   alls   es   headers   is   values   cres   line(    (    s    /var/mailman/Mailman/MailList.pys   parse_matching_header_opt8  s(      	
c         C   s]   xR |  i ƒ  D]D \ } } } x2 | i | g  ƒ D] } | i | ƒ o | Sq/ q/ Wq Wd Sd S(   sÇ   Return true if named header field matches a regexp in the
        bounce_matching_header list variable.

        Returns constraint line which matches or empty string for no
        matches.
        i    N(	   s   selfs   parse_matching_header_opts   headers   cres   lines   msgs   get_alls   values   search(   s   selfs   msgs   values   headers   cres   line(    (    s    /var/mailman/Mailman/MailList.pys   hasMatchingHeaderX  s       c         C   s{  t  i d j o d Sn t i ƒ  d  } |  i i | ƒ } | t
 j p | d | j o | d f |  i | <d Sn | \ } } | d j  o t d d | ƒ d Sn | t  i j o¨ t d d | ƒ | d f |  i | <t i d h  d	 | <d
 d |  i |  i f <d | <d |  i ƒ  <ƒ } t i | |  i ƒ  t d ƒ | ƒ } | i |  ƒ d Sn | | d f |  i | <d Sd S(   s  Return true if Mailman should auto-respond to this sender.

        This is only consulted for messages sent to the -request address, or
        for posting hold notifications, and serves only as a safety value for
        mail loops with email 'bots.
        i    i   i   s   vettes,   -request/hold autoresponse discarded for: %ss,   -request/hold autoresponse limit hit for: %siÿÿÿÿs   nomoretoday.txts   senders   listnames   %s@%ss   nums
   owneremails(   Last autoresponse notification for todayN(   s   mm_cfgs   MAX_AUTORESPONSES_PER_DAYs   times	   localtimes   todays   selfs   hold_and_cmd_autoresponsess   gets   senders   infos   Nones   dates   counts   syslogs   Utilss   maketexts	   real_names	   host_names   GetOwnerEmails   texts   Messages   UserNotifications   _s   msgs   send(   s   selfs   senders   infos   counts   texts   dates   todays   msg(    (    s    /var/mailman/Mailman/MailList.pys   autorespondToSendere  s4     			C		c         C   sm   |  i } t i | j o | i t i ƒ n g  i } | D]' } t i i	 | ƒ o | | ƒ q; q; ~ Sd  S(   N(
   s   selfs   available_languagess   langss   mm_cfgs   DEFAULT_SERVER_LANGUAGEs   appends   _[1]s   langs   LC_DESCRIPTIONSs   has_key(   s   selfs   _[1]s   langs   langs(    (    s    /var/mailman/Mailman/MailList.pys   GetAvailableLanguages–  s    	(1   s   __name__s
   __module__s   Nones   __init__s   __getattr__s   __repr__s   Locks   Unlocks   Lockeds   internal_names   fullpaths   getListAddresss   GetBouncesEmails   GetOwnerEmails   GetRequestEmails   GetConfirmEmails   GetListEmails   GetMemberAdminEmails   GetScriptURLs   GetOptionsURLs   InitTempVarss   InitVarss   GetConfigCategoriess   GetConfigSubCategoriess   GetConfigInfos   Creates   _MailList__saves   Saves   _MailList__loads   Trues   Loads   _MailList__fix_corrupt_pckfiles   CheckVersions   CheckValuess   InviteNewMembers	   AddMembers   ApprovedAddMembers   DeleteMembers   ApprovedDeleteMembers   ChangeMemberNames   ChangeMemberAddresss   ApprovedChangeMemberAddresss   ProcessConfirmations   ConfirmUnsubscriptions   HasExplicitDests   parse_matching_header_opts   hasMatchingHeaders   autorespondToSenders   GetAvailableLanguages(    (    (    s    /var/mailman/Mailman/MailList.pys   MailListU   sZ   &		
										
	|			"	(		/6	"		%*J	 		0	$|%	;	 		1(A   s   __doc__s   syss   oss   times   marshals   errnos   res   shutils   sockets   urllibs   cPickles	   cStringIOs   StringIOs   UserDicts   urlparses   typess   email.Iteratorss   emails   email.Utilss   getaddressess
   formataddrs	   parseaddrs   Mailmans   mm_cfgs   Utilss   Errorss   LockFiles   Mailman.UserDescs   UserDescs   Mailman.Archivers   Archivers   Mailman.Autoresponders   Autoresponders   Mailman.Bouncers   Bouncers   Mailman.Deliverers	   Deliverers   Mailman.Digesters   Digesters   Mailman.GatewayManagers   GatewayManagers   Mailman.HTMLFormatters   HTMLFormatters   Mailman.ListAdmins	   ListAdmins   Mailman.SecurityManagers   SecurityManagers   Mailman.TopicMgrs   TopicMgrs   Pendings   Guis   MemberAdaptors   Mailman.OldStyleMembershipss   OldStyleMembershipss   Messages   Sites   i18ns   Mailman.Logging.Syslogs   syslogs   _s   EMPTYSTRINGs   Trues   Falses	   NameErrors   MailList(-   s   Errorss   SecurityManagers   TopicMgrs   syslogs   Archivers	   Deliverers   Autoresponders   HTMLFormatters   LockFiles   Digesters
   formataddrs   shutils   GatewayManagers   errnos   MailLists   urllibs   res   Pendings   Trues   emails   cPickles   getaddressess   UserDicts   Guis   Bouncers   syss   UserDescs   mm_cfgs   i18ns   _s   EMPTYSTRINGs	   parseaddrs   Falses   sockets   StringIOs	   ListAdmins   Utilss   Sites   OldStyleMembershipss   urlparses   times   MemberAdaptors   Messages   oss   marshal(    (    s    /var/mailman/Mailman/MailList.pys   ?   s^   												