³ò
®µGc           @   s¼  d  Z  d d d d d d d d d	 d
 d g Z d d k Z d d k Z d d k Z d d k Z d d k Td d k Td d k Td d k	 Td d k
 Td e e f d „  ƒ  YZ d e e f d „  ƒ  YZ d e f d „  ƒ  YZ d e e f d „  ƒ  YZ d e e f d „  ƒ  YZ d e e f d „  ƒ  YZ d e e f d „  ƒ  YZ d e e f d „  ƒ  YZ d e e f d „  ƒ  YZ d	 e e f d „  ƒ  YZ d
 e e f d „  ƒ  YZ d e e f d „  ƒ  YZ d S(   s3  Classes implementing retrievers (message sources getmail can retrieve mail
from).

Currently implemented:

  SimplePOP3Retriever
  SimplePOP3SSLRetriever
  BrokenUIDLPOP3Retriever
  BrokenUIDLPOP3SSLRetriever
  MultidropPOP3Retriever
  MultidropPOP3SSLRetriever
  MultidropSDPSRetriever
  SimpleIMAPRetriever -- IMAP, as a protocol, is a FPOS, and it shows.
    The Python standard library module imaplib leaves much up to
    the user because of this.
  SimpleIMAPSSLRetriever - the above, for IMAP-over-SSL.
  MultidropIMAPRetriever
  MultidropIMAPSSLRetriever
t   SimplePOP3Retrievert   SimplePOP3SSLRetrievert   BrokenUIDLPOP3Retrievert   BrokenUIDLPOP3SSLRetrievert   MultidropPOP3Retrievert   MultidropPOP3SSLRetrievert   MultidropSDPSRetrievert   SimpleIMAPRetrievert   SimpleIMAPSSLRetrievert   MultidropIMAPRetrievert   MultidropIMAPSSLRetrieveriÿÿÿÿN(   t   *c           B   sõ   e  Z d  Z e d d d e ƒ e d d d e d d ƒ e d d d e d d ƒ e d d	 ƒ e d d
 d e d d ƒ e d d ƒ e d d d e d d ƒ e
 d d d e d e ƒ e
 d d d e d e ƒ f	 Z d Z d Z e ƒ  Z d „  Z d „  Z RS(   s4   Retriever class for single-user POP3 mailboxes.
    t   namet   configparsert   requiredt
   getmaildirt   defaults   ~/.getmail/t   timeouti´   t   servert   portin   t   usernamet   passwordt   use_apopt   delete_dup_msgidst   POP3c         C   sK   |  i  i ƒ  d |  i i d d ƒ |  i i d d ƒ |  i i d d ƒ f S(   Ns   SimplePOP3Retriever:%s@%s:%sR   R   R   (   t   logt   tracet   conft   get(   t   self(    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyt   __str__G   s
    c         C   s2   |  i  i ƒ  |  i  i d |  i ƒ  t i ƒ d  S(   Ns   SimplePOP3Retriever(%s)(   R   R   t   infot   _confstringt   ost   linesep(   R   (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyt   showconfO   s    N(   t   __name__t
   __module__t   __doc__t   ConfInstancet   Falset   ConfDirectoryt   ConfIntt
   ConfStringt   ConfPasswordt   Nonet   ConfBoolt
   _confitemst   received_fromt   received_witht   localhostnamet   received_byR   R#   (    (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR    4   s   		c           B   s%  e  Z d  Z e d d d e ƒ e d d d e d d ƒ e d d d e d d ƒ e d d	 ƒ e d d
 d e d e ƒ e d d ƒ e	 d d d e d d ƒ e d d d e d e ƒ e d d d e d e ƒ e d d d e d d ƒ e d d d e d d ƒ f Z d Z d Z e ƒ  Z d „  Z d „  Z RS(   s=   Retriever class for single-user POP3-over-SSL mailboxes.
    R   R   R   R   R   s   ~/.getmail/R   i´   R   R   R   R   R   R   t   keyfilet   certfiles   POP3-SSLc         C   sK   |  i  i ƒ  d |  i i d d ƒ |  i i d d ƒ |  i i d d ƒ f S(   Ns   SimplePOP3SSLRetriever:%s@%s:%sR   R   R   (   R   R   R   R   (   R   (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR   j   s
    c         C   s2   |  i  i ƒ  |  i  i d |  i ƒ  t i ƒ d  S(   Ns   SimplePOP3SSLRetriever(%s)(   R   R   R   R    R!   R"   (   R   (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR#   r   s    N(   R$   R%   R&   R'   R(   R)   R*   R+   t   POP3_ssl_portR,   R-   R.   t   ConfFileR/   R0   R1   R2   R3   R   R#   (    (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR   U   s"   		t   BrokenUIDLPOP3RetrieverBasec           B   s8   e  Z d  Z d Z e ƒ  Z d „  Z d „  Z d „  Z	 RS(   s•  Retriever base class for single-user POP3 mailboxes on servers that do 
    not properly assign unique IDs to messages.  Since with these broken servers 
    we cannot rely on UIDL, we have to use message numbers, which are unique 
    within a POP3 session, but which change across sessions.  This class 
    therefore can not be used to leave old mail on the server and download only 
    new mail.
    c         C   s   |  i  i ƒ  d S(   s|   Force list of old messages to be empty by making this a no-op, so
        duplicated IDs are always treated as new messages.N(   R   R   (   R   (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyt   _read_oldmailfileƒ   s    c         K   s   |  i  i ƒ  d S(   s'   Short-circuit writing the oldmail file.N(   R   R   (   R   t   kwargs(    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyt   write_oldmailfileˆ   s    c         C   sÅ   |  i  i ƒ  y€ |  i i ƒ  \ } } } xa | D]Y } t | i ƒ  d ƒ } t | i ƒ  d ƒ } | |  i | <| |  i | <| |  i | <q/ WWn( t	 i
 j
 o } t d | ƒ ‚ n Xt |  _ d S(   s9   Don't rely on UIDL; instead, use just the message number.i    i   s   POP error (%s)N(   R   R   t   connt   listt   intt   splitt   msgnum_by_msgidt   msgid_by_msgnumt   msgsizest   poplibt   error_protot   getmailOperationErrort   Truet
   gotmsglist(   R   t   responset   msglistt   octetst   linet   msgnumt   msgsizet   o(    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyt   _getmsglistŒ   s     N(
   R$   R%   R&   R-   R0   R2   R3   R9   R;   RO   (    (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR8   x   s   			c           B   sÎ   e  Z d  Z e d d d e ƒ e d d d e d d ƒ e d d d e d d ƒ e d d	 ƒ e d d
 d e d d ƒ e d d ƒ e d d d e d d ƒ e
 d d d e d e ƒ f Z d Z d „  Z d „  Z RS(   s)   For broken POP3 servers without SSL.
    R   R   R   R   R   s   ~/.getmail/R   i´   R   R   in   R   R   R   R   c         C   sK   |  i  i ƒ  d |  i i d d ƒ |  i i d d ƒ |  i i d d ƒ f S(   Ns    BrokenUIDLPOP3Retriever:%s@%s:%sR   R   R   (   R   R   R   R   (   R   (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR   ¬   s
    c         C   s2   |  i  i ƒ  |  i  i d |  i ƒ  t i ƒ d  S(   Ns   BrokenUIDLPOP3Retriever(%s)(   R   R   R   R    R!   R"   (   R   (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR#   ´   s    N(   R$   R%   R&   R'   R(   R)   R*   R+   R,   R-   R.   R/   R1   R   R#   (    (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR   œ   s   	c           B   sþ   e  Z d  Z e d d d e ƒ e d d d e d d ƒ e d d d e d d ƒ e d d	 ƒ e d d
 d e d e ƒ e d d ƒ e	 d d d e d d ƒ e d d d e d e ƒ e d d d e d d ƒ e d d d e d d ƒ f
 Z d Z d „  Z d „  Z RS(   s&   For broken POP3 servers with SSL.
    R   R   R   R   R   s   ~/.getmail/R   i´   R   R   R   R   R   R4   R5   s   POP3-SSLc         C   sK   |  i  i ƒ  d |  i i d d ƒ |  i i d d ƒ |  i i d d ƒ f S(   Ns#   BrokenUIDLPOP3SSLRetriever:%s@%s:%sR   R   R   (   R   R   R   R   (   R   (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR   Ì   s
    c         C   s2   |  i  i ƒ  |  i  i d |  i ƒ  t i ƒ d  S(   Ns   BrokenUIDLPOP3SSLRetriever(%s)(   R   R   R   R    R!   R"   (   R   (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR#   Ô   s    N(   R$   R%   R&   R'   R(   R)   R*   R+   R6   R,   R-   R.   R7   R/   R1   R   R#   (    (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR   º   s   	c           B   sé   e  Z d  Z e d d d e ƒ e d d d e d d ƒ e d d d e d d ƒ e d d	 ƒ e d d
 d e d d ƒ e d d ƒ e d d d e d d ƒ e
 d d d e d e ƒ e d d ƒ f	 Z d Z d Z e ƒ  Z d „  Z d „  Z RS(   s3   Retriever class for multi-drop POP3 mailboxes.
    R   R   R   R   R   s   ~/.getmail/R   i´   R   R   in   R   R   R   t   envelope_recipientR   c         C   sK   |  i  i ƒ  d |  i i d d ƒ |  i i d d ƒ |  i i d d ƒ f S(   Ns   MultidropPOP3Retriever:%s@%s:%sR   R   R   (   R   R   R   R   (   R   (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR   í   s
    c         C   s2   |  i  i ƒ  |  i  i d |  i ƒ  t i ƒ d  S(   Ns   MultidropPOP3Retriever(%s)(   R   R   R   R    R!   R"   (   R   (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR#   õ   s    N(   R$   R%   R&   R'   R(   R)   R*   R+   R,   R-   R.   R/   R0   R1   R2   R3   R   R#   (    (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR   Ú   s   		c           B   s  e  Z d  Z e d d d e ƒ e d d d e d d ƒ e d d d e d d ƒ e d d	 ƒ e d d
 d e d e ƒ e d d ƒ e	 d d d e d d ƒ e d d d e d e ƒ e d d ƒ e d d d e d d ƒ e d d d e d d ƒ f Z d Z d Z e ƒ  Z d „  Z d „  Z RS(   s<   Retriever class for multi-drop POP3-over-SSL mailboxes.
    R   R   R   R   R   s   ~/.getmail/R   i´   R   R   R   R   R   RP   R4   R5   s   POP3-SSLc         C   sK   |  i  i ƒ  d |  i i d d ƒ |  i i d d ƒ |  i i d d ƒ f S(   Ns"   MultidropPOP3SSLRetriever:%s@%s:%sR   R   R   (   R   R   R   R   (   R   (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR     s
    c         C   s2   |  i  i ƒ  |  i  i d |  i ƒ  t i ƒ d  S(   Ns   MultidropPOP3SSLRetriever(%s)(   R   R   R   R    R!   R"   (   R   (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR#     s    N(   R$   R%   R&   R'   R(   R)   R*   R+   R6   R,   R-   R.   R7   R/   R0   R1   R2   R3   R   R#   (    (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR   û   s"   		c           B   sæ   e  Z d  Z e d d d e ƒ e d d d e d d ƒ e d d d e d d ƒ e d d	 ƒ e d d
 d e d d ƒ e d d ƒ e d d d e d d ƒ e
 d d d e d e ƒ f Z d Z d Z e ƒ  Z d „  Z d „  Z d „  Z RS(   s„  Retriever class for multi-drop SDPS (demon.co.uk) mailboxes.

    Extend POP3 class to include support for Demon's protocol extensions, known
    as SDPS.  A non-standard command (*ENV) is used to retrieve the message
    envelope.  See http://www.demon.net/helpdesk/products/mail/sdps-tech.shtml
    for details.

    Support originally requested by Paul Clifford for getmail v.2/3.
    R   R   R   R   R   s   ~/.getmail/R   i´   R   R   in   R   R   R   t   SDPSc         C   sK   |  i  i ƒ  d |  i i d d ƒ |  i i d d ƒ |  i i d d ƒ f S(   Ns   MultidropSDPSRetriever:%s@%s:%sR   R   R   (   R   R   R   R   (   R   (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR   9  s
    c         C   s2   |  i  i ƒ  |  i  i d |  i ƒ  t i ƒ d  S(   Ns   MultidropSDPSRetriever(%s)(   R   R   R   R    R!   R"   (   R   (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR#   A  s    c         C   sÁ   |  i  i ƒ  t i |  | ƒ } y2 |  i | ƒ } |  i i d | ƒ \ } } } Wn( t i j
 o } t	 d | ƒ ‚ n Xt
 | ƒ d j  o t d | ƒ ‚ n | d | _ | d | _ | S(   Ns   *ENV %is!   server does not support *ENV (%s)i   s   short *ENV response (%s)i   i   (   R   R   R    t   _getmsgbyidt   _getmsgnumbyidR<   t   _longcmdRC   RD   t   getmailConfigurationErrort   lenRE   t   sendert	   recipient(   R   t   msgidt   msgRL   t   respt   linesRJ   RN   (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyRR   F  s    #N(   R$   R%   R&   R'   R(   R)   R*   R+   R,   R-   R.   R/   R0   R1   R2   R3   R   R#   RR   (    (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR     s   				c           B   s  e  Z d  Z e d d d e ƒ e d d d e d d ƒ e d d d e d d ƒ e d d	 ƒ e d d
 d e d e i	 ƒ e d d ƒ e
 d d d e d d ƒ e d d d e d d ƒ e d d d e d d ƒ e d d d e d e ƒ f
 Z d Z d Z e ƒ  Z d „  Z d „  Z RS(   s6   Retriever class for single-user IMAPv4 mailboxes.
    R   R   R   R   R   s   ~/.getmail/R   i´   R   R   R   R   t	   mailboxess   ('INBOX', )t   move_on_deletet   use_cram_md5t   IMAP4c         C   sK   |  i  i ƒ  d |  i i d d ƒ |  i i d d ƒ |  i i d d ƒ f S(   Ns   SimpleIMAPRetriever:%s@%s:%sR   R   R   (   R   R   R   R   (   R   (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR   n  s
    c         C   s2   |  i  i ƒ  |  i  i d |  i ƒ  t i ƒ d  S(   Ns   SimpleIMAPRetriever(%s)(   R   R   R   R    R!   R"   (   R   (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR#   v  s    N(   R$   R%   R&   R'   R(   R)   R*   R+   t   imaplibt
   IMAP4_PORTR,   R-   t   ConfTupleOfStringsR.   R/   R0   R1   R2   R3   R   R#   (    (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR   X  s    		c           B   s(  e  Z d  Z e d d d e ƒ e d d d e d d ƒ e d d ƒ e d d d e d e i	 ƒ e d d	 ƒ e
 d d
 d e d d ƒ e d d d e d d ƒ e d d d e d d ƒ e d d d e d d ƒ e d d d e d d ƒ e d d d e d e ƒ f Z d Z d Z e ƒ  Z d „  Z d „  Z RS(   s?   Retriever class for single-user IMAPv4-over-SSL mailboxes.
    R   R   R   R   R   s   ~/.getmail/R   R   R   R   R]   s   ('INBOX', )R^   R4   R5   R_   s	   IMAP4-SSLc         C   sK   |  i  i ƒ  d |  i i d d ƒ |  i i d d ƒ |  i i d d ƒ f S(   Ns   SimpleIMAPSSLRetriever:%s@%s:%sR   R   R   (   R   R   R   R   (   R   (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR   •  s
    c         C   s2   |  i  i ƒ  |  i  i d |  i ƒ  t i ƒ d  S(   Ns   SimpleIMAPSSLRetriever(%s)(   R   R   R   R    R!   R"   (   R   (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR#     s    N(   R$   R%   R&   R'   R(   R)   R+   R*   Ra   t   IMAP4_SSL_PORTR,   R-   Rc   R7   R.   R/   R0   R1   R2   R3   R   R#   (    (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR   |  s"   		c           B   s  e  Z d  Z e d d d e ƒ e d d d e d d ƒ e d d d e d d ƒ e d d	 ƒ e d d
 d e d e i	 ƒ e d d ƒ e
 d d d e d d ƒ e d d d e d d ƒ e d d d e d d ƒ e d d d e d e ƒ e d d ƒ f Z d Z d Z e ƒ  Z d „  Z d „  Z RS(   s5   Retriever class for multi-drop IMAPv4 mailboxes.
    R   R   R   R   R   s   ~/.getmail/R   i´   R   R   R   R   R]   s   ('INBOX', )R^   R_   RP   R`   c         C   sK   |  i  i ƒ  d |  i i d d ƒ |  i i d d ƒ |  i i d d ƒ f S(   Ns   MultidropIMAPRetriever:%s@%s:%sR   R   R   (   R   R   R   R   (   R   (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR   º  s
    c         C   s2   |  i  i ƒ  |  i  i d |  i ƒ  t i ƒ d  S(   Ns   MultidropIMAPRetriever(%s)(   R   R   R   R    R!   R"   (   R   (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR#   Â  s    N(   R$   R%   R&   R'   R(   R)   R*   R+   Ra   Rb   R,   R-   Rc   R.   R/   R0   R1   R2   R3   R   R#   (    (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR	   £  s"   		c           B   s1  e  Z d  Z e d d d e ƒ e d d d e d d ƒ e d d ƒ e d d d e d d	 ƒ e d d
 ƒ e d d d e d d ƒ e
 d d d e d d ƒ e d d d e d d ƒ e d d d e d d ƒ e d d d e d d ƒ e d d d e d e ƒ e d d ƒ f Z d Z d Z e ƒ  Z d „  Z d „  Z RS(   s>   Retriever class for multi-drop IMAPv4-over-SSL mailboxes.
    R   R   R   R   R   s   ~/.getmail/R   R   in   R   R   R]   s   ('INBOX', )R^   R4   R5   R_   RP   s	   IMAP4-SSLc         C   sK   |  i  i ƒ  d |  i i d d ƒ |  i i d d ƒ |  i i d d ƒ f S(   Ns"   MultidropIMAPSSLRetriever:%s@%s:%sR   R   R   (   R   R   R   R   (   R   (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR   â  s
    c         C   s2   |  i  i ƒ  |  i  i d |  i ƒ  t i ƒ d  S(   Ns   MultidropIMAPSSLRetriever(%s)(   R   R   R   R    R!   R"   (   R   (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR#   ê  s    N(   R$   R%   R&   R'   R(   R)   R+   R*   R,   R-   Rc   R7   R.   R/   R0   R1   R2   R3   R   R#   (    (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pyR
   È  s$   		(   R&   t   __all__R!   RC   Ra   t   typest   getmailcore.exceptionst   getmailcore.constantst   getmailcore.utilitiest   getmailcore.baseclassest   getmailcore._retrieverbasest   POP3RetrieverBaset   POP3initMixInR    t   POP3SSLinitMixInR   R8   R   R   t   MultidropPOP3RetrieverBaseR   R   R   t   IMAPRetrieverBaset   IMAPinitMixInR   t   IMAPSSLinitMixInR   t   MultidropIMAPRetrieverBaseR	   R
   (    (    (    s-   /usr/share/getmail4/getmailcore/retrievers.pys   <module>   s@   	




!#$ !#:$'%