Edit File: smtpd.cpython-38.opt-2.pyc
U ����@��d������������������������@���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#�$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�r2zd�dl5Z5W�n.�e6k �r����e7de�j8d ��e��9d��Y�nX�e5�:d!�d"�Z;ze�4e;��W�n.�e<k �r0���e7d#e�j8d ��e��9d��Y�nX�ze�=���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����*/opt/alt/python38/lib64/python3.8/smtpd.py�writef��������z Devnull.writec�����������������C���s���d�S�r���r����r���r���r���r����flushg���r���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��t�|���d�S�)N��file)�print�__doc__�globals�sys�stderr�exit)�coder���r���r���r����usagep���s����r#���c�������������������@���s���e�Zd�ZdZdZdZe�efdd��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�r���r���)�xr���r���r����<lambda>|���r���zSMTPChannel.<lambda>c�����������������C���s0���zt�|�j����W�S��tk r*���|�j�Y�S�X�d�S�r���)�max�command_size_limits�values� ValueError�command_size_limitr���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 |�_|�����d|�_d |�_|�j����t���|�_z|���|�_W�nB�tk r��}�z$|�����|jd�tjkr��W�Y��d�S�d�}~X�Y�nX�tdt |�j�t!d ��|��"d|�jt#f���d�S�)N��map�Fdecode_data and enable_SMTPUTF8 cannot be set to True at the same timer���� �.r������� ����.���� 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���Zserverr9���r:���r;���r.���r<����decode_data�errr���r���r���r7�������s@���� zSMTPChannel.__init__c�����������������C���s.���|�j�|�_d�|�_g�|�_d|�_d|�_|��d��d�S�)NFr���r2���)�COMMAND� smtp_state�mailfrom�rcpttos�require_SMTPUTF8� num_bytes�set_terminatorr���r���r���r����_set_post_data_state����s����z SMTPChannel._set_post_data_statec�����������������C���s���|������d|�_g�|�_d�S��Nr���)r\���� received_data�received_linesr���r���r���r���rD�������s����zSMTPChannel._set_rset_statec�����������������C���s���t�dtd��|�jS�)NzTAccess to __server attribute on SMTPChannel is deprecated, use 'smtp_server' instead�����r����DeprecationWarningr8���r���r���r���r����__server����s ������zSMTPChannel.__serverc�����������������C���s���t�dtd��||�_d�S�)NzRSetting __server attribute on SMTPChannel is deprecated, set 'smtp_server' insteadr`���ra����r����valuer���r���r���rc�������s ������c�����������������C���s���t�dtd��|�jS�)NzUAccess to __line attribute on SMTPChannel is deprecated, use 'received_lines' insteadr`����r���rb���r_���r���r���r���r����__line����s ������zSMTPChannel.__linec�����������������C���s���t�dtd��||�_d�S�)NzSSetting __line attribute on SMTPChannel is deprecated, set 'received_lines' insteadr`���rf���rd���r���r���r���rg�������s ������c�����������������C���s���t�dtd��|�jS�)NzRAccess to __state attribute on SMTPChannel is deprecated, use 'smtp_state' insteadr`����r���rb���rV���r���r���r���r����__state����s ������zSMTPChannel.__statec�����������������C���s���t�dtd��||�_d�S�)NzPSetting __state attribute on SMTPChannel is deprecated, set 'smtp_state' insteadr`���rh���rd���r���r���r���ri�������s ������c�����������������C���s���t�dtd��|�jS�)NzXAccess to __greeting attribute on SMTPChannel is deprecated, use 'seen_greeting' insteadr`����r���rb���rE���r���r���r���r���� __greeting����s ������zSMTPChannel.__greetingc�����������������C���s���t�dtd��||�_d�S�)NzVSetting __greeting attribute on SMTPChannel is deprecated, set 'seen_greeting' insteadr`���rj���rd���r���r���r���rk�������s ������c�����������������C���s���t�dtd��|�jS�)NzSAccess to __mailfrom attribute on SMTPChannel is deprecated, use 'mailfrom' insteadr`����r���rb���rW���r���r���r���r���� __mailfrom����s ������zSMTPChannel.__mailfromc�����������������C���s���t�dtd��||�_d�S�)NzQSetting __mailfrom attribute on SMTPChannel is deprecated, set 'mailfrom' insteadr`���rl���rd���r���r���r���rm�������s ������c�����������������C���s���t�dtd��|�jS�)NzQAccess to __rcpttos attribute on SMTPChannel is deprecated, use 'rcpttos' insteadr`����r���rb���rX���r���r���r���r���� __rcpttos����s ������zSMTPChannel.__rcpttosc�����������������C���s���t�dtd��||�_d�S�)NzOSetting __rcpttos attribute on SMTPChannel is deprecated, set 'rcpttos' insteadr`���rn���rd���r���r���r���ro�������s ������c�����������������C���s���t�dtd��|�jS�)NzTAccess to __data attribute on SMTPChannel is deprecated, use 'received_data' insteadr`����r���rb���r^���r���r���r���r����__data����s ������zSMTPChannel.__datac�����������������C���s���t�dtd��||�_d�S�)NzRSetting __data attribute on SMTPChannel is deprecated, set 'received_data' insteadr`���rp���rd���r���r���r���rq�����s ������c�����������������C���s���t�dtd��|�jS�)NzKAccess to __fqdn attribute on SMTPChannel is deprecated, use 'fqdn' insteadr`����r���rb���rI���r���r���r���r����__fqdn ��s ������zSMTPChannel.__fqdnc�����������������C���s���t�dtd��||�_d�S�)NzISetting __fqdn attribute on SMTPChannel is deprecated, set 'fqdn' insteadr`���rr���rd���r���r���r���rs�����s ������c�����������������C���s���t�dtd��|�jS�)NzKAccess to __peer attribute on SMTPChannel is deprecated, use 'peer' insteadr`����r���rb���rJ���r���r���r���r����__peer��s ������zSMTPChannel.__peerc�����������������C���s���t�dtd��||�_d�S�)NzISetting __peer attribute on SMTPChannel is deprecated, set 'peer' insteadr`���rt���rd���r���r���r���ru�����s ������c�����������������C���s���t�dtd��|�jS�)NzKAccess to __conn attribute on SMTPChannel is deprecated, use 'conn' insteadr`����r���rb���r9���r���r���r���r����__conn ��s ������zSMTPChannel.__connc�����������������C���s���t�dtd��||�_d�S�)NzISetting __conn attribute on SMTPChannel is deprecated, set 'conn' insteadr`���rv���rd���r���r���r���rw���%��s ������c�����������������C���s���t�dtd��|�jS�)NzKAccess to __addr attribute on SMTPChannel is deprecated, use 'addr' insteadr`����r���rb���r:���r���r���r���r����__addr+��s ������zSMTPChannel.__addrc�����������������C���s���t�dtd��||�_d�S�)NzISetting __addr attribute on SMTPChannel is deprecated, set 'addr' insteadr`���rx���rd���r���r���r���ry���0��s ������c�����������������C���s&���t�j�|�t|d�|�jrdnd���d�S�)Nr0����utf-8�ascii)r5���r6���rQ����bytesrY���r ���r���r���r���rQ���7��s���� ��zSMTPChannel.pushc�����������������C���s|���d�}|�j�|�jkr|�j}n|�j�|�jkr*|�j}|r<|�j|kr<d�S�|rR|��jt|�7��_|�jrl|�j� t |d���n|�j� |��d�S�)Nrz���)rV���rU���r,����DATAr;���rZ����lenr=���r_����append�str)r����data�limitr���r���r����collect_incoming_data<��s����z!SMTPChannel.collect_incoming_datac����������� ������C���s��|�j��|�j�}tdt|�td��g�|�_|�j|�jk�r|�jd�}|�_|sT|�� d��d�S�|�j sdt|d�}|�d�}|dk�r�|� ��}d�}n$|d�|��� ��}||d�d������}|�jr�|�j|�n|�j}||kr�|�� d��d�S�t|�d |�d��}|s�|�� d |���d�S�||��d�S�|�j|�jk�r(|�� d��d|�_d�S�|�j�rR|�j|�jk�rR|�� d��d|�_d�S�g�}|�|�j�D�]:} | �r�| d�|�jk�r�|�| dd�����n |�| ���qb|�j�|�|�_|�j|�j|�j|�jf} i�}|�j �s�|�j|�jd �}|�j j!| |�}|��"���|�s|�� d��n |�� |��d�S�)NzData:r���r���z500 Error: bad syntaxrz���� r$���z500 Error: line too longZsmtp_z&500 Error: command "%s" not recognizedz451 Internal confusionz552 Error: Too much mail data)�mail_options�rcpt_options�250 OK)#r>����joinr_���r���rO���rP���rV���rU���rZ���rQ���r=���r�����find�upper�striprF���r(���r+����getattrr}���r;����splitr?���r@���r���rB���r^���rJ���rW���rX���r����r����r8����process_messager\���) r����lineZsz�i�command�argZmax_sz�methodr�����textrM����kwargsZstatusr���r���r����found_terminatorL��sl���� �� �zSMTPChannel.found_terminatorc�����������������C���sH���|s|���d��d�S�|�jr&|���d��d�S�|�����||�_|���d|�j���d�S�)Nz501 Syntax: HELO hostname�503 Duplicate HELO/EHLOz250 %s)rQ���rE���rD���rI����r���r����r���r���r���� smtp_HELO���s���� zSMTPChannel.smtp_HELOc�����������������C���s����|s|���d��d�S�|�jr&|���d��d�S�|�����||�_d|�_|���d|�j���|�jrr|���d|�j���|�jd��d7��<�|�js�|���d��|�jr�|���d ��|�jd��d 7��<�|���d��d�S�)Nz501 Syntax: EHLO hostnamer����Tz250-%sz250-SIZE %s�MAIL����z250-8BITMIMEz250-SMTPUTF8� ���z250 HELP) rQ���rE���rD���rF���rI���r;���r(���r=���r<���r����r���r���r���� smtp_EHLO���s&���� zSMTPChannel.smtp_EHLOc�����������������C���s���|r|���d��n |���d��d�S�)Nz501 Syntax: NOOPr�����rQ���r����r���r���r���� smtp_NOOP���s����zSMTPChannel.smtp_NOOPc�����������������C���s���|���d��|�����d�S�)Nz221 Bye)rQ���Zclose_when_doner����r���r���r���� smtp_QUIT���s���� zSMTPChannel.smtp_QUITc�����������������C���s0���t�|�}|d�|�����|kr,||d������S�dS�r]���)r~���r����r����)r����keywordr����Zkeylenr���r���r����_strip_command_keyword���s����z"SMTPChannel._strip_command_keywordc�����������������C���sF���|sdS�|�����d�r$t|�\}}nt|�\}}|s<||fS�|j|fS�)N)r���r����<)�lstrip� startswithr���r���Z addr_spec)r���r�����address�restr���r���r����_getaddr���s����zSMTPChannel._getaddrc�����������������C���sH���i�}|D�]:}|��d�\}}}|���r,|r2|s2�d�S�|r:|nd||<�q|S�)N�=T)� partition�isalnum)r����params�resultZparam�eqre���r���r���r���� _getparams���s����zSMTPChannel._getparamsc�����������������C���s��|r�d}|����}|dkr$|��d��q�|dkr8|��d��q�|dkr^d}|�jrR||7�}|��|��q�|dkr�d }|�jrx||7�}|��|��q�|d kr�|��d��q�|dkr�|��d ��q�|dkr�|��d��q�|dkr�|��d��q�|dkr�|��d��q�|��d��n |��d��d�S�)N� [SP <mail-parameters>]ZEHLOz250 Syntax: EHLO hostnameZHELOz250 Syntax: HELO hostnamer����z 250 Syntax: MAIL FROM: <address>ZRCPTz250 Syntax: RCPT TO: <address>r}���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)r����rQ���rF���)r���r����ZextendedZlc_argr���r���r���r���� smtp_HELP���s:����zSMTPChannel.smtp_HELPc�����������������C���s@���|r2|���|�\}}|r"|��d��q<|��d|���n |��d��d�S�)NzB252 Cannot VRFY user, but will accept message and attempt deliveryz502 Could not VRFY %sz501 Syntax: VRFY <address>)r����rQ���)r���r����r����r����r���r���r���� smtp_VRFY���s����zSMTPChannel.smtp_VRFYc�����������������C���s���|�j�s|��d��d�S�td|td��d}|�jr4|d7�}|d�krJ|��|��d�S�|��d|�}|��|�\}}|sv|��|��d�S�|�js�|r�|��|��d�S�|�jr�|��d��d�S�|���� ��|�_ |��|�j �}|d�kr�|��|��d�S�|�js�|� dd �}|d kr�|��d��d�S�|�j�r8|� dd �}|dk�r d|�_n|d k �r8|��d��d�S�|� dd��}|�r�|����sb|��|��d�S�|�j�r�t|�|�jk�r�|��d��d�S�t|����dk�r�|��d��d�S�||�_td|�jtd��|��d��d�S�)N�503 Error: send HELO firstz ===> MAILr���z 501 Syntax: MAIL FROM: <address>r����zFROM:z503 Error: nested MAIL commandZBODY�7BIT)r����Z8BITMIMEz1501 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:r����)rE���rQ���r���rP���rF���r����r����rW���r����r����r����r����r=����popr<���rY����isdigitr;����intr~����keys)r���r����� syntaxerrr����r����Zbody�smtputf8�sizer���r���r���� smtp_MAIL��sh���� zSMTPChannel.smtp_MAILc�����������������C���s��|�j�s|��d��d�S�td|td��|�js6|��d��d�S�d}|�jrH|d7�}|d�kr^|��|��d�S�|��d|�}|��|�\}}|s�|��|��d�S�|�js�|r�|��|��d�S�|���� ��|�_ |��|�j �}|d�kr�|��|��d�S�t|� ���dkr�|��d ��d�S�|�j�|��td |�jtd��|��d��d�S�)Nr����z ===> RCPTr���z503 Error: need MAIL commandz501 Syntax: RCPT TO: <address>r����zTO:r���z8555 RCPT TO parameters not recognized or not implementedzrecips:r����)rE���rQ���r���rP���rW���rF���r����r����r����r����r����r����r~���r����rX���r���)r���r����r����r����r����r���r���r���� smtp_RCPT7��s@���� zSMTPChannel.smtp_RCPTc�����������������C���s(���|r|���d��d�S�|�����|���d��d�S�)Nz501 Syntax: RSETr����)rQ���rD���r����r���r���r���� smtp_RSETZ��s ���� zSMTPChannel.smtp_RSETc�����������������C���sZ���|�j�s|��d��d�S�|�js(|��d��d�S�|r:|��d��d�S�|�j|�_|��d��|��d��d�S�)Nr����z503 Error: need RCPT commandz501 Syntax: DATAs��� . z#354 End data with <CR><LF>.<CR><LF>)rE���rQ���rX���r}���rV���r[���r����r���r���r���� smtp_DATAa��s���� zSMTPChannel.smtp_DATAc�����������������C���s���|���d��d�S�)Nz502 EXPN not implementedr����r����r���r���r���� smtp_EXPNp��s����zSMTPChannel.smtp_EXPN),r���r���r���rU���r}���r+����collections�defaultdictr(����propertyr,����DATA_SIZE_DEFAULTr7���r\���rD���Z_SMTPChannel__server�setterZ_SMTPChannel__lineZ_SMTPChannel__stateZ_SMTPChannel__greetingZ_SMTPChannel__mailfromZ_SMTPChannel__rcpttosZ_SMTPChannel__dataZ_SMTPChannel__fqdnZ_SMTPChannel__peerZ_SMTPChannel__connZ_SMTPChannel__addrrQ���r����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��zNt j |dt ji�}|��|d�d�|d�d���|�� ���|��|��|��d��W�n���|�������Y�n(X�td|�jjt�t����||f�td��d�S�) Nr/���r-����typer���r$�������z0%s started at %s Local addr: %s Remote addr:%sr���)Z _localaddr�_remoteaddrr;���r<���r=���r*����asyncore� dispatcherr7���rH���ZgetaddrinfoZSOCK_STREAMZ create_socketZset_reuse_addrZbindZlistenrL���r���� __class__r����time�ctimerP���)r���Z localaddrZ remoteaddrr;���r.���r<���rS���Zgai_resultsr���r���r���r7���x��s6����� ����zSMTPServer.__init__c�������������� ���C���s6���t�dt|��td��|��|�|||�j|�j|�j|�j�}d�S�)NzIncoming connection from %sr���)r���rO���rP���� channel_classr;����_mapr<���r=���)r���r9���r:���Zchannelr���r���r����handle_accepted���s�����zSMTPServer.handle_acceptedc�����������������K���s���t��d�S�r���)�NotImplementedError�r���rJ���rW���rX���r����r����r���r���r���r�������s����zSMTPServer.process_message) r���r���r���r���r����r����r7���r����r����r���r���r���r���r���t��s������ c�������������������@���s���e�Zd�Zdd��Zdd��ZdS�)r���c�����������������C���sl���d}|����}|D�]V}|rL|sLd|d��}t|t�s@t|�d��}t|��d}t|t�s^t|�}t|��qd�S�)Nr$���zX-Peer: r���rz���)� splitlines� isinstancer����rO����encoder���)r���rJ���r����Z inheaders�linesr����Z peerheaderr���r���r����_print_message_content���s���� z&DebuggingServer._print_message_contentc�����������������K���sX���t�d��|r@|�d�r&t�d|d����|�d�r@t�d|d����|��||��t�d��d�S�)Nz%---------- MESSAGE FOLLOWS ----------r����zmail options: %sr����zrcpt options: %s z%------------ END MESSAGE ------------)r����getr����r����r���r���r���r�������s���� zDebuggingServer.process_messageN)r���r���r���r����r����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�)Nr<���z$PureProxy does not support SMTPUTF8.�r*����superr���r7����r���rM���r�����r����r���r���r7������s����zPureProxy.__init__c����������� ������C���sf���|��d�}d}|D�]}|s�q(|d7�}q|�|d|d����t�|�}|��|||�}td|td��d�S�)Nr���r���r$���z X-Peer: %szwe got some refusals:r���)r�����insertrA���r�����_deliverr���rP���) r���rJ���rW���rX���r����r����r����r�����refusedr���r���r���r�������s���� zPureProxy.process_messagec�������������� ���C���s����dd�l�}i�}zB|���}|�|�jd�|�jd���z|�|||�}W�5�|����X�W�n��|jk r��}�ztdtd��|j }W�5�d�}~X�Y�nf�t |jfk r��}�zBtd|jtd��t |dd�}t |dd �} |D�]} || f|| <�q�W�5�d�}~X�Y�nX�|S�) Nr���r$���zgot SMTPRecipientsRefusedr���ZgotZ smtp_code���Z smtp_error�ignore)�smtplibZSMTPZconnectr�����quitZsendmailZSMTPRecipientsRefusedr���rP���Z recipientsrK���Z SMTPExceptionr����r����)r���rW���rX���r����r����r�����s�eZerrcode�errmsg�rr���r���r���r�������s$���� zPureProxy._deliver)r���r���r���r7���r����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�)Nr<���z'MailmanProxy does not support SMTPUTF8.r����r����r����r���r���r7��� ��s����zMailmanProxy.__init__c�����������������C���s*��ddl�m}�ddlm}�ddlm}�ddlm}�g�} |D�]t} | ����d�d�}|�d�}t|�dkrfq8|d�} t|�dkr�|d �}nd }|� | �r8|dkr�q8| � | | |f��q8| D�]\} } }|�| ��q�tdd � |�td��|r�|��|||�}td|td��i�}||�}|�|�}|�d��s&||d<�|�d��sDt�t����|d<�| D�]�\} } }td| td��|�| �}|�s�|j| dd�}||| <�|d k�r�|j|d d��n�|dk�r�|j|d d��nh|dk�r�|j|d d��nN|dk�r�|j|d d��n4|dk�rH|dk�rd|d <�nd!|d <�|j|d d���qHd�S�)"Nr���)�StringIO)�Utils)�Message)�MailList�@�-r`���r$���r���)r����admin�owner�requestr�����leavezforwarding recips:r����r���zwe got refusals:�fromZFrom�dateZDatezsending message to)�lock)�tolistr����)Ztoadminr����)Ztoownerr����)Z torequest)r����r����r����Z subscribeZSubjectZunsubscribe)�ior����ZMailmanr����r����r�����lowerr����r~���Zlist_existsr����remover���r����rP���r����r����r����r����ZEnqueue)r���rJ���rW���rX���r����r����r����r����r����Z listnamesZrcptZlocal�partsZlistnamer����r����Zmlistsr����r���Zmlistr���r���r���r������sb���� zMailmanProxy.process_message)r���r���r���r7���r����r����r���r���r����r���r �����s���c�������������������@���s���e�Zd�ZdZdZdZdZdS�)�OptionsTr���NF)r���r���r����setuid� classname� size_limitr<���r���r���r���r���r����_��s���r����c������������ ������C���sp��z.t���tjdd���dddddddd g�\}�}W�n.�t�jk r\�}�ztd|��W�5�d�}~X�Y�nX�t��}|�D�]�\}}|d kr�td��qh|dkr�tt��t�d��qh|d kr�d|_ qh|dkr�||_ qh|dkr�tjaqh|dkr�d|_ qh|dkrhzt|�}||_W�qh���td|�tjd��t�d��Y�qhX�qht|�dk��r<d}d}nPt|�dk��rX|d�}d}n4t|�dk��rx|d�}|d�}ntddt�|����|�d�} | dk��r�tdd|���|d�| ��|_zt|| d�d����|_W�n$�tk �r����tdd|���Y�nX�|�d�} | dk��rtdd|���|d�| ��|_zt|| d�d����|_W�n$�tk �rj���tdd|���Y�nX�|S�) Nr$���z nVhc:s:duzclass=Znosetuid�version�helpzsize=�debugr����)z-hz--helpr���)z-Vz --version)z-nz --nosetuidF)z-cz--class)z-dz--debug)z-uz --smtputf8T)z-sz--sizezInvalid size: r���zlocalhost:8025zlocalhost:25r`�������zInvalid arguments: %s�:zBad local spec: %szBad local port: %szBad remote spec: %szBad remote port: %s)�getoptr����argv�errorr#���r����r���rR���r!���r����r����r ���rP���r<���r����r����r~���� COMMASPACEr����r����� localhost� localportr*���� remotehost� remoteport) ZoptsrM���r�����options�optr����Zint_sizeZ localspecZ remotespecr����r���r���r���� parseargsf��sv������� r���__main__r1���r$���)r<���z7Cannot import module "pwd"; try running with -n option.r����nobodyr`���z3Cannot setuid "nobody"; try running with -n option.)r���)?r����osrN���r��r����rH���r����r5���r�����warningsr���Zemail._header_value_parserr���r����__all__r��ZprogramrR���r ���rP���rA���r��r����r#���r6���r���r����r���r���r���r ���r����r��r���r��r�����rfindZlastdot� __import__r����locals�modr��r����Zclass_r��r ��r ��r��r����r<����proxyr�����pwd�ImportErrorr���r ���r!����getpwnamr���PermissionErrorZloop�KeyboardInterruptr���r���r���r����<module>P���s�������� ����M-SB ��