403Webshell
Server IP : 178.105.222.151  /  Your IP : 216.73.216.38
Web Server : nginx/1.28.3
System : Linux MNK 7.0.0-15-generic #15-Ubuntu SMP PREEMPT_DYNAMIC Wed Apr 22 16:06:43 UTC 2026 x86_64
User : www-data ( 33)
PHP Version : 8.5.4
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /lib/python3.14/test/support/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3.14/test/support/__pycache__/smtpd.cpython-314.pyc
+
��3jYx��l�Rt^RIt^RIt^RIt^RIt^RIt^RIt^RIt^RIH	t	H
t
^RIHt^RI
HtHt.ROt]P"^,tR	t!R
R4t]!4sRtR
tRtR Rlt!RR]
P44t!RR]	P84t!RR]4t!RR]4t!RR4t Rt!]"R8XEd]!!4t#]#PHt$R]$9d8]$PKR4t&]'!]$R]&](!4])!4R.4t*]$]&^,Rt$M^RI+t*],!]*]$4t-]-!]#P\]#P^3]#P`]#Pb3]#Pd]#PfR7t4]#Pj'd2^RI6t6]6Pv!R4^,t<]Pj!]<4]	P|!4R#R# ]7d*]8!R]PrR7]Pt!^4Lqi;i ]=d*]8!R]PrR7]Pt!^4Lxi;i ]?dR#i;i)!a�An RFC 5321 smtp proxy with optional RFC 1870 and RFC 6531 extensions.

Usage: %(program)s [options] [localhost:localport [remotehost:remoteport]]

Options:

    --nosetuid
    -n
        This program generally tries to setuid 'nobody', unless this flag is
        set.  The setuid call will fail if this program is not run as root (in
        which case, use this flag).

    --version
    -V
        Print the version number and exit.

    --class classname
    -c classname
        Use 'classname' as the concrete SMTP proxy class.  Uses 'PureProxy' by
        default.

    --size limit
    -s limit
        Restrict the total size of the incoming message to "limit" number of
        bytes via the RFC 1870 SIZE extension.  Defaults to 33554432 bytes.

    --smtputf8
    -u
        Enable the SMTPUTF8 extension and behave as an RFC 6531 smtp proxy.

    --debug
    -d
        Turn on debugging prints.

    --help
    -h
        Print this message and exit.

Version: %(__version__)s

If localhost is not given then 'localhost' is used, and if localport is not
given then 8025 is used.  If remotehost is not given then 'localhost' is used,
and if remoteport is not given, then 25 is used.
N)�asyncore�asynchat)�warn)�
get_addr_spec�get_angle_addr�SMTPChannel�
SMTPServer�DebuggingServer�	PureProxyzPython SMTP proxy version 0.3c�,a�]tRt^\toRtRtRtVtR#)�Devnullc��R#�N���self�msgs&&�)/usr/lib/python3.14/test/support/smtpd.py�write�
Devnull.write]s��$�c��R#rr�rs&r�flush�
Devnull.flush^s��TrrN)�__name__�
__module__�__qualname__�__firstlineno__rr�__static_attributes__�__classdictcell__��
__classdict__s@rrr\s������rr�
z, i�c���\\\4,\PR7V'd\V\PR7\P
!V4R#)��fileN)�print�__doc__�globals�sys�stderr�exit)�coders&&r�usager/gs3��	�'�G�I�
�C�J�J�/�
�
�c��
�
�#��H�H�T�Nrc�(a�]tRt^nto^t^tRt]P!]3Rl4t	]
R4t]RRR3Rlt
RtRt]
R	4t]P"R
4t]
R4t]P"R4t]
R
4t]P"R4t]
R4t]P"R4t]
R4t]P"R4t]
R4t]P"R4t]
R4t]P"R4t]
R4t]P"R4t]
R4t]P"R4t]
R4t]P"R4t]
R4t]P"R4tRtR tR!tR"tR#t R$t!R%t"R&t#R't$R(t%R)t&R*t'R+t(R,t)R-t*R.t+R/t,R0t-Vt.R#)1ric��V#rr)�xs&r�<lambda>�SMTPChannel.<lambda>ss��qrc��\VPP44# \dTPu#i;ir)�max�command_size_limits�values�
ValueError�command_size_limitrs&r�max_command_size_limit�"SMTPChannel.max_command_size_limitus<��	+��t�/�/�6�6�8�9�9���	+��*�*�*�	+�s�"%�?�?NFc�\�\PPWVR7WnW nW0nW@nW`nWpnV'dV'd\R4hV'd"RVn
RVnRVn\VnM%RVn
RVn\R4VnRVnVP!4RVnR	VnVP&P)4\*P,!4VnVP14Vn\=R\?TP24\@R7TPCR
TP.:R\D:24R
# \4d<pTP74TP8\8P:8wdhR
p?R
#R
p?ii;i)��map�Fdecode_data and enable_SMTPUTF8 cannot be set to True at the same timer$�
�.r�
�.�
FNzPeer:r&z220 � )#r�
async_chat�__init__�smtp_server�conn�addr�data_size_limit�enable_SMTPUTF8�_decode_datar9�_emptystring�_linesep�_dotsep�NEWLINE�_newline�ord�_set_rset_state�
seen_greeting�
extended_smtpr7�clear�socket�getfqdn�fqdn�getpeername�peer�OSError�close�errno�ENOTCONNr(�repr�DEBUGSTREAM�push�__version__)	r�serverrJrKrLr?rM�decode_data�errs	&&&&&&&& rrH�SMTPChannel.__init__|sG�����$�$�T�S�$�9�!���	��	�.��.��'���{��@�A�
A�� "�D��"�D�M��D�L�#�D�M� #�D��#�D�M��t�9�D�L�!�D�M��������"���� � �&�&�(��N�N�$��	�	��(�(�*�D�I�	�g�t�D�I�I��[�9��	�	����K�8�9���	�
�J�J�L��y�y�E�N�N�*����
	�s�E%�%F+�00F&�&F+c��VPVnRVn.VnRVn^VnVP
R4R#)z/Reset state variables to their post-DATA state.NFrC)�COMMAND�
smtp_state�mailfrom�rcpttos�require_SMTPUTF8�	num_bytes�set_terminatorrs&r�_set_post_data_state� SMTPChannel._set_post_data_state�s8���,�,�����
���� %���������G�$rc�B�VP4RVn.VnR#)z.Reset all state variables except the greeting.r$N)rr�
received_data�received_linesrs&rrU�SMTPChannel._set_rset_state�s���!�!�#���� ��rc�<�\R\^4VP#)zTAccess to __server attribute on SMTPChannel is deprecated, use 'smtp_server' instead�r�DeprecationWarningrIrs&r�__server�SMTPChannel.__server�s!���(�);�Q�	@����rc�4�\R\^4WnR#)zRSetting __server attribute on SMTPChannel is deprecated, set 'smtp_server' insteadNry�r�values&&rr{r|�s���(�);�Q�	@� �rc�<�\R\^4VP#)zUAccess to __line attribute on SMTPChannel is deprecated, use 'received_lines' instead�rrzrvrs&r�__line�SMTPChannel.__line�s!���+�,>��	C��"�"�"rc�4�\R\^4WnR#)zSSetting __line attribute on SMTPChannel is deprecated, set 'received_lines' insteadNr�r~s&&rr�r��s���+�,>��	C�#�rc�<�\R\^4VP#)zRAccess to __state attribute on SMTPChannel is deprecated, use 'smtp_state' instead�rrzrlrs&r�__state�SMTPChannel.__state�s���'�(:�A�	?����rc�4�\R\^4WnR#)zPSetting __state attribute on SMTPChannel is deprecated, set 'smtp_state' insteadNr�r~s&&rr�r��s���'�(:�A�	?��rc�<�\R\^4VP#)zXAccess to __greeting attribute on SMTPChannel is deprecated, use 'seen_greeting' instead�rrzrVrs&r�
__greeting�SMTPChannel.__greeting��!���*�+=�q�	B��!�!�!rc�4�\R\^4WnR#)zVSetting __greeting attribute on SMTPChannel is deprecated, set 'seen_greeting' insteadNr�r~s&&rr�r������*�+=�q�	B�"�rc�<�\R\^4VP#)zSAccess to __mailfrom attribute on SMTPChannel is deprecated, use 'mailfrom' instead�rrzrmrs&r�
__mailfrom�SMTPChannel.__mailfrom�s���%�&8�!�	=��}�}�rc�4�\R\^4WnR#)zQSetting __mailfrom attribute on SMTPChannel is deprecated, set 'mailfrom' insteadNr�r~s&&rr�r��s���%�&8�!�	=��
rc�<�\R\^4VP#)zQAccess to __rcpttos attribute on SMTPChannel is deprecated, use 'rcpttos' instead�rrzrnrs&r�	__rcpttos�SMTPChannel.__rcpttos�s���$�%7��	<��|�|�rc�4�\R\^4WnR#)zOSetting __rcpttos attribute on SMTPChannel is deprecated, set 'rcpttos' insteadNr�r~s&&rr�r��s���$�%7��	<��rc�<�\R\^4VP#)zTAccess to __data attribute on SMTPChannel is deprecated, use 'received_data' instead�rrzrurs&r�__data�SMTPChannel.__data�r�rc�4�\R\^4WnR#)zRSetting __data attribute on SMTPChannel is deprecated, set 'received_data' insteadNr�r~s&&rr�r��r�rc�<�\R\^4VP#)zKAccess to __fqdn attribute on SMTPChannel is deprecated, use 'fqdn' instead�rrzr[rs&r�__fqdn�SMTPChannel.__fqdn����!�"4�a�	9��y�y�rc�4�\R\^4WnR#)zISetting __fqdn attribute on SMTPChannel is deprecated, set 'fqdn' insteadNr�r~s&&rr�r�����!�"4�a�	9��	rc�<�\R\^4VP#)zKAccess to __peer attribute on SMTPChannel is deprecated, use 'peer' instead�rrzr]rs&r�__peer�SMTPChannel.__peerr�rc�4�\R\^4WnR#)zISetting __peer attribute on SMTPChannel is deprecated, set 'peer' insteadNr�r~s&&rr�r�r�rc�<�\R\^4VP#)zKAccess to __conn attribute on SMTPChannel is deprecated, use 'conn' instead�rrzrJrs&r�__conn�SMTPChannel.__connr�rc�4�\R\^4WnR#)zISetting __conn attribute on SMTPChannel is deprecated, set 'conn' insteadNr�r~s&&rr�r�r�rc�<�\R\^4VP#)zKAccess to __addr attribute on SMTPChannel is deprecated, use 'addr' instead�rrzrKrs&r�__addr�SMTPChannel.__addr"r�rc�4�\R\^4WnR#)zISetting __addr attribute on SMTPChannel is deprecated, set 'addr' insteadNr�r~s&&rr�r�'r�rc��\PPT\VR,VP'dRMR44R#)rA�utf-8�asciiN)rrGrd�bytesrors&&rrd�SMTPChannel.push.s7����� � ��u��&�L�T�%:�%:�%:�'��(I�	Jrc���RpVPVP8XdVPpM'VPVP8Xd
VPpV'dVP
V8�dR#V'd#V;P
\
V4,
unVP'd(VPP\VR44R#VPPV4R#)Nr�)rlrkr;�DATArLrp�lenrNrv�append�str)r�data�limits&& r�collect_incoming_data�!SMTPChannel.collect_incoming_data3s������?�?�d�l�l�*��/�/�E�
�_�_��	�	�
)��(�(�E��T�^�^�e�+��
��N�N�c�$�i�'�N��������&�&�s�4��'9�:����&�&�t�,rc��VPPVP4p\R\	V4\
R7.VnVPVP8XEd.VP^uq nV'gVPR4R#VP'g
\VR4pVPR4pV^8dVP4pRpM,VRVP4pW^,RP4pVP'dVP V,MVP"pW&8�dVPR4R#\%VRV,R4pV'gVPRV,4R#V!V4R#VPVP&8wdVPR	4^VnR#VP('d6VPVP(8�dVPR
4^VnR#.pVP+VP,4FNp	V	'd3V	^,VP.8XdVP1V	R,4K=VP1V	4KP	VP2PV4VnVP6VP8VP:VP43p
/pVP'gRVP<R
VP>/pVP@PB!V
/VBpVPE4V'gVPR4R#VPV4R#)zData:r&z500 Error: bad syntaxNr�rFz500 Error: line too long�smtp_z&500 Error: command "%s" not recognizedz451 Internal confusionz552 Error: Too much mail data��NN�mail_options�rcpt_options�250 OK)#rO�joinrvr(rbrcrlrkrprdrNr��find�upper�striprWr7r:�getattrr�rL�splitrPrQr�rSrur]rmrnr�r�rI�process_messagerr)
r�line�sz�i�command�arg�max_sz�methodr��text�args�kwargs�statuss
&            r�found_terminator�SMTPChannel.found_terminatorCs���� � �%�%�d�&9�&9�:��
�g�t�D�z��4� ����?�?�d�l�l�*�!%�����B����	�	�1�2���$�$�$��4��)���	�	�#��A��1�u��*�*�,�����r��(�.�.�*���Q�3�4�j�&�&�(���-�-�-��.�.�w�7�37�3J�3J�
��{��	�	�4�5���T�7�W�#4�d�;�F���	�	�B�W�L�M���3�K�����$�)�)�+��	�	�2�3�!"�����#�#�#�����9M�9M�(M��	�	�9�:�!"�����D��
�
�4�=�=�1���D��G�t�|�|�3��K�K��R��)��K�K��%�	2�
"&���!3�!3�D�!9�D���I�I�t�}�}�d�l�l�D�<N�<N�O�D��F��$�$�$�"�D�$5�$5�"�D�$5�$5����%�%�5�5�t�F�v�F�F��%�%�'���	�	�(�#��	�	�&�!rc��V'gVPR4R#VP'dVPR4R#VP4WnVPRVP,4R#)z501 Syntax: HELO hostnameN�503 Duplicate HELO/EHLOz250 %s)rdrVrUr[�rr�s&&r�	smtp_HELO�SMTPChannel.smtp_HELO�sX����I�I�1�2�������I�I�/�0������ ���	�	�(�T�Y�Y�&�'rc��V'gVPR4R#VP'dVPR4R#VP4WnRVnVPRVP,4VP
'dBVPRVP
,4VPR;;,^,
uu&VP'gVPR4VP'd1VPR4VPR;;,^
,
uu&VPR	4R#)
z501 Syntax: EHLO hostnameNr�Tz250-%sz250-SIZE %s�MAILz250-8BITMIMEz250-SMTPUTF8z250 HELP)	rdrVrUrWr[rLr7rNrMr�s&&r�	smtp_EHLO�SMTPChannel.smtp_EHLO�s�����I�I�1�2�������I�I�/�0������ ��!����	�	�(�T�Y�Y�&�'������I�I�m�d�&:�&:�:�;��$�$�V�,��2�,�� � � ��I�I�n�%������I�I�n�%��$�$�V�,��2�,��	�	�*�rc�^�V'dVPR4R#VPR4R#)z501 Syntax: NOOPr�N�rdr�s&&r�	smtp_NOOP�SMTPChannel.smtp_NOOP�s����I�I�(�)��I�I�h�rc�H�VPR4VP4R#)z221 ByeN)rd�close_when_doner�s&&r�	smtp_QUIT�SMTPChannel.smtp_QUIT�s���	�	�)�����rc�p�\V4pVRVP4V8XdW#RP4#R#)Nr$)r�r�r�)r�keywordr��keylens&&& r�_strip_command_keyword�"SMTPChannel._strip_command_keyword�s8���W����w��<����7�*��w�<�%�%�'�'�rc���V'gR#VP4PR4'd\V4wr#M
\V4wr#V'gW#3#VPV3#)r$�<)r$r$)�lstrip�
startswithrr�	addr_spec)rr��address�rests&&  r�_getaddr�SMTPChannel._getaddr�sW����M��:�:�<�"�"�3�'�'�*�3�/�M�G�T�)�#�.�M�G���=� �� � �$�&�&rc��/pVFNpVPR4wr4pVP4'dV'dV'gR#V'dTMRW#&KP	V#)�=NT)�	partition�isalnum)r�params�result�param�eqrs&&    r�
_getparams�SMTPChannel._getparams�sJ�����E�$���s�3��E�u��=�=�?�?�b���%'�E�T�F�M�	�
�
rc���V'EdHRpVP4pVR8XdVPR4R#VR8XdVPR4R#VR8Xd0RpVP'd	WB,
pVPV4R#VR8Xd0RpVP'd	WB,
pVPV4R#VR	8XdVPR
4R#VR8XdVPR4R#VR
8XdVPR4R#VR8XdVPR4R#VR8XdVPR4R#VPR4R#VPR4R#)� [SP <mail-parameters>]�EHLOz250 Syntax: EHLO hostname�HELOz250 Syntax: HELO hostnamer�z 250 Syntax: MAIL FROM: <address>�RCPTz250 Syntax: RCPT TO: <address>r�z250 Syntax: DATA�RSETz250 Syntax: RSET�NOOPz250 Syntax: NOOP�QUITz250 Syntax: QUIT�VRFYz250 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 VRFYN)r�rdrW)rr��extended�lc_argrs&&   r�	smtp_HELP�SMTPChannel.smtp_HELP�s$���3�0�H��Y�Y�[�F�����	�	�5�6��6�!��	�	�5�6��6�!�8���%�%�%��O�C��	�	�#���6�!�6���%�%�%��O�C��	�	�#���6�!��	�	�,�-��6�!��	�	�,�-��6�!��	�	�,�-��6�!��	�	�,�-��6�!��	�	�6�7��	�	�5�6�
�I�I�,�
-rc���V'dIVPV4wr#V'dVPR4R#VPRV,4R#VPR4R#)zB252 Cannot VRFY user, but will accept message and attempt deliveryz502 Could not VRFY %sz501 Syntax: VRFY <address>N)r�rd)rr�r�rs&&  r�	smtp_VRFY�SMTPChannel.smtp_VRFY�sJ���"�m�m�C�0�O�G���	�	�1�2��	�	�1�C�7�8��I�I�2�3rc��VP'gVPR4R#\RV\R7RpVP'd
VR,
pVfVPV4R#VPRV4pVP
V4wr4V'gVPV4R#VP'gV'dVPV4R#VP'dVPR4R#VP4P4Vn
VPVP4pVfVPV4R#VP'g-VPRR	4pVR9dVPR
4R#VP'd:VPRR4pVR
Jd	R
VnMVRJdVPR4R#VPRR4pV'diVP!4'gVPV4R#VP"'d.\%V4VP"8�dVPR4R#\'VP)44^8�dVPR4R#W0n\RVP\R7VPR4R#)�503 Error: send HELO firstNz	===> MAILr&z 501 Syntax: MAIL FROM: <address>r	zFROM:z503 Error: nested MAIL command�BODY�7BITz1501 Error: BODY can only be one of 7BIT, 8BITMIME�SMTPUTF8FTz&501 Error: SMTPUTF8 takes no arguments�SIZEz:552 Error: message size exceeds fixed maximum message sizez:555 MAIL FROM parameters not recognized or not implementedzsender:r�)r�8BITMIME)rVrdr(rcrWr�r�rmr�r�r�rrN�poprMro�isdigitrL�intr��keys)rr��	syntaxerrr�r�body�smtputf8�sizes&&      r�	smtp_MAIL�SMTPChannel.smtp_MAIL�s���!�!�!��I�I�2�3��
�k�3�[�1�6�	������2�2�I��;��I�I�i� ���)�)�'�3�7���-�-��,�����I�I�i� ���!�!�!�f��I�I�i� ���=�=�=��I�I�6�7��"�L�L�N�0�0�2�������!2�!2�3���>��I�I�i� ��� � � ��:�:�f�f�-�D��/�/��	�	�M�N�������z�z�*�e�4�H��4��(,��%���&��	�	�B�C���z�z�&�$�'����<�<�>�>��	�	�)�$���%�%�%�#�d�)�d�6J�6J�*J��	�	�V�W���v�{�{�}���!��I�I�R�S���
�
�i����[�9��	�	�(�rc��VP'gVPR4R#\RV\R7VP'gVPR4R#RpVP
'd
VR,
pVfVPV4R#VP
RV4pVPV4wr4V'gVPV4R#VP
'gV'dVPV4R#VP4P4Vn
VPVP4pVfVPV4R#\VP44^8�dVPR4R#VPPV4\R	VP\R7VPR
4R#)rNz	===> RCPTr&z503 Error: need MAIL commandz501 Syntax: RCPT TO: <address>r	zTO:z8555 RCPT TO parameters not recognized or not implementedzrecips:r�)rVrdr(rcrmrWr�r�r�r�r�rr�r"rnr�)rr�r#r�rs&&   r�	smtp_RCPT�SMTPChannel.smtp_RCPT.sT���!�!�!��I�I�2�3��
�k�3�[�1��}�}�}��I�I�4�5��4�	������2�2�I��;��I�I�i� ���)�)�%��5���-�-��,�����I�I�i� ���!�!�!�f��I�I�i� ��"�L�L�N�0�0�2�������!2�!2�3���>��I�I�i� ���v�{�{�}���!��I�I�P�Q�������G�$�
�i����K�8��	�	�(�rc�~�V'dVPR4R#VP4VPR4R#)z501 Syntax: RSETNr�)rdrUr�s&&r�	smtp_RSET�SMTPChannel.smtp_RSETQs-����I�I�(�)�������	�	�(�rc�6�VP'gVPR4R#VP'gVPR4R#V'dVPR4R#VPVnVPR4VPR4R#)rNz503 Error: need RCPT commandz501 Syntax: DATAs
.
z#354 End data with <CR><LF>.<CR><LF>)rVrdrnr�rlrqr�s&&r�	smtp_DATA�SMTPChannel.smtp_DATAXsp���!�!�!��I�I�2�3���|�|�|��I�I�4�5����I�I�(�)���)�)������L�)��	�	�7�8rc�(�VPR4R#)z502 EXPN not implementedNr�r�s&&r�	smtp_EXPN�SMTPChannel.smtp_EXPNgs���	�	�,�-r)rNrQrOrPrSrKrJrLrMrWr[r�rmrpr]r�rnrurvrorVrIrl)/rrrrrkr�r:�collections�defaultdictr7�propertyr;�DATA_SIZE_DEFAULTrHrrrU�_SMTPChannel__server�setter�_SMTPChannel__line�_SMTPChannel__state�_SMTPChannel__greeting�_SMTPChannel__mailfrom�_SMTPChannel__rcpttos�_SMTPChannel__data�_SMTPChannel__fqdn�_SMTPChannel__peer�_SMTPChannel__conn�_SMTPChannel__addrrdr�r�r�r�r�r�r�r�rrrr'r*r-r0r3rr r!s@rrrns������G��D���%�1�1�;M�2P�Q��
�+��+�<M��5�e�%:�N%�!�� �� ��_�_�!��!�
�#��#��]�]�$��$�
����
�^�^� �� �
�"��"����#��#�
����������
����������
�"��"��]�]�#��#�
�����]�]����
�����]�]����
�����]�]����
�����]�]����J�

-� ;"�|
(��, ��
�	'�	�!-�F	4�4�l!�F�9�.�.rc�Ba�]tRtRto]t]RRR3RltRtRt	Rt
VtR#)rikNFc	��WnW nW0nWPnW`nV'dV'd\R4h\PPWR7\P'd^M\Pp\P!VRVR\P/pVPV^,^,V^,^,4VP4VP!V4VP#^4\%VP&P(:R\*P,!\*P*!44:RV:RV:2\.R7R# TP14h;i)	r@r>�family�typez started at z
	Local addr: z
	Remote addr:r&N)�
_localaddr�_remoteaddrrLrMrNr9r�
dispatcherrHrY�has_ipv6�AF_INET�getaddrinfo�SOCK_STREAM�
create_socket�set_reuse_addr�bind�listenr(�	__class__r�time�ctimercr_)	r�	localaddr�
remoteaddrrLr?rMrgrG�gai_resultss	&&&&&&&  rrH�SMTPServer.__init__os!��$��%��.��.��'���{��@�A�
A����$�$�T�$�3�	:� �/�/�/�Q�v�~�~�F� �,�,�i�F��F�28�2D�2D�F�K����{�1�~�a�0�+�a�.��2C�D����!��I�I�i� ��K�K��N�

����'�'����D�I�I�K�)@��:�'�-8�
:��		��J�J�L��s
�B.E&�&E9c	���\R\V4,\R7VPVVVVPVP
VPVP4pR#)zIncoming connection from %sr&N)r(rbrc�
channel_classrL�_maprMrN)rrJrK�channels&&& r�handle_accepted�SMTPServer.handle_accepted�sP��
�+�d�4�j�8�{�K��$�$�T�%)�%)�%)�%9�%9�%)�Y�Y�%)�%9�%9�%)�%6�%6�
8�rc��\h)ahOverride this abstract method to handle messages from the client.

peer is a tuple containing (ipaddr, port) of the client that made the
socket connection to our smtp port.

mailfrom is the raw address the client claims the message is coming
from.

rcpttos is a list of raw addresses the client wishes to deliver the
message to.

data is a string containing the entire full text of the message,
headers (if supplied) and all.  It has been 'de-transparencied'
according to RFC 821, Section 4.5.2.  In other words, a line
containing a '.' followed by other text has had the leading dot
removed.

kwargs is a dictionary containing additional information.  It is
empty if decode_data=True was given as init parameter, otherwise
it will contain the following keys:
    'mail_options': list of parameters to the mail command.  All
                    elements are uppercase strings.  Example:
                    ['BODY=8BITMIME', 'SMTPUTF8'].
    'rcpt_options': same, for the rcpt command.

This function should return None for a normal '250 Ok' response;
otherwise, it should return the desired response string in RFC 821
format.

)�NotImplementedError�rr]rmrnr�r�s&&&&&,rr��SMTPServer.process_message�s
��>"�!r)rNrIrJrLrM)rrrrrr\r8rHr_r�rr r!s@rrrks*�����M�"3��!&�E�:�:8�"�"rc�,a�]tRtRtoRtRtRtVtR#)r	i�c�N�^pVP4pVF�pV'dVV'gNRV^,,p\V\4'g\VP	R44p\V4^p\V\4'g\V4p\V4K�	R#)r�zX-Peer: r�N)�
splitlines�
isinstancer�rb�encoder()rr]r��	inheaders�linesr��
peerheaders&&&    r�_print_message_content�&DebuggingServer._print_message_content�s|���	����!���D���'�$�q�'�1�
�!�$��,�,�!%�j�&7�&7��&@�!A�J��j�!��	��d�C�(�(��D�z���$�K�rc�$�\R4V'daVPR4'd\RVR,,4VPR4'd\RVR,,4VPW4\R4R#)z%---------- MESSAGE FOLLOWS ----------r�zmail options: %sr�zrcpt options: %s
z%------------ END MESSAGE ------------N)r(�getrmrcs&&&&&,rr��DebuggingServer.process_message�si��
�5�6���z�z�.�)�)��(�6�.�+A�A�B��z�z�.�)�)��*�V�N�-C�C�D��#�#�D�/�
�5�6rrN)rrrrrmr�rr r!s@rr	r	�s�����"7�7rc�>aa�]tRtRtoV3RltRtRtRtVtV;t	#)r
i�c�r<�RV9dVR,'d\R4h\\V`!V/VBR#)rMz$PureProxy does not support SMTPUTF8.N)r9�superr
rH)rr�r�rTs&*,�rrH�PureProxy.__init__�s6�����&�6�2C�+D�+D��C�D�D�
�i��'��8��8rc��VPR4p^pVFpV'gM
V^,
pK	VPVRV^,,4\PV4pVP	W#V4p\RV\R7R#)r#z
X-Peer: %szwe got some refusals:r&N)r��insertrRr��_deliverr(rc)	rr]rmrnr�rkr�r��refuseds	&&&&&    rr��PureProxy.process_message�sr���
�
�4� ��
���D���
��F�A��	���Q��t�A�w�.�/��|�|�E�"���-�-��4�8��
�%�w�[�Arc�L�^RIp/pVP4pVPVP^,VP^,4VP	WV4pVP4V# TP4i;i TPd)p\R\R7TPpRp?T#Rp?i\TP3dPp\RTP\R7\TRR4p\TRR4p	TFp
Y�3YZ&K
	Rp?T#Rp?ii;i)	�Nzgot SMTPRecipientsRefusedr&�got�	smtp_code�
smtp_error�ignore���)�smtplib�SMTP�connectrJ�sendmail�quit�SMTPRecipientsRefusedr(rc�
recipientsr^�
SMTPExceptionrTr�)rrmrnr�r�ry�s�e�errcode�errmsg�rs&&&&       rrx�PureProxy._deliver�s������	/�����A�
�I�I�d�&�&�q�)�4�+;�+;�A�+>�?�
��*�*�X��=���������������,�,�	#��-�K�@��l�l�G������.�.�/�	/��%����;�7��a��b�1�G��Q��h�7�F���%�.��
�����	/�sC�AB�
A1�B�1B�B�D#�B:�:D#�D#�AD�D#r)
rrrrrHr�rxrr �
__classcell__)rTr"s@@rr
r
�s����9�
B��rc�&�]tRtRtRtRtRtRtRtR#)�OptionsiTr
NFr)	rrrr�setuid�	classname�
size_limitrMrrrrr�r�s��
�F��I��J��Orr�c��\P!\PR,R.RO4wr\4pXF�wrEVR9d\	^4KVR9d(\
\4\P!^4KGVR9d
RVn	KWVR9d	WSn
KfVR9d\PsKVR9d
RVn
K�VR9gK�\V4pWcnK�	\!X4^8dRpRpMe\!V4^8d
V^,pRpMI\!V4^8dV^,pV^,pM&\	^R	\"P%V4,4XP'R
4p	V	^8d\	^RV,4VRV	Vn\Wy^,R4VnXP'R
4p	V	^8d\	^R
V,4VRV	Vn\W�^,R4VnV# \Pdp\	^T4Rp?EL�Rp?ii;i \
RT,\PR7\P!^4EK5;i \,d\	^RT,4L�i;i \,d\	^RT,4T#i;i)r�z	nVhc:s:duNFTzInvalid size: r&zlocalhost:8025zlocalhost:25zInvalid arguments: %s�:zBad local spec: %szBad local port: %szBad remote spec: %szBad remote port: %s)zclass=�nosetuid�version�helpzsize=�debugr%)z-hz--help)z-Vz	--version)z-nz
--nosetuid)z-cz--class)z-dz--debug)z-uz
--smtputf8)z-sz--size)�getoptr+�argv�errorr/r�r(rer-r�r�r,rcrMr!r�r��
COMMASPACEr�r��	localhost�	localportr9�
remotehost�
remoteport)
�optsr�r��options�optr��int_size�	localspec�
remotespecr�s
          r�	parseargsr�sc����]�]��H�H�R�L�+�
��
���i�G�����"�"��!�H�
�'�
'��+���H�H�Q�K�
�(�
(�"�G�N�
�%�
%� #��
�%�
%��*�*�K�
�(�
(�&*�G�#�
�$�
$�
��s�8��%-�"�#�.�4�y�1�}�$�	�#�
�	�T��Q����G�	�#�
�	�T��Q����G�	��!�W�
�
�a�(�:�?�?�4�+@�@�A�	���s��A��1�u�
�a�%�	�1�2�!�"�1�
�G��3��	�A�#�$��0���	�����A��1�u�
�a�&��3�4�#�B�Q��G��5� ��a�C�D�!1�2����N��q�<�<��
�a�������,
��&��,�3�:�:�>��������,�3�
�a�%�	�1�2�3���5�
�a�&��3�4��N�5�sG�1H�H6�I7�,J�H3�H.�.H3�6:I4�7J�J�J=�<J=�__main__rB)rMz7Cannot import module "pwd"; try running with -n option.r&�nobodyz3Cannot setuid "nobody"; try running with -n option.)rrr	r
)r$)@r)r+�osr`r�rUrYr5�test.supportrr�warningsr�email._header_value_parserrr�__all__r��programrerrcrRr�r8r/rGrrKrr	r
r�r�rr�r��rfind�lastdot�
__import__r*�locals�modr�r��class_r�r�r�r�r�rM�proxyr��pwd�ImportErrorr(r,r-�getpwnamr��PermissionError�loop�KeyboardInterruptrrr�<module>r�s)��+�N�	��
��
��+��D����(�(�1�+��-����
�i��
��
�
����z.�(�%�%�z.�zK"��$�$�K"�\7�j�7�<*�
�*�Z��?�D�z���k�G��!�!�I�
�i���/�/�#�&����8�G�,�g�i���B�4�H���g�a�i�j�)�	��
�S�)�
$�F��G�%�%�w�'8�'8�9��&�&��(:�(:�;��%�%�w�7N�7N�
P�E��~�~�~�	�����h�'��*��	��I�I�f��
��
�
��7��"�	��K�RU�R\�R\�]��H�H�Q�K�	���	��G�c�j�j�Y��H�H�Q�K�	��
�
��
�s6�<G�G5�-H(�-G2�1G2�5-H%�$H%�(H3�2H3

Youez - 2016 - github.com/yon3zu
LinuXploit