OwlCyberSecurity - MANAGER
Edit File: smtpd.cpython-35.opt-2.pyc
���]"�������������������@���s��d��d�l��Z��d��d�l�Z�d��d�l�Z�d��d�l�Z�d��d�l�Z�d��d�l�Z�d��d�l�Z�d��d�l�Z�d��d�l�Z�d��d�l �m �Z �d��d�l�m�Z�m �Z �d�d�d�d�g�Z�e��j�d��Z�d�Z�Gd �d ����d ���Z�e����a�d�Z�d�Z�d �Z�d�d�d���Z�Gd�d����d�e�j���Z�Gd�d����d�e�j���Z�Gd�d����d�e���Z�Gd�d����d�e���Z�Gd�d����d�e���Z�Gd�d����d���Z�d�d����Z �e!�d�k�re ����Z"�e"�j#�Z#�d�e#�k�r�e#�j$�d���Z%�e&�e#�d�e%���e'����e(����d�g���Z)�e#�e%�d�d���Z#�n�d��d�l*�Z)�e+�e)�e#���Z,�e,�e"�j-�e"�j.�f�e"�j/�e"�j0�f�e"�j1�d�e"�j2��Z3�e"�j4�r�y�d��d�l5�Z5�Wn2�e6�k �r�e7�d�d �e��j8��e��j9�d���Yn�Xe5�j:�d!���d"�Z;�y�e�j4�e;���Wn2�e<�k �r�e7�d#�d �e��j8��e��j9�d���Yn�Xy�e�j=����Wn�e>�k �rYn�Xd�S)$�����N)�warn)� get_addr_spec�get_angle_addr� SMTPServer�DebuggingServer� PureProxy�MailmanProxyzPython SMTP proxy version 0.3c���������������@���s(���e��Z�d��Z�d�d����Z�d�d����Z�d�S)�Devnullc�������������C���s���d��S)N��)�self�msgr ���r ����*/opt/alt/python35/lib64/python3.5/smtpd.py�writec���s����z Devnull.writec�������������C���s���d��S)Nr ���)r���r ���r ���r ����flushd���s����z Devnull.flushN)�__name__� __module__�__qualname__r���r���r ���r ���r ���r ���r ���b���s���r ���� z, i�����c�������������C���sD���t��t�t����d�t�j��|�r3�t��|�d�t�j��t�j�|����d��S)N�file)�print�__doc__�globals�sys�stderr�exit)�coder���r ���r ���r ����usagem���s����r���c���������������@���s���e��Z�d��Z�d�Z�d�Z�d�Z�e�j�e�d�d�����Z�e �d�d������Z �e�d�d �d�d �d���Z�d�d ����Z �d�d����Z�e �d�d������Z�e�j�d�d������Z�e �d�d������Z�e�j�d�d������Z�e �d�d������Z�e�j�d�d������Z�e �d�d������Z�e�j�d�d������Z�e �d�d������Z�e�j�d�d������Z�e �d�d ������Z�e�j�d!�d ������Z�e �d"�d#������Z�e�j�d$�d#������Z�e �d%�d&������Z�e�j�d'�d&������Z�e �d(�d)������Z�e�j�d*�d)������Z�e �d+�d,������Z�e�j�d-�d,������Z�e �d.�d/������Z�e�j�d0�d/������Z�d1�d2����Z�d3�d4����Z�d5�d6����Z�d7�d8����Z�d9�d:����Z�d;�d<����Z �d=�d>����Z!�d?�d@����Z"�dA�dB����Z#�dC�dD����Z$�dE�dF����Z%�dG�dH����Z&�dI�dJ����Z'�dK�dL����Z(�dM�dN����Z)�dO�dP����Z*�dQ�dR����Z+�d�S)S�SMTPChannelr�������i���c�������������C���s���|��S)Nr ���)�xr ���r ���r ����<lambda>y���s����zSMTPChannel.<lambda>c�������������C���s7���y�t��|��j�j������SWn�t�k �r2�|��j�SYn�Xd��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��j�j�|��|�d�|��|�|��_�|�|��_�|�|��_�|�|��_�|�|��_�|�rd�|�r^�t�d�����d�}�|�d��k�r��t �d�t �d���d�}�|�|��_�|�r��d�|��_�d�|��_ �d �|��_�t�|��_�n*�d �|��_�d�|��_ �t�d���|��_�d �|��_�|��j����d�|��_�d�|��_�|��j�j����t�j����|��_�y�|�j����|��_�WnL�t�k �r}�z,�|��j����|�j�d�t�j �k�ri���d��SWYd��d��}�~�Xn�Xt!�d�t"�|��j���d�t#��|��j$�d�|��j�t%�f���d��S)N�mapzFdecode_data and enable_SMTPUTF8 cannot be set to True at the same timeFzgThe decode_data default of True will change to False in 3.6; specify an explicit value for this keyword����Tr���z �.�����s��� ����.s��� r���zPeer:r���z 220 %s %s)&�asynchat� async_chat�__init__�smtp_server�conn�addr�data_size_limit�enable_SMTPUTF8r%���r����DeprecationWarning�_decode_data�_emptystring�_linesep�_dotsep�NEWLINE�_newline�ord�_set_rset_state� seen_greeting� extended_smtpr#����clear�socket�getfqdn�fqdn�getpeername�peer�OSError�close�args�errnoZENOTCONNr����repr�DEBUGSTREAM�push�__version__) r���Zserverr1���r2���r3���r(���r4����decode_data�errr ���r ���r ���r/�������sL���� zSMTPChannel.__init__c�������������C���sA���|��j��|��_�d��|��_�g��|��_�d�|��_�d�|��_�|��j�d���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���)rW���� received_data�received_lines)r���r ���r ���r ���r=�������s���� zSMTPChannel._set_rset_statec�������������C���s���t��d�t�d���|��j�S)NzTAccess to __server attribute on SMTPChannel is deprecated, use 'smtp_server' insteadr)���)r���r5���r0���)r���r ���r ���r ����__server����s���� zSMTPChannel.__serverc�������������C���s���t��d�t�d���|�|��_�d��S)NzRSetting __server attribute on SMTPChannel is deprecated, set 'smtp_server' insteadr)���)r���r5���r0���)r����valuer ���r ���r ���rZ�������s���� c�������������C���s���t��d�t�d���|��j�S)NzUAccess to __line attribute on SMTPChannel is deprecated, use 'received_lines' insteadr)���)r���r5���rY���)r���r ���r ���r ����__line����s���� zSMTPChannel.__linec�������������C���s���t��d�t�d���|�|��_�d��S)NzSSetting __line attribute on SMTPChannel is deprecated, set 'received_lines' insteadr)���)r���r5���rY���)r���r[���r ���r ���r ���r\�������s���� c�������������C���s���t��d�t�d���|��j�S)NzRAccess to __state attribute on SMTPChannel is deprecated, use 'smtp_state' insteadr)���)r���r5���rQ���)r���r ���r ���r ����__state����s���� zSMTPChannel.__statec�������������C���s���t��d�t�d���|�|��_�d��S)NzPSetting __state attribute on SMTPChannel is deprecated, set 'smtp_state' insteadr)���)r���r5���rQ���)r���r[���r ���r ���r ���r]�������s���� c�������������C���s���t��d�t�d���|��j�S)NzXAccess to __greeting attribute on SMTPChannel is deprecated, use 'seen_greeting' insteadr)���)r���r5���r>���)r���r ���r ���r ���� __greeting����s���� zSMTPChannel.__greetingc�������������C���s���t��d�t�d���|�|��_�d��S)NzVSetting __greeting attribute on SMTPChannel is deprecated, set 'seen_greeting' insteadr)���)r���r5���r>���)r���r[���r ���r ���r ���r^�������s���� c�������������C���s���t��d�t�d���|��j�S)NzSAccess to __mailfrom attribute on SMTPChannel is deprecated, use 'mailfrom' insteadr)���)r���r5���rR���)r���r ���r ���r ���� __mailfrom����s���� zSMTPChannel.__mailfromc�������������C���s���t��d�t�d���|�|��_�d��S)NzQSetting __mailfrom attribute on SMTPChannel is deprecated, set 'mailfrom' insteadr)���)r���r5���rR���)r���r[���r ���r ���r ���r_�������s���� c�������������C���s���t��d�t�d���|��j�S)NzQAccess to __rcpttos attribute on SMTPChannel is deprecated, use 'rcpttos' insteadr)���)r���r5���rS���)r���r ���r ���r ���� __rcpttos����s���� zSMTPChannel.__rcpttosc�������������C���s���t��d�t�d���|�|��_�d��S)NzOSetting __rcpttos attribute on SMTPChannel is deprecated, set 'rcpttos' insteadr)���)r���r5���rS���)r���r[���r ���r ���r ���r`�������s���� c�������������C���s���t��d�t�d���|��j�S)NzTAccess to __data attribute on SMTPChannel is deprecated, use 'received_data' insteadr)���)r���r5���rX���)r���r ���r ���r ����__data��s���� zSMTPChannel.__datac�������������C���s���t��d�t�d���|�|��_�d��S)NzRSetting __data attribute on SMTPChannel is deprecated, set 'received_data' insteadr)���)r���r5���rX���)r���r[���r ���r ���r ���ra�����s���� c�������������C���s���t��d�t�d���|��j�S)NzKAccess to __fqdn attribute on SMTPChannel is deprecated, use 'fqdn' insteadr)���)r���r5���rC���)r���r ���r ���r ����__fqdn��s���� zSMTPChannel.__fqdnc�������������C���s���t��d�t�d���|�|��_�d��S)NzISetting __fqdn attribute on SMTPChannel is deprecated, set 'fqdn' insteadr)���)r���r5���rC���)r���r[���r ���r ���r ���rb�����s���� c�������������C���s���t��d�t�d���|��j�S)NzKAccess to __peer attribute on SMTPChannel is deprecated, use 'peer' insteadr)���)r���r5���rE���)r���r ���r ���r ����__peer��s���� zSMTPChannel.__peerc�������������C���s���t��d�t�d���|�|��_�d��S)NzISetting __peer attribute on SMTPChannel is deprecated, set 'peer' insteadr)���)r���r5���rE���)r���r[���r ���r ���r ���rc�����s���� c�������������C���s���t��d�t�d���|��j�S)NzKAccess to __conn attribute on SMTPChannel is deprecated, use 'conn' insteadr)���)r���r5���r1���)r���r ���r ���r ����__conn$��s���� zSMTPChannel.__connc�������������C���s���t��d�t�d���|�|��_�d��S)NzISetting __conn attribute on SMTPChannel is deprecated, set 'conn' insteadr)���)r���r5���r1���)r���r[���r ���r ���r ���rd���)��s���� c�������������C���s���t��d�t�d���|��j�S)NzKAccess to __addr attribute on SMTPChannel is deprecated, use 'addr' insteadr)���)r���r5���r2���)r���r ���r ���r ����__addr/��s���� zSMTPChannel.__addrc�������������C���s���t��d�t�d���|�|��_�d��S)NzISetting __addr attribute on SMTPChannel is deprecated, set 'addr' insteadr)���)r���r5���r2���)r���r[���r ���r ���r ���re���4��s���� c�������������C���s3���t��j�j�|��t�|�d�|��j�r%�d�n�d�����d��S)Nz zutf-8�ascii)r-���r.���rL����bytesrT���)r���r���r ���r ���r ���rL���;��s����zSMTPChannel.pushc�������������C���s����d��}�|��j��|��j�k�r$�|��j�}�n�|��j��|��j�k�r?�|��j�}�|�rX�|��j�|�k�rX�d��S|�rs�|��j�t�|���7_�|��j�r��|��j�j �t �|�d�����n�|��j�j �|���d��S)Nzutf-8)rQ���rP���r'����DATAr3���rU����lenr6���rY����append�str)r����data�limitr ���r ���r ����collect_incoming_data@��s���� z!SMTPChannel.collect_incoming_datac������� ������C���s���|��j��j�|��j���}�t�d�t�|���d�t��g��|��_�|��j�|��j�k�rf|��j�d�}�|��_�|�ss�|��j �d���d��S|��j �s��t�|�d���}�|�j�d���}�|�d�k��r��|�j ����}�d��}�n0�|�d��|���j ����}�|�|�d�d����j����}�|��j�r|��j�|�n�|��j�}�|�|�k�r'|��j �d���d��St�|��d �|�d����}�|�sX|��j �d �|���d��S|�|���d��S|��j�|��j�k�r�|��j �d���d�|��_�d��S|��j�r�|��j�|��j�k�r�|��j �d���d�|��_�d��Sg��}�xZ�|�j�|��j���D]F�} �| �r| �d�|��j�k�r|�j�| �d�d������q�|�j�| ���q�W|��j�j�|���|��_�|��j�|��j�|��j�|��j�f�} �i��}�|��j �s�d �|��j�d�|��j�i�}�|��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)#r7����joinrY���r���rJ���rK���rQ���rP���rU���rL���r6���rk����find�upper�stripr?���r#���r&����getattrrh���r3����splitr8���r9���rj���r;���rX���rE���rR���rS���rp���rq���r0����process_messagerW���) r����lineZsz�i�command�argZmax_sz�methodrl����textrH����kwargs�statusr ���r ���r ����found_terminatorP��sd���� zSMTPChannel.found_terminatorc�������������C���s\���|�s�|��j��d���d��S|��j�r1�|��j��d���d��S|��j����|�|��_�|��j��d�|��j���d��S)Nz501 Syntax: HELO hostnamez503 Duplicate HELO/EHLOz250 %s)rL���r>���r=���rC���)r���r|���r ���r ���r ���� smtp_HELO���s���� zSMTPChannel.smtp_HELOc�������������C���s����|�s�|��j��d���d��S|��j�r1�|��j��d���d��S|��j����|�|��_�d�|��_�|��j��d�|��j���|��j�r��|��j��d�|��j���|��j�d�d�7<|��j�s��|��j��d���|��j�r��|��j��d ���|��j�d�d �7<|��j��d���d��S)Nz501 Syntax: EHLO hostnamez503 Duplicate HELO/EHLOTz250-%sz250-SIZE %s�MAIL����z250-8BITMIMEz250-SMTPUTF8� ���z250 HELP) rL���r>���r=���r?���rC���r3���r#���r6���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)rL���)r���r|���r ���r ���r ���� smtp_NOOP���s����zSMTPChannel.smtp_NOOPc�������������C���s���|��j��d���|��j����d��S)Nz221 Bye)rL���Zclose_when_done)r���r|���r ���r ���r ���� smtp_QUIT���s���� zSMTPChannel.smtp_QUITc�������������C���s@���t��|���}�|�d��|���j����|�k�r<�|�|�d����j����Sd�S)Nr���)ri���rt���ru���)r����keywordr|���Zkeylenr ���r ���r ����_strip_command_keyword���s����z"SMTPChannel._strip_command_keywordc�������������C���sc���|�s �d�S|�j�����j�d���r4�t�|���\�}�}�n�t�|���\�}�}�|�sV�|�|�f�S|�j�|�f�S)Nr����<)r���r���)�lstrip� startswithr���r���Z addr_spec)r���r|����address�restr ���r ���r ����_getaddr���s���� zSMTPChannel._getaddrc�������������C���sg���i��}�xZ�|�D]R�}�|�j��d���\�}�}�}�|�j����sE�|�rI�|�rI�d��S|�rU�|�n�d�|�|�<q �W|�S)N�=T)� partition�isalnum)r����params�resultZparam�eqr[���r ���r ���r ���� _getparams���s���� zSMTPChannel._getparamsc�������������C���sg��|�rVd�}�|�j�����}�|�d�k�r4�|��j�d���qc|�d�k�rP�|��j�d���qc|�d�k�r��d�}�|��j�ru�|�|�7}�|��j�|���qc|�d�k�r��d �}�|��j�r��|�|�7}�|��j�|���qc|�d �k�r��|��j�d���qc|�d�k�r��|��j�d ���qc|�d�k�r|��j�d���qc|�d�k�r*|��j�d���qc|�d�k�rF|��j�d���qc|��j�d���n �|��j�d���d��S)Nz [SP <mail-parameters>]ZEHLOz250 Syntax: EHLO hostnameZHELOz250 Syntax: HELO hostnamer����z 250 Syntax: MAIL FROM: <address>ZRCPTz250 Syntax: RCPT TO: <address>rh���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)rt���rL���r?���)r���r|���ZextendedZlc_argr���r ���r ���r ���� smtp_HELP���s:���� zSMTPChannel.smtp_HELPc�������������C���sV���|�rE�|��j��|���\�}�}�|�r1�|��j�d���qR�|��j�d�|���n �|��j�d���d��S)NzB252 Cannot VRFY user, but will accept message and attempt deliveryz502 Could not VRFY %sz501 Syntax: VRFY <address>)r����rL���)r���r|���r����r����r ���r ���r ���� smtp_VRFY���s����zSMTPChannel.smtp_VRFYc�������������C���se��|��j��s�|��j�d���d��St�d�|�d�t��d�}�|��j�rF�|�d�7}�|�d��k�rc�|��j�|���d��S|��j�d�|���}�|��j�|���\�}�}�|�s��|��j�|���d��S|��j�r��|�r��|��j�|���d��S|��j�r��|��j�d���d��S|�j����j ����|��_ �|��j�|��j ���}�|�d��k�r |��j�|���d��S|��j�sX|�j �d�d ���}�|�d�k�rX|��j�d���d��S|��j�r�|�j �d�d ���}�|�d�k�r�d�|��_�n�|�d �k �r�|��j�d���d��S|�j �d�d����}�|�r|�j����s�|��j�|���d��S|��j�rt�|���|��j�k�r|��j�d���d��St�|�j������d�k�r5|��j�d���d��S|�|��_�t�d�|��j�d�t��|��j�d���d��S)Nz503 Error: send HELO firstz ===> MAILr���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>���rL���r���rK���r?���r����r����rR���rt���rw���rp���r����r6����popr4���rT����isdigitr3����intri����keys)r���r|���� syntaxerrr����r����Zbody�smtputf8�sizer ���r ���r ���� smtp_MAIL��sh���� zSMTPChannel.smtp_MAILc�������������C���s���|��j��s�|��j�d���d��St�d�|�d�t��|��j�sG�|��j�d���d��Sd�}�|��j�r`�|�d�7}�|�d��k�r}�|��j�|���d��S|��j�d�|���}�|��j�|���\�}�}�|�s��|��j�|���d��S|��j�r��|�r��|��j�|���d��S|�j����j ����|��_ �|��j�|��j ���}�|�d��k�r |��j�|���d��St�|�j ������d�k�rI|��j�d ���d��S|��j�j�|���t�d �|��j�d�t��|��j�d���d��S)Nz503 Error: send HELO firstz ===> RCPTr���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>���rL���r���rK���rR���r?���r����r����rt���rw���rq���r����ri���r����rS���rj���)r���r|���r����r����r����r ���r ���r ���� smtp_RCPT;��s@���� zSMTPChannel.smtp_RCPTc�������������C���s2���|�r�|��j��d���d��S|��j����|��j��d���d��S)Nz501 Syntax: RSETz250 OK)rL���r=���)r���r|���r ���r ���r ���� smtp_RSET^��s ���� zSMTPChannel.smtp_RSETc�������������C���su���|��j��s�|��j�d���d��S|��j�s4�|��j�d���d��S|�rK�|��j�d���d��S|��j�|��_�|��j�d���|��j�d���d��S)Nz503 Error: send HELO firstz503 Error: need RCPT commandz501 Syntax: DATAs��� . z#354 End data with <CR><LF>.<CR><LF>)r>���rL���rS���rh���rQ���rV���)r���r|���r ���r ���r ���� smtp_DATAe��s���� zSMTPChannel.smtp_DATAc�������������C���s���|��j��d���d��S)Nz502 EXPN not implemented)rL���)r���r|���r ���r ���r ���� smtp_EXPNt��s����zSMTPChannel.smtp_EXPN),r���r���r���rP���rh���r&����collections�defaultdictr#����propertyr'����DATA_SIZE_DEFAULTr/���rW���r=���Z_SMTPChannel__server�setterZ_SMTPChannel__lineZ_SMTPChannel__stateZ_SMTPChannel__greetingZ_SMTPChannel__mailfromZ_SMTPChannel__rcpttosZ_SMTPChannel__dataZ_SMTPChannel__fqdnZ_SMTPChannel__peerZ_SMTPChannel__connZ_SMTPChannel__addrrL���rn���r����r����r����r����r����r����r����r����r����r����r����r����r����r����r����r ���r ���r ���r ���r���t���s`���- >#6#r���c���������������@���sF���e��Z�d��Z�e�Z�e�d�d�d�d�d���Z�d�d����Z�d�d����Z�d�S) r���NFc�������������C���s4��|�|��_��|�|��_�|�|��_�|�|��_�|�rB�|�r<�t�d�����d�}�|�d��k�rd�t�d�t�d���d�}�|�|��_�t�j �j �|��d�|��y`�t�j�|�d�t�j ���}�|��j�|�d�d�|�d�d ���|��j����|��j�|���|��j�d ���Wn�|��j�������Yn6�Xt�d�|��j�j�t�j�t�j������|�|�f�d�t��d��S) NzVThe decode_data and enable_SMTPUTF8 parameters cannot be set to True at the same time.FzgThe decode_data default of True will change to False in 3.6; specify an explicit value for this keywordr)���Tr(����typer���r�������z0%s started at %s Local addr: %s Remote addr:%sr���)Z _localaddr�_remoteaddrr3���r4���r%���r���r5���r6����asyncore� dispatcherr/���rA����getaddrinfo�SOCK_STREAMZ create_socketZset_reuse_addr�bind�listenrG���r���� __class__r����time�ctimerK���)r���Z localaddrZ remoteaddrr3���r(���r4���rN���Zgai_resultsr ���r ���r ���r/���|��s6���� zSMTPServer.__init__c�������������C���sK���t��d�t�|���d�t��|��j�|��|�|�|��j�|��j�|��j�|��j���}�d��S)NzIncoming connection from %sr���)r���rJ���rK���� channel_classr3����_mapr4���r6���)r���r1���r2���Zchannelr ���r ���r ����handle_accepted���s���� zSMTPServer.handle_acceptedc�������������K���s ���t����d��S)N)�NotImplementedError)r���rE���rR���rS���rl���r���r ���r ���r ���rx������s����zSMTPServer.process_message) r���r���r���r���r����r����r/���r����rx���r ���r ���r ���r ���r���x��s ���"c���������������@���s(���e��Z�d��Z�d�d����Z�d�d����Z�d�S)r���c�������������C���s����d�}�|�j�����}�x��|�D]z�}�|�rn�|�rn�d�|�d�}�t�|�t���s^�t�|�j�d�����}�t�|���d�}�t�|�t���s��t�|���}�t�|���q�Wd��S)Nr���zX-Peer: r���zutf-8)� splitlines� isinstancerk���rJ����encoder���)r���rE���rl���Z inheaders�linesry���Z peerheaderr ���r ���r ����_print_message_content���s���� z&DebuggingServer._print_message_contentc�������������K���sp���t��d���|�rR�|�j�d���r1�t��d�|�d���|�j�d���rR�t��d�|�d���|��j�|�|���t��d���d��S)Nz%---------- MESSAGE FOLLOWS ----------rp���zmail options: %srq���zrcpt options: %s z%------------ END MESSAGE ------------)r����getr����)r���rE���rR���rS���rl���r���r ���r ���r ���rx������s���� zDebuggingServer.process_messageN)r���r���r���r����rx���r ���r ���r ���r ���r������s���c�������������������s:���e��Z�d��Z����f�d�d����Z�d�d����Z�d�d����Z����S)r���c����������������s?���d�|�k�r"�|�d�r"�t��d�����t�t�|����j�|�|����d��S)Nr4���z$PureProxy does not support SMTPUTF8.)r%����superr���r/���)r���rH���r���)r����r ���r ���r/������s����zPureProxy.__init__c������� ������C���s����|�j��d���}�d�}�x�|�D]�}�|�s)�P|�d�7}�q�W|�j�|�d�|�d���t�j�|���}�|��j�|�|�|���}�t�d�|�d�t��d��S)Nr���r���r���z X-Peer: %szwe got some refusals:r���)rw����insertr:���rr����_deliverr���rK���) r���rE���rR���rS���rl���r����rz���ry����refusedr ���r ���r ���rx������s���� zPureProxy.process_messagec�������������C���s7��d�d��l��}�i��}�yU�|�j����}�|�j�|��j�d�|��j�d���z�|�j�|�|�|���}�Wd��|�j����XWn��|�j�k �r��}�z�t�d�d�t��|�j �}�WYd��d��}�~�Xn��t �|�j�f�k �r2}�z`�t�d�|�j�d�t��t �|�d�d ���}�t �|�d�d���} �x�|�D]�} �|�| �f�|�| �<qWWYd��d��}�~�Xn�X|�S) Nr���r���zgot SMTPRecipientsRefusedr���ZgotZ smtp_codeZ smtp_error�ignore���)�smtplibZSMTP�connectr����Zsendmail�quitZSMTPRecipientsRefusedr���rK���Z recipientsrF���Z SMTPExceptionr����rv���)r���rR���rS���rl���r����r�����s�eZerrcode�errmsg�rr ���r ���r ���r�������s$���� 'zPureProxy._deliver)r���r���r���r/���rx���r����r ���r ���)r����r ���r������s���c�������������������s.���e��Z�d��Z����f�d�d����Z�d�d����Z����S)r���c����������������s?���d�|�k�r"�|�d�r"�t��d�����t�t�|����j�|�|����d��S)Nr4���z'MailmanProxy does not support SMTPUTF8.)r%���r����r���r/���)r���rH���r���)r����r ���r ���r/�����s����zMailmanProxy.__init__c�������������C���s���d�d�l��m�}�d�d�l�m�}�d�d�l�m�}�d�d�l�m�}�g��} �x��|�D]��} �| �j����j�d���d�}�|�j�d���}�t�|���d�k�r��qM�|�d�} �t�|���d�k�r��|�d �}�n�d �}�|�j �| ���sM�|�d!�k�r��qM�| �j �| �| �|�f���qM�Wx$�| �D]�\�} �} �}�|�j�| ���q��Wt�d�d�j �|���d�t��|�ri|��j�|�|�|���}�t�d�|�d�t��i��}�|�|���}�|�j�|���}�|�j�d���s�|�|�d�<|�j�d���s�t�j�t�j������|�d�<x(| �D] \�} �} �}�t�d�| �d�t��|�j�| ���}�|�s(|�j�| �d�d��}�|�|�| �<|�d �k�rJ|�j�|�d�d ��q�|�d�k�rl|�j�|�d�d ��q�|�d�k�r�|�j�|�d�d ��q�|�d �k�r�|�j�|�d�d ��q�|�d"�k�r�|�d�k�r�d�|�d�<n �d �|�d�<|�j�|�d�d ��q�Wd��S)#Nr���)�StringIO)�Utils)�Message)�MailList�@�-r)���r���r����admin�owner�requestrr����leavezforwarding recips:ro���r���zwe got refusals:�fromZFromZdateZDatezsending message to�lock�tolistZtoadminZtoownerZ torequestZ subscribeZSubjectZunsubscribe)r���r����r����r����rr���r����)rr���r����)�ior����ZMailmanr����r����r�����lowerrw���ri���Zlist_existsrj����remover���rr���rK���r����r����r����r����ZEnqueue)r���rE���rR���rS���rl���r����r����r����r����Z listnamesZrcpt�local�partsZlistnamer{���r����Zmlistsr����r���Zmlistr ���r ���r ���rx�����sd���� zMailmanProxy.process_message)r���r���r���r/���rx���r ���r ���)r����r ���r�����s���c���������������@���s(���e��Z�d��Z�d�Z�d�Z�d�Z�d�Z�d�S)�OptionsTr���NF)r���r���r����setuid� classname� size_limitr4���r ���r ���r ���r ���r����k��s���r����c�������� ���!���C���s%��yA�t��j��t�j�d�d����d�d�d�d�d�d�d�d �g���\�}��}�Wn5�t��j�k �rx�}�z�t�d�|���WYd��d��}�~�Xn�Xt����}�x|��D]��\�}�}�|�d'�k�r��t�d���q��|�d(�k�r��t�t���t�j�d���q��|�d)�k�r��d�|�_ �q��|�d*�k�r|�|�_ �q��|�d+�k�rt�j�a�q��|�d,�k�r4d�|�_ �q��|�d-�k�r��y�t�|���}�|�|�_�Wq��t�d�|�d�t�j��t�j�d���Yq��Xq��Wt�|���d�k��r�d�}�d�}�nh�t�|���d�k��r�|�d�}�d�}�nC�t�|���d �k��r�|�d�}�|�d�}�n�t�d�d!�t�j�|�����|�j�d"���} �| �d�k��rAt�d�d#�|���|�d��| ���|�_�y!�t�|�| �d�d������|�_�Wn#�t�k �r�t�d�d$�|���Yn�X|�j�d"���} �| �d�k��r�t�d�d%�|���|�d��| ���|�_�y!�t�|�| �d�d������|�_�Wn#�t�k �r t�d�d&�|���Yn�X|�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:25r)�������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���rM���r���r����r����r���rK���r4���r����r����ri���� COMMASPACErr���rs���� localhost� localportr%���� remotehost� remoteport) ZoptsrH���r�����options�optr|���Zint_sizeZ localspecZ remotespecrz���r ���r ���r ���� parseargsr��sp���� ! ! r���__main__r*���r���r4���z7Cannot import module "pwd"; try running with -n option.r����nobodyr)���z3Cannot setuid "nobody"; try running with -n option.)?r����osrI���r����r����rA���r����r-���r�����warningsr���Zemail._header_value_parserr���r����__all__r����ZprogramrM���r ���rK���r:���r����r����r���r.���r���r����r���r���r���r���r����r��r���r��r�����rfindZlastdot� __import__r����locals�modr��rv����class_r����r����r����r���r����r4����proxyr�����pwd�ImportErrorr���r���r����getpwnamr���PermissionErrorZloop�KeyboardInterruptr ���r ���r ���r ����<module>P���sp��� ����U-SB (