����JFIF���������
1#@!#!123s
D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
usr
/
lib64
/
python3.6
/
__pycache__
/
Filename :
smtpd.cpython-36.opt-2.pyc
back
Copy
3 � \��������������������@���sZ��d�dl�Z�d�dlZd�dlZd�dlZd�dlZd�dlZd�dlZd�dlZd�dlZd�dl m Z �d�dlmZm Z �dddddgZe�jd��Zd ZG�d d��d�Ze��adZd ZdZd$dd�ZG�dd��dej�ZG�dd��dej�ZG�dd��de�ZG�dd��de�ZG�dd��de�ZG�dd��d�Zdd��Z e!dk�rVe ��Z"e"j#Z#de#k�rle#j$d�Z%e&e#de%��e'��e(��dg�Z)e#e%d�d��Z#nd�dl*Z)e+e)e#�Z,e,e"j-e"j.fe"j/e"j0fe"j1e"j2d�Z3e"j4�r2yd�dl5Z5W�n.�e6k �r����e7de�j8d ��e�j9d��Y�nX�e5j:d!�d"�Z;yej4e;��W�n.�e<k �r0���e7d#e�j8d ��e�j9d��Y�nX�yej=���W�n�e>k �rT���Y�nX�dS�)%�����N)�warn)� get_addr_spec�get_angle_addr�SMTPChannel� SMTPServer�DebuggingServer� PureProxy�MailmanProxyzPython SMTP proxy version 0.3c���������������@���s���e�Zd�Zdd��Zdd��ZdS�)�Devnullc�������������C���s���d�S�)N��)�self�msgr���r����/usr/lib64/python3.6/smtpd.py�writef���s����z Devnull.writec�������������C���s���d�S�)Nr���)r���r���r���r����flushg���s����z Devnull.flushN)�__name__� __module__�__qualname__r���r���r���r���r���r���r ���e���s���r ���� z, i�����c�������������C���s4���t�tt���tjd��|r&t�|tjd��tj|���d�S�)N)�file)�print�__doc__�globals�sys�stderr�exit)�coder ���r���r���r����usagep���s����r���c���������������@���s���e�Zd�ZdZdZdZejefdd��Ze dd���Z edd d fd d�Zdd ��Z dd��Ze dd���Zejdd���Ze dd���Zejdd���Ze dd���Zejdd���Ze dd���Zejdd���Ze dd���Zejdd���Ze dd ���Zejd!d ���Ze d"d#���Zejd$d#���Ze d%d&���Zejd'd&���Ze d(d)���Zejd*d)���Ze d+d,���Zejd-d,���Ze d.d/���Zejd0d/���Zd1d2��Zd3d4��Zd5d6��Zd7d8��Zd9d:��Zd;d<��Z d=d>��Z!d?d@��Z"dAdB��Z#dCdD��Z$dEdF��Z%dGdH��Z&dIdJ��Z'dKdL��Z(dMdN��Z)dOdP��Z*dQdR��Z+dS�)Sr���r�������i���c�������������C���s���|�S�)Nr���)�xr���r���r����<lambda>|���s����zSMTPChannel.<lambda>c�������������C���s*���yt�|�jj���S��tk r$���|�jS�X�d�S�)N)�max�command_size_limits�values� ValueError�command_size_limit)r���r���r���r����max_command_size_limit~���s����z"SMTPChannel.max_command_size_limitNFc������� ������C���s��t�jj|�||d��||�_||�_||�_||�_||�_||�_|rF|rFt d��|rdd|�_ d|�_d|�_t |�_nd|�_ d|�_td�|�_d |�_|�j���d|�_d |�_|�jj���tj��|�_y|j��|�_W�n:�tk r��}�z|�j���|jd�tjkr��d�S�d�}~X�nX�tdt |�j�t!d ��|�j"d|�jt#f���d�S�)N)�mapzFdecode_data and enable_SMTPUTF8 cannot be set to True at the same timer���z �.�����s��� ����.���� Fr���zPeer:)r���z 220 %s %s)$�asynchat� async_chat�__init__�smtp_server�conn�addr�data_size_limit�enable_SMTPUTF8�_decode_datar%����_emptystring�_linesep�_dotsep�NEWLINE�_newline�ord�_set_rset_state� seen_greeting� extended_smtpr#����clear�socketZgetfqdn�fqdnZgetpeername�peer�OSError�close�args�errnoZENOTCONNr����repr�DEBUGSTREAM�push�__version__) r���Zserverr1���r2���r3���r(���r4����decode_data�errr���r���r���r/�������s@���� zSMTPChannel.__init__c�������������C���s.���|�j�|�_d�|�_g�|�_d|�_d|�_|�jd��d�S�)NFr���s��� )�COMMAND� smtp_state�mailfrom�rcpttos�require_SMTPUTF8� num_bytes�set_terminator)r���r���r���r����_set_post_data_state����s����z SMTPChannel._set_post_data_statec�������������C���s���|�j����d|�_g�|�_d�S�)Nr���)rT���� received_data�received_lines)r���r���r���r���r<�������s����zSMTPChannel._set_rset_statec�������������C���s���t�dtd��|�jS�)NzTAccess to __server attribute on SMTPChannel is deprecated, use 'smtp_server' instead����)r����DeprecationWarningr0���)r���r���r���r����__server����s����zSMTPChannel.__serverc�������������C���s���t�dtd��||�_d�S�)NzRSetting __server attribute on SMTPChannel is deprecated, set 'smtp_server' insteadrW���)r���rX���r0���)r����valuer���r���r���rY�������s����c�������������C���s���t�dtd��|�jS�)NzUAccess to __line attribute on SMTPChannel is deprecated, use 'received_lines' insteadrW���)r���rX���rV���)r���r���r���r����__line����s����zSMTPChannel.__linec�������������C���s���t�dtd��||�_d�S�)NzSSetting __line attribute on SMTPChannel is deprecated, set 'received_lines' insteadrW���)r���rX���rV���)r���rZ���r���r���r���r[�������s����c�������������C���s���t�dtd��|�jS�)NzRAccess to __state attribute on SMTPChannel is deprecated, use 'smtp_state' insteadrW���)r���rX���rN���)r���r���r���r����__state����s����zSMTPChannel.__statec�������������C���s���t�dtd��||�_d�S�)NzPSetting __state attribute on SMTPChannel is deprecated, set 'smtp_state' insteadrW���)r���rX���rN���)r���rZ���r���r���r���r\�������s����c�������������C���s���t�dtd��|�jS�)NzXAccess to __greeting attribute on SMTPChannel is deprecated, use 'seen_greeting' insteadrW���)r���rX���r=���)r���r���r���r���� __greeting����s����zSMTPChannel.__greetingc�������������C���s���t�dtd��||�_d�S�)NzVSetting __greeting attribute on SMTPChannel is deprecated, set 'seen_greeting' insteadrW���)r���rX���r=���)r���rZ���r���r���r���r]�������s����c�������������C���s���t�dtd��|�jS�)NzSAccess to __mailfrom attribute on SMTPChannel is deprecated, use 'mailfrom' insteadrW���)r���rX���rO���)r���r���r���r���� __mailfrom����s����zSMTPChannel.__mailfromc�������������C���s���t�dtd��||�_d�S�)NzQSetting __mailfrom attribute on SMTPChannel is deprecated, set 'mailfrom' insteadrW���)r���rX���rO���)r���rZ���r���r���r���r^�������s����c�������������C���s���t�dtd��|�jS�)NzQAccess to __rcpttos attribute on SMTPChannel is deprecated, use 'rcpttos' insteadrW���)r���rX���rP���)r���r���r���r���� __rcpttos����s����zSMTPChannel.__rcpttosc�������������C���s���t�dtd��||�_d�S�)NzOSetting __rcpttos attribute on SMTPChannel is deprecated, set 'rcpttos' insteadrW���)r���rX���rP���)r���rZ���r���r���r���r_�������s����c�������������C���s���t�dtd��|�jS�)NzTAccess to __data attribute on SMTPChannel is deprecated, use 'received_data' insteadrW���)r���rX���rU���)r���r���r���r����__data����s����zSMTPChannel.__datac�������������C���s���t�dtd��||�_d�S�)NzRSetting __data attribute on SMTPChannel is deprecated, set 'received_data' insteadrW���)r���rX���rU���)r���rZ���r���r���r���r`�����s����c�������������C���s���t�dtd��|�jS�)NzKAccess to __fqdn attribute on SMTPChannel is deprecated, use 'fqdn' insteadrW���)r���rX���rA���)r���r���r���r����__fqdn ��s����zSMTPChannel.__fqdnc�������������C���s���t�dtd��||�_d�S�)NzISetting __fqdn attribute on SMTPChannel is deprecated, set 'fqdn' insteadrW���)r���rX���rA���)r���rZ���r���r���r���ra�����s����c�������������C���s���t�dtd��|�jS�)NzKAccess to __peer attribute on SMTPChannel is deprecated, use 'peer' insteadrW���)r���rX���rB���)r���r���r���r����__peer��s����zSMTPChannel.__peerc�������������C���s���t�dtd��||�_d�S�)NzISetting __peer attribute on SMTPChannel is deprecated, set 'peer' insteadrW���)r���rX���rB���)r���rZ���r���r���r���rb�����s����c�������������C���s���t�dtd��|�jS�)NzKAccess to __conn attribute on SMTPChannel is deprecated, use 'conn' insteadrW���)r���rX���r1���)r���r���r���r����__conn ��s����zSMTPChannel.__connc�������������C���s���t�dtd��||�_d�S�)NzISetting __conn attribute on SMTPChannel is deprecated, set 'conn' insteadrW���)r���rX���r1���)r���rZ���r���r���r���rc���%��s����c�������������C���s���t�dtd��|�jS�)NzKAccess to __addr attribute on SMTPChannel is deprecated, use 'addr' insteadrW���)r���rX���r2���)r���r���r���r����__addr+��s����zSMTPChannel.__addrc�������������C���s���t�dtd��||�_d�S�)NzISetting __addr attribute on SMTPChannel is deprecated, set 'addr' insteadrW���)r���rX���r2���)r���rZ���r���r���r���rd���0��s����c�������������C���s&���t�jj|�t|d�|�jrdnd���d�S�)Nz zutf-8�ascii)r-���r.���rI����bytesrQ���)r���r ���r���r���r���rI���7��s���� zSMTPChannel.pushc�������������C���s|���d�}|�j�|�jkr|�j}n|�j�|�jkr*|�j}|r<|�j|kr<d�S�|rR|��jt|�7��_|�jrl|�jj t |d���n|�jj |��d�S�)Nzutf-8)rN���rM���r'����DATAr3���rR����lenr5���rV����append�str)r����data�limitr���r���r����collect_incoming_data<��s����z!SMTPChannel.collect_incoming_datac������� ������C���s��|�j�j|�j�}tdt|�td��g�|�_|�j|�jk�r|�jd�}|�_|sT|�j d��d�S�|�j sdt|d�}|jd�}|dk�r�|j ��}d�}n$|d�|��j ��}||d�d���j��}|�jr�|�j|�n|�j}||kr�|�j d��d�S�t|�d |�d��}|��s�|�j d |���d�S�||��d�S�|�j|�jk�r*|�j d��d|�_d�S�|�j�rT|�j|�jk�rT|�j d��d|�_d�S�g�}xJ|j|�j�D�]:} | �r�| d�|�jk�r�|j| dd�����n |j| ���qfW�|�jj|�|�_|�j|�j|�j|�jf} i�}|�j �s�|�j|�jd �}|�j j!| |�}|�j"���|�s|�j d��n |�j |��d�S�)NzData:)r���r���z500 Error: bad syntaxzutf-8� r���z500 Error: line too longZsmtp_z&500 Error: command "%s" not recognizedz451 Internal confusionz552 Error: Too much mail data)�mail_options�rcpt_optionsz250 OK)#r6����joinrV���r���rG���rH���rN���rM���rR���rI���r5���rj����find�upper�stripr>���r#���r&����getattrrg���r3����splitr7���r8���ri���r:���rU���rB���rO���rP���ro���rp���r0����process_messagerT���) r����lineZsz�i�command�argZmax_sz�methodrk����textrE����kwargsZstatusr���r���r����found_terminatorL��sd���� zSMTPChannel.found_terminatorc�������������C���sH���|s|�j�d��d�S�|�jr&|�j�d��d�S�|�j���||�_|�j�d|�j���d�S�)Nz501 Syntax: HELO hostnamez503 Duplicate HELO/EHLOz250 %s)rI���r=���r<���rA���)r���r{���r���r���r���� smtp_HELO���s���� zSMTPChannel.smtp_HELOc�������������C���s����|s|�j�d��d�S�|�jr&|�j�d��d�S�|�j���||�_d|�_|�j�d|�j���|�jrr|�j�d|�j���|�jd��d7��<�|�js�|�j�d��|�jr�|�j�d ��|�jd��d 7��<�|�j�d��d�S�)Nz501 Syntax: EHLO hostnamez503 Duplicate HELO/EHLOTz250-%sz250-SIZE %s�MAIL����z250-8BITMIMEz250-SMTPUTF8� ���z250 HELP) rI���r=���r<���r>���rA���r3���r#���r5���r4���)r���r{���r���r���r���� smtp_EHLO���s&���� zSMTPChannel.smtp_EHLOc�������������C���s���|r|�j�d��n |�j�d��d�S�)Nz501 Syntax: NOOPz250 OK)rI���)r���r{���r���r���r���� smtp_NOOP���s����zSMTPChannel.smtp_NOOPc�������������C���s���|�j�d��|�j���d�S�)Nz221 Bye)rI���Zclose_when_done)r���r{���r���r���r���� smtp_QUIT���s���� zSMTPChannel.smtp_QUITc�������������C���s0���t�|�}|d�|��j��|kr,||d���j��S�dS�)Nr���)rh���rs���rt���)r����keywordr{���Zkeylenr���r���r����_strip_command_keyword���s����z"SMTPChannel._strip_command_keywordc�������������C���sF���|sdS�|j���jd�r$t|�\}}nt|�\}}|s<||fS�|j|fS�)Nr����<)r���r���)�lstrip� startswithr���r���Z addr_spec)r���r{����address�restr���r���r����_getaddr���s����zSMTPChannel._getaddrc�������������C���sN���i�}xD|D�]<}|j�d�\}}}|j���s2|r6|�r6d�S�|r>|nd||<�q W�|S�)N�=T)� partition�isalnum)r����params�resultZparam�eqrZ���r���r���r���� _getparams���s���� zSMTPChannel._getparamsc�������������C���s��|r�d}|j���}|dkr$|�jd��q�|dkr8|�jd��q�|dkr^d}|�jrR||7�}|�j|��q�|dkr�d }|�jrx||7�}|�j|��q�|d kr�|�jd��q�|dkr�|�jd ��q�|dkr�|�jd��q�|dkr�|�jd��q�|dkr�|�jd��q�|�jd��n |�jd��d�S�)Nz [SP <mail-parameters>]ZEHLOz250 Syntax: EHLO hostnameZHELOz250 Syntax: HELO hostnamer����z 250 Syntax: MAIL FROM: <address>ZRCPTz250 Syntax: RCPT TO: <address>rg���z250 Syntax: DATAZRSETz250 Syntax: RSETZNOOPz250 Syntax: NOOPZQUITz250 Syntax: QUITZVRFYz250 Syntax: VRFY <address>zD501 Supported commands: EHLO HELO MAIL RCPT DATA RSET NOOP QUIT VRFYzD250 Supported commands: EHLO HELO MAIL RCPT DATA RSET NOOP QUIT VRFY)rs���rI���r>���)r���r{���ZextendedZlc_argr ���r���r���r���� smtp_HELP���s:����zSMTPChannel.smtp_HELPc�������������C���s@���|r2|�j�|�\}}|r"|�jd��q<|�jd|���n |�jd��d�S�)NzB252 Cannot VRFY user, but will accept message and attempt deliveryz502 Could not VRFY %sz501 Syntax: VRFY <address>)r����rI���)r���r{���r����r����r���r���r���� smtp_VRFY���s����zSMTPChannel.smtp_VRFYc�������������C���s���|�j�s|�jd��d�S�td|td��d}|�jr4|d7�}|d�krJ|�j|��d�S�|�jd|�}|�j|�\}}|sv|�j|��d�S�|�j�r�|r�|�j|��d�S�|�jr�|�jd��d�S�|j��j ��|�_ |�j|�j �}|d�kr�|�j|��d�S�|�j�s�|j dd �}|dk�r�|�jd��d�S�|�j�r>|j dd �}|dk�r&d|�_n|d k �r>|�jd��d�S�|j dd��}|�r�|j���sh|�j|��d�S�|�j�r�t|�|�jk�r�|�jd��d�S�t|j���dk�r�|�jd��d�S�||�_td|�jtd��|�jd��d�S�)Nz503 Error: send HELO firstz ===> MAIL)r���z 501 Syntax: MAIL FROM: <address>z [SP <mail-parameters>]zFROM:z503 Error: nested MAIL commandZBODY�7BIT�8BITMIMEz1501 Error: BODY can only be one of 7BIT, 8BITMIMEZSMTPUTF8FTz&501 Error: SMTPUTF8 takes no argumentsZSIZEz:552 Error: message size exceeds fixed maximum message sizer���z:555 MAIL FROM parameters not recognized or not implementedzsender:z250 OK)r����r����)r=���rI���r���rH���r>���r����r����rO���rs���rv���ro���r����r5����popr4���rQ����isdigitr3����intrh����keys)r���r{���� syntaxerrr����r����Zbody�smtputf8�sizer���r���r���� smtp_MAIL��sh���� zSMTPChannel.smtp_MAILc�������������C���s��|�j�s|�jd��d�S�td|td��|�js6|�jd��d�S�d}|�jrH|d7�}|d�kr^|�j|��d�S�|�jd|�}|�j|�\}}|s�|�j|��d�S�|�j�r�|r�|�j|��d�S�|j��j ��|�_ |�j|�j �}|d�kr�|�j|��d�S�t|j ���dkr�|�jd ��d�S�|�jj|��td |�jtd��|�jd��d�S�)Nz503 Error: send HELO firstz ===> RCPT)r���z503 Error: need MAIL commandz501 Syntax: RCPT TO: <address>z [SP <mail-parameters>]zTO:r���z8555 RCPT TO parameters not recognized or not implementedzrecips:z250 OK)r=���rI���r���rH���rO���r>���r����r����rs���rv���rp���r����rh���r����rP���ri���)r���r{���r����r����r����r���r���r���� smtp_RCPT7��s@���� zSMTPChannel.smtp_RCPTc�������������C���s(���|r|�j�d��d�S�|�j���|�j�d��d�S�)Nz501 Syntax: RSETz250 OK)rI���r<���)r���r{���r���r���r���� smtp_RSETZ��s ���� zSMTPChannel.smtp_RSETc�������������C���sZ���|�j�s|�jd��d�S�|�js(|�jd��d�S�|r:|�jd��d�S�|�j|�_|�jd��|�jd��d�S�)Nz503 Error: send HELO firstz503 Error: need RCPT commandz501 Syntax: DATAs��� . z#354 End data with <CR><LF>.<CR><LF>)r=���rI���rP���rg���rN���rS���)r���r{���r���r���r���� smtp_DATAa��s���� zSMTPChannel.smtp_DATAc�������������C���s���|�j�d��d�S�)Nz502 EXPN not implemented)rI���)r���r{���r���r���r���� smtp_EXPNp��s����zSMTPChannel.smtp_EXPN),r���r���r���rM���rg���r&����collections�defaultdictr#����propertyr'����DATA_SIZE_DEFAULTr/���rT���r<���Z_SMTPChannel__server�setterZ_SMTPChannel__lineZ_SMTPChannel__stateZ_SMTPChannel__greetingZ_SMTPChannel__mailfromZ_SMTPChannel__rcpttosZ_SMTPChannel__dataZ_SMTPChannel__fqdnZ_SMTPChannel__peerZ_SMTPChannel__connZ_SMTPChannel__addrrI���rm���r���r����r����r����r����r����r����r����r����r����r����r����r����r����r����r���r���r���r���r���w���s`���& >#6#c���������������@���s2���e�Zd�ZeZedddfdd�Zdd��Zdd��ZdS�) r���NFc�������������C���s����||�_�||�_||�_||�_||�_|r.|r.td��tjj|�|d��yNt j |dt ji�}|�j|d�d�|d�d���|�j ���|�j|��|�jd��W�n���|�j�����Y�n(X�td|�jjtjtj���||f�td��d�S�) NzFdecode_data and enable_SMTPUTF8 cannot be set to True at the same time)r(����typer���r�������z0%s started at %s Local addr: %s Remote addr:%s)r���)Z _localaddr�_remoteaddrr3���r4���r5���r%����asyncore� dispatcherr/���r@���ZgetaddrinfoZSOCK_STREAMZ create_socketZset_reuse_addrZbindZlistenrD���r���� __class__r����time�ctimerH���)r���Z localaddrZ remoteaddrr3���r(���r4���rK���Zgai_resultsr���r���r���r/���x��s*���� zSMTPServer.__init__c�������������C���s6���t�dt|��td��|�j|�|||�j|�j|�j|�j�}d�S�)NzIncoming connection from %s)r���)r���rG���rH���� channel_classr3���Z_mapr4���r5���)r���r1���r2���Zchannelr���r���r����handle_accepted���s����zSMTPServer.handle_acceptedc�������������K���s���t��d�S�)N)�NotImplementedError)r���rB���rO���rP���rk���r~���r���r���r���rw������s����zSMTPServer.process_message) r���r���r���r���r����r����r/���r����rw���r���r���r���r���r���t��s ���c���������������@���s���e�Zd�Zdd��Zdd��ZdS�)r���c�������������C���sr���d}|j���}x`|D�]X}|rP|�rPd|d��}t|t�sDt|jd��}t|��d}t|t�sbt|�}t|��qW�d�S�)Nr���zX-Peer: r���zutf-8)� splitlines� isinstancerj���rG����encoder���)r���rB���rk���Z inheaders�linesrx���Z peerheaderr���r���r����_print_message_content���s���� z&DebuggingServer._print_message_contentc�������������K���sX���t�d��|r@|jd�r&t�d|d����|jd�r@t�d|d����|�j||��t�d��d�S�)Nz%---------- MESSAGE FOLLOWS ----------ro���zmail options: %srp���zrcpt options: %s z%------------ END MESSAGE ------------)r����getr����)r���rB���rO���rP���rk���r~���r���r���r���rw������s���� zDebuggingServer.process_messageN)r���r���r���r����rw���r���r���r���r���r������s���c�������������������s,���e�Zd�Z��fdd�Zdd��Zdd��Z���ZS�)r���c����������������s.���d|kr|d�rt�d��tt|��j||��d�S�)Nr4���z$PureProxy does not support SMTPUTF8.)r%����superr���r/���)r���rE���r~���)r����r���r���r/������s����zPureProxy.__init__c������� ������C���sh���|j�d�}d}x|D�]}|sP�|d7�}qW�|j|d|d����tj|�}|�j|||�}td|td��d�S�)Nr���r���r���z X-Peer: %szwe got some refusals:)r���)rv����insertr9���rq����_deliverr���rH���) r���rB���rO���rP���rk���r����ry���rx����refusedr���r���r���rw������s���� zPureProxy.process_messagec�������������C���s����dd�l�}i�}yB|j��}|j|�jd�|�jd���z|j|||�}W�d�|j���X�W�n��|jk r��}�ztdtd��|j }W�Y�d�d�}~X�nj�t |jfk r��}�zHtd|jtd��t |dd �}t |dd�} x|D�]} || f|| <�q�W�W�Y�d�d�}~X�nX�|S�) Nr���r���zgot SMTPRecipientsRefused)r���ZgotZ smtp_codeZ smtp_error�ignore���)�smtplibZSMTPZconnectr����Zsendmail�quitZSMTPRecipientsRefusedr���rH���Z recipientsrC���Z SMTPExceptionr����ru���)r���rO���rP���rk���r����r�����s�eZerrcode�errmsg�rr���r���r���r�������s$���� "zPureProxy._deliver)r���r���r���r/���rw���r����� __classcell__r���r���)r����r���r������s���c�������������������s$���e�Zd�Z��fdd�Zdd��Z���ZS�)r ���c����������������s.���d|kr|d�rt�d��tt|��j||��d�S�)Nr4���z'MailmanProxy does not support SMTPUTF8.)r%���r����r���r/���)r���rE���r~���)r����r���r���r/��� ��s����zMailmanProxy.__init__c�������������C���s:��ddl�m}�ddlm}�ddlm}�ddlm}�g�} x~|D�]v} | j��jd�d�}|jd�}t|�dkrhq:|d�} t|�dkr�|d �}nd }|j | ��s:|d!kr�q:| j | | |f��q:W�x| D�]\} } }|j| ��q�W�tddj |�td��|�r|�j|||�}td|td��i�}||�}|j|�}|jd��s2||d<�|jd��sPtjtj���|d<�x�| D�]�\} } }td| td��|j| �}|�s�|j| dd�}||| <�|d k�r�|j|d d��n�|dk�r�|j|d d��nh|dk�r�|j|d d��nN|d k�r�|j|d d��n4|d"k�rV|dk�rd|d<�nd |d<�|j|d d���qVW�d�S�)#Nr���)�StringIO)�Utils)�Message)�MailList�@�-rW���r���r����admin�owner�requestrq����leavezforwarding recips:rn���)r���zwe got refusals:�fromZFromZdateZDatezsending message to)�lock)�tolist)Ztoadmin)Ztoowner)Z torequestZ subscribeZSubjectZunsubscribe)r���r����r����r����rq���r����)rq���r����)�ior����ZMailmanr����r����r�����lowerrv���rh���Zlist_existsri����remover���rq���rH���r����r����r����r����ZEnqueue)r���rB���rO���rP���rk���r����r����r����r����Z listnamesZrcptZlocal�partsZlistnamerz���r����Zmlistsr����r ���Zmlistr���r���r���rw�����sd���� zMailmanProxy.process_message)r���r���r���r/���rw���r����r���r���)r����r���r �����s���c���������������@���s���e�Zd�ZdZdZdZdZdS�)�OptionsTr���NF)r���r���r����setuid� classname� size_limitr4���r���r���r���r���r����_��s���r����c�������� ���!���C���st��y.t�j�tjdd���dddddddd g�\}�}W�n.�t�jk r\�}�ztd|��W�Y�d�d�}~X�nX�t��}x�|�D�]�\}}|d'kr�td��qj|d(kr�tt��tjd��qj|d)kr�d|_ qj|d*kr�||_ qj|d+kr�tjaqj|d,kr�d|_ qj|d-krjyt|�}||_W�qj���td|�tjd��tjd��Y�qjX�qjW�t|�dk��r@d}d}nPt|�dk��r\|d�}d}n4t|�d k��r||d�}|d�}ntdd!tj|����|jd"�} | dk��r�tdd#|���|d�| ��|_yt|| d�d����|_W�n$�tk �r����tdd$|���Y�nX�|jd"�} | dk��r"tdd%|���|d�| ��|_yt|| d�d����|_W�n$�tk �rn���tdd&|���Y�nX�|S�).Nr���z nVhc:s:duzclass=Znosetuid�version�helpzsize=�debugr�����-h�--helpr����-V� --version�-n� --nosetuidF�-c�--class�-d�--debug�-u� --smtputf8T�-s�--sizezInvalid size: )r���zlocalhost:8025zlocalhost:25rW�������zInvalid arguments: %s�:zBad local spec: %szBad local port: %szBad remote spec: %szBad remote port: %s)r����r����)r����r����)r����r����)r����r����)r����r����)r����r����)r����r����)�getoptr����argv�errorr���r����r���rJ���r���r����r����r���rH���r4���r����r����rh���� COMMASPACErq���rr���� localhost� localportr%���� remotehost� remoteport) ZoptsrE���r�����options�optr{���Zint_sizeZ localspecZ remotespecry���r���r���r���� parseargsf��sp���� r�����__main__r)���r���)r4���z7Cannot import module "pwd"; try running with -n option.)r����nobodyrW���z3Cannot setuid "nobody"; try running with -n option.)r���)?r����osrF���r����r����r@���r����r-���r�����warningsr���Zemail._header_value_parserr���r����__all__r����ZprogramrJ���r ���rH���r9���r����r����r���r.���r���r����r���r���r���r ���r����r����r���r����r�����rfindZlastdot� __import__r����locals�modr����ru���Zclass_r����r����r����r����r����r4����proxyr�����pwd�ImportErrorr���r���r����getpwnamr�����PermissionErrorZloop�KeyboardInterruptr���r���r���r����<module>P���sv��� ����M-SB