python (3.12.0)

(root)/
lib/
python3.12/
test/
__pycache__/
smtpd.cpython-312.opt-2.pyc

͑e
x&	ddlZddlZddlZddlZddlZddlZddlZddlmZm	Z	ddl
mZddlm
Z
mZgdZej dZdZGddZead	Zd
ZdZd"d
ZGdde	j2ZGddej6ZGddeZGddeZGddZdZ e!dk(re Z"e"jFZ#de#vr3e#jIdZ%e&e#de%e'e(dgZ)e#e%dzdZ#nddl*Z)e+e)e#Z,e,e"jZe"j\fe"j^e"j`fe"jbe"jdZ3e"jhr-	ddl5Z5e5jtdd Z;	ejhe;	ejzyy#e6$r)e7dejpejrdYiwxYw#e<$r)e7d!ejpejrdYrwxYw#e>$rYywxYw)#N)asyncoreasynchat)warn)
get_addr_specget_angle_addr)SMTPChannel
SMTPServerDebuggingServer	PureProxyzPython SMTP proxy version 0.3ceZdZdZdZy)DevnullcyNselfmsgs  >/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/test/smtpd.pywritez
Devnull.write]cyrrrs rflushz
Devnull.flush^rrN)__name__
__module____qualname__rrrrrr
r
\srr

z, ictttztj|rt|tjtj
|y)Nfile)print__doc__globalssysstderrexit)coders  rusager*gs3	'GI
CJJ/

c

#HHTNrceZdZdZdZdZejefdZe	dZ
edddfdZd	Z
d
Ze	dZej dZe	d
Zej dZe	dZej dZe	dZej dZe	dZej dZe	dZej dZe	dZej dZe	dZej dZe	dZej dZe	dZej dZe	dZej d Zd!Zd"Zd#Zd$Zd%Zd&Z d'Z!d(Z"d)Z#d*Z$d+Z%d,Z&d-Z'd.Z(d/Z)d0Z*d1Z+y)2rric|Srr)xs r<lambda>zSMTPChannel.<lambda>ssqrc	t|jjS#t$r|jcYSwxYwr)maxcommand_size_limitsvalues
ValueErrorcommand_size_limitrs rmax_command_size_limitz"SMTPChannel.max_command_size_limitus<	+t//66899	+***	+s"%==NFc4tjj|||||_||_||_||_||_||_|r
|rtd|r!d|_
d|_d|_t|_n%d|_
d|_td|_d	|_|j!d|_d
|_|j&j)t+j,|_	|j1|_t=dt?|j2t@|jCd
|j.dtDy#t4$r8}|j7|j8t8j:k7rYd}~yd}~wwxYw)NmapFdecode_data and enable_SMTPUTF8 cannot be set to True at the same timer
.r
.
FzPeer:r!z220  )#r
async_chat__init__smtp_serverconnaddrdata_size_limitenable_SMTPUTF8_decode_datar4_emptystring_linesep_dotsepNEWLINE_newlineord_set_rset_state
seen_greeting
extended_smtpr2clearsocketgetfqdnfqdngetpeernamepeerOSErrorcloseerrnoENOTCONNr#reprDEBUGSTREAMpush__version__)	rserverrDrErFr9rGdecode_dataerrs	         rrBzSMTPChannel.__init__|sU$$T4S$9!		..'{@A
A "D"DMDL#DM #D#DMt9DL!DM"  &&(NN$		((*DI	gtDII[9		K89	
JJLyyENN*
	s6E	F.FFc	|j|_d|_g|_d|_d|_|j
dy)NFrr=)COMMAND
smtp_statemailfromrcpttosrequire_SMTPUTF8	num_bytesset_terminatorrs r_set_post_data_statez SMTPChannel._set_post_data_states;=,,
 %G$rcB	|jd|_g|_yNr)rk
received_datareceived_linesrs rrOzSMTPChannel._set_rset_states!<!!# rc<tdtd|jS)NzTAccess to __server attribute on SMTPChannel is deprecated, use 'smtp_server' insteadrDeprecationWarningrCrs r__serverzSMTPChannel.__servers!();Q	@rc4tdtd||_y)NzRSetting __server attribute on SMTPChannel is deprecated, set 'smtp_server' insteadrqrrrvalues  rrtzSMTPChannel.__servers();Q	@ rc<tdtd|jS)NzUAccess to __line attribute on SMTPChannel is deprecated, use 'received_lines' insteadrqrrsrors r__linezSMTPChannel.__lines!+,>	C"""rc4tdtd||_y)NzSSetting __line attribute on SMTPChannel is deprecated, set 'received_lines' insteadrqryrvs  rrzzSMTPChannel.__lines+,>	C#rc<tdtd|jS)NzRAccess to __state attribute on SMTPChannel is deprecated, use 'smtp_state' insteadrqrrsrers r__statezSMTPChannel.__states'(:A	?rc4tdtd||_y)NzPSetting __state attribute on SMTPChannel is deprecated, set 'smtp_state' insteadrqr}rvs  rr~zSMTPChannel.__states'(:A	?rc<tdtd|jS)NzXAccess to __greeting attribute on SMTPChannel is deprecated, use 'seen_greeting' insteadrqrrsrPrs r
__greetingzSMTPChannel.__greeting!*+=q	B!!!rc4tdtd||_y)NzVSetting __greeting attribute on SMTPChannel is deprecated, set 'seen_greeting' insteadrqrrvs  rrzSMTPChannel.__greeting*+=q	B"rc<tdtd|jS)NzSAccess to __mailfrom attribute on SMTPChannel is deprecated, use 'mailfrom' insteadrqrrsrfrs r
__mailfromzSMTPChannel.__mailfroms%&8!	=}}rc4tdtd||_y)NzQSetting __mailfrom attribute on SMTPChannel is deprecated, set 'mailfrom' insteadrqrrvs  rrzSMTPChannel.__mailfroms%&8!	=
rc<tdtd|jS)NzQAccess to __rcpttos attribute on SMTPChannel is deprecated, use 'rcpttos' insteadrqrrsrgrs r	__rcpttoszSMTPChannel.__rcpttoss$%7	<||rc4tdtd||_y)NzOSetting __rcpttos attribute on SMTPChannel is deprecated, set 'rcpttos' insteadrqrrvs  rrzSMTPChannel.__rcpttoss$%7	<rc<tdtd|jS)NzTAccess to __data attribute on SMTPChannel is deprecated, use 'received_data' insteadrqrrsrnrs r__datazSMTPChannel.__datarrc4tdtd||_y)NzRSetting __data attribute on SMTPChannel is deprecated, set 'received_data' insteadrqrrvs  rrzSMTPChannel.__datarrc<tdtd|jS)NzKAccess to __fqdn attribute on SMTPChannel is deprecated, use 'fqdn' insteadrqrrsrUrs r__fqdnzSMTPChannel.__fqdn!"4a	9yyrc4tdtd||_y)NzISetting __fqdn attribute on SMTPChannel is deprecated, set 'fqdn' insteadrqrrvs  rrzSMTPChannel.__fqdn!"4a	9	rc<tdtd|jS)NzKAccess to __peer attribute on SMTPChannel is deprecated, use 'peer' insteadrqrrsrWrs r__peerzSMTPChannel.__peerrrc4tdtd||_y)NzISetting __peer attribute on SMTPChannel is deprecated, set 'peer' insteadrqrrvs  rrzSMTPChannel.__peerrrc<tdtd|jS)NzKAccess to __conn attribute on SMTPChannel is deprecated, use 'conn' insteadrqrrsrDrs r__connzSMTPChannel.__connrrc4tdtd||_y)NzISetting __conn attribute on SMTPChannel is deprecated, set 'conn' insteadrqrrvs  rrzSMTPChannel.__connrrc<tdtd|jS)NzKAccess to __addr attribute on SMTPChannel is deprecated, use 'addr' insteadrqrrsrErs r__addrzSMTPChannel.__addr"rrc4tdtd||_y)NzISetting __addr attribute on SMTPChannel is deprecated, set 'addr' insteadrqrrvs  rrzSMTPChannel.__addr'rrctjj|t|dz|jrdydy)Nr;utf-8ascii)rrAr^bytesrhrs  rr^zSMTPChannel.push.sA  u&LT%:%:'(I	J@G(I	Jrcd}|j|jk(r
|j}n%|j|jk(r|j}|r|j
|kDry|r|xj
t
|z
c_|jr&|jjt|dy|jj|y)Nr)rerdr6DATArFrilenrHroappendstr)rdatalimits   rcollect_incoming_dataz!SMTPChannel.collect_incoming_data3s??dll*//E
__		
)((ET^^e+
NNc$i'N&&s4'9:&&t,rc|jj|j}tdt	|t
g|_|j|jk(r|jdc}|_|s|jdy|jst|d}|jd}|dkr|j}d}n)|d|j}||dzdj}|jr|j |n|j"}||kDr|jdyt%|d	|zd}|s|jd
|zy||y|j|j&k7r|jdd|_y|j(r2|j|j(kDr|jdd|_yg}|j+|j,D]<}	|	r'|	d|j.k(r|j1|	dd,|j1|	>|j2j||_|j6|j8|j:|j4f}
i}|js|j<|j>d
}|j@jB|
i|}|jE|s|jdy|j|y)NzData:r!rz500 Error: bad syntaxrr@r,z500 Error: line too longsmtp_z&500 Error: command "%s" not recognizedz451 Internal confusionz552 Error: Too much mail data)mail_optionsrcpt_options250 OK)#rIjoinror#r\r]rerdrir^rHrfindupperstriprQr2r5getattrrrFsplitrJrKrrMrnrWrfrgrrrCprocess_messagerk)
rlineszicommandargmax_szmethodrtextargskwargsstatuss
             rfound_terminatorzSMTPChannel.found_terminatorCs  %%d&9&9:
gtDz4 ??dll*!%B		12$$4)		#A1u**,r(..*1Q34j&&(--..w7373J3J
F{		45T7W#4d;F		BWLM3K$))+		23!"##9M9M(M		9:!"D

4==1
&DGt||3KKQR)KK%	
&
"&!3!3D!9DIIt}}dllD<N<NODF$$$($5$5$($5$56T%%55tFvFF%%'		(#		&!rc|s|jdy|jr|jdy|j||_|jd|jzy)Nz501 Syntax: HELO hostname503 Duplicate HELO/EHLOz250 %s)r^rPrOrUrrs  r	smtp_HELOzSMTPChannel.smtp_HELOsWII12II/0 		(TYY&'rc&|s|jdy|jr|jdy|j||_d|_|jd|jz|j
r5|jd|j
z|jdxxdz
cc<|js|jd|jr(|jd	|jdxxd
z
cc<|jdy)Nz501 Syntax: EHLO hostnamerTz250-%sz250-SIZE %sMAILz250-8BITMIMEz250-SMTPUTF8
z250 HELP)	r^rPrOrQrUrFr2rHrGrs  r	smtp_EHLOzSMTPChannel.smtp_EHLOsII12II/0 !		(TYY&'IImd&:&::;$$V,2,  IIn%IIn%$$V,2,		*rcN|r|jdy|jdy)Nz501 Syntax: NOOPrr^rs  r	smtp_NOOPzSMTPChannel.smtp_NOOPsII()IIhrcF|jd|jy)Nz221 Bye)r^close_when_doners  r	smtp_QUITzSMTPChannel.smtp_QUITs		)rclt|}|d|j|k(r||djSyrm)rrr)rkeywordrkeylens    r_strip_command_keywordz"SMTPChannel._strip_command_keywords:Ww<7*vw<%%''rc|sy|jjdrt|\}}nt|\}}|s||fS|j|fS)N)rr<)lstrip
startswithrr	addr_spec)rraddressrests    r_getaddrzSMTPChannel._getaddrsV::<""3'*3/MGT)#.MGTD=   $&&rci}|D]6}|jd\}}}|jr|r|sy|r|nd||<8|S)N=T)	partitionisalnum)rparamsresultparameqrws      r
_getparamszSMTPChannel._getparamssQ	2E$s3E2u==?b%'ETF5M		2

rc^|rd}|j}|dk(r|jdy|dk(r|jdy|dk(r%d}|jr||z
}|j|y|dk(r%d	}|jr||z
}|j|y|d
k(r|jdy|dk(r|jd
y|dk(r|jdy|dk(r|jdy|dk(r|jdy|jdy|jdy)N [SP <mail-parameters>]EHLOz250 Syntax: EHLO hostnameHELOz250 Syntax: HELO hostnamerz 250 Syntax: MAIL FROM: <address>RCPTz250 Syntax: RCPT TO: <address>rz250 Syntax: DATARSETz250 Syntax: RSETNOOPz250 Syntax: NOOPQUITz250 Syntax: QUITVRFYz250 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)rr^rQ)rrextendedlc_argrs     r	smtp_HELPzSMTPChannel.smtp_HELPs 0HYY[F		566!		566!8%%8OC		#6!6%%8OC		#6!		,-6!		,-6!		,-6!		,-6!		67		56
II,
-rc|r=|j|\}}|r|jdy|jd|zy|jdy)NzB252 Cannot VRFY user, but will accept message and attempt deliveryz502 Could not VRFY %sz501 Syntax: VRFY <address>)rr^)rrrrs    r	smtp_VRFYzSMTPChannel.smtp_VRFYsL"mmC0OGV		12		1C78II23rc|js|jdytd|td}|jr|dz
}||j|y|jd|}|j
|\}}|s|j|y|js|r|j|y|jr|jdy|jj|_
|j|j}||j|y|js(|jdd	}|d
vr|jdy|jr4|jdd
}|durd|_n|d
ur|jdy|jdd}|rX|j!s|j|y|j"r*t%||j"kDr|jdyt'|j)dkDr|jdy||_td|jt|jdy)N503 Error: send HELO firstz	===> MAILr!z 501 Syntax: MAIL FROM: <address>rzFROM:z503 Error: nested MAIL commandBODY7BIT)r8BITMIMEz1501 Error: BODY can only be one of 7BIT, 8BITMIMESMTPUTF8FTz&501 Error: SMTPUTF8 takes no argumentsSIZEz:552 Error: message size exceeds fixed maximum message sizerz:555 MAIL FROM parameters not recognized or not implementedzsender:r)rPr^r#r]rQrrrfrrrrrHpoprGrhisdigitrFintrkeys)rr	syntaxerrrrbodysmtputf8sizes        r	smtp_MAILzSMTPChannel.smtp_MAILs!!II23
k3[16	22I;IIi ))'37--,IIi !!fIIi ==II67"LLN002!2!23>IIi   ::ff-D//		MNzz*e4H4(,%&		BCzz&$'<<>		)$%%#d)d6J6J*J		VWv{{}!IIRS

i[9		(rc2|js|jdytd|t|js|jdyd}|j
r|dz
}||j|y|j
d|}|j|\}}|s|j|y|j
s|r|j|y|jj|_
|j|j}||j|yt|jdkDr|jd	y|jj|td
|jt|jdy)Nrz	===> RCPTr!z503 Error: need MAIL commandz501 Syntax: RCPT TO: <address>rzTO:rz8555 RCPT TO parameters not recognized or not implementedzrecips:r)rPr^r#r]rfrQrrrrrrrrrgr)rrrrrs     r	smtp_RCPTzSMTPChannel.smtp_RCPT.sK!!II23
k3[1}}II454	22I;IIi ))%5--,IIi !!fIIi "LLN002!2!23>IIi v{{}!IIPQG$
iK8		(rcn|r|jdy|j|jdy)Nz501 Syntax: RSETr)r^rOrs  r	smtp_RSETzSMTPChannel.smtp_RSETQs-II()		(rc
|js|jdy|js|jdy|r|jdy|j|_|jd|jdy)Nrz503 Error: need RCPT commandz501 Syntax: DATAs
.
z#354 End data with <CR><LF>.<CR><LF>)rPr^rgrrerjrs  r	smtp_DATAzSMTPChannel.smtp_DATAXsk!!II23||II45II()))L)		78rc&|jdy)Nz502 EXPN not implementedrrs  r	smtp_EXPNzSMTPChannel.smtp_EXPNgs		,-r),rrrrdrr5collectionsdefaultdictr2propertyr6DATA_SIZE_DEFAULTrBrkrO_SMTPChannel__serversetter_SMTPChannel__line_SMTPChannel__state_SMTPChannel__greeting_SMTPChannel__mailfrom_SMTPChannel__rcpttos_SMTPChannel__data_SMTPChannel__fqdn_SMTPChannel__peer_SMTPChannel__conn_SMTPChannel__addrr^rrrrrrrrrrrr	rr
rrrrrrrnsGD1+11;M2PQ
++<M5e%:N%!  __!!
##]]$$

^^  
""##


""]]##
]]
]]
]]
]]J

- ;"|
(, 
	'	!-F	44l!F9.rrc,eZdZeZedddfdZdZdZy)r	NFc	h||_||_||_||_||_|r
|rtdtjj||	tj|dtji}|j|dd|dd|j|j||jdt!|j"j$dt'j(t'j&d|d	|t*
y#|j-xYw)Nr:r8typerr,z started at z
	Local addr: z
	Remote addr:r!)
_localaddr_remoteaddrrFrGrHr4r
dispatcherrBrSgetaddrinfoSOCK_STREAM
create_socketset_reuse_addrbindlistenr#	__class__rtimectimer]rY)r	localaddr
remoteaddrrFr9rGragai_resultss        rrBzSMTPServer.__init__os$%..'{@A
A$$Ts$3	: ,,iF282D2DFK{1~a0+a.2CD!IIi KKN

''DIIK)@:'-8
:		JJLs
A3DD1c	tdt|zt|j||||j|j
|j|j}y)NzIncoming connection from %sr!)r#r\r]
channel_classrF_maprGrH)rrDrEchannels    rhandle_acceptedzSMTPServer.handle_acceptedsP
+d4j8{K$$T%)%)%)%9%9%)YY%)%9%9%)%6%6
8rc	tr)NotImplementedErrorrrWrfrgrrs      rrzSMTPServer.process_messages	<"!r)	rrrrr6rrBr9rrrrr	r	ks"M"3!&E:88"rr	ceZdZdZdZy)r
cd}|j}|D]k}|rA|s?d|dz}t|tst|j	d}t|d}t|tst|}t|my)Nr,zX-Peer: rr)
splitlines
isinstancerr\encoder#)rrWr	inheaderslinesr
peerheaders       r_print_message_contentz&DebuggingServer._print_message_contents{	!	D'$q'1
!$,!%j&7&7&@!AJj!	dC(Dz$K	rctd|rD|jdrtd|dz|jdrtd|dz|j||tdy)Nz%---------- MESSAGE FOLLOWS ----------rzmail options: %srzrcpt options: %s
z%------------ END MESSAGE ------------)r#getrEr<s      rrzDebuggingServer.process_messagese
56zz.)(6.+AABzz.)*VN-CCD##D$/
56rN)rrrrErrrrr
r
s"7rr
c*eZdZfdZdZdZxZS)rcTd|vr|drtdtt||i|y)NrGz$PureProxy does not support SMTPUTF8.)r4superrrB)rrrr/s   rrBzPureProxy.__init__s3&62C+DCDD
i'88rc|jd}d}|D]}|sn|dz
}
|j|d|dztj|}|j	|||}td|ty)Nrrr,z
X-Peer: %szwe got some refusals:r!)rinsertrLr_deliverr#r])	rrWrfrgrrCrrrefuseds	         rrzPureProxy.process_messagesy

4 
	D
FA		QtAw./||E"--'48
%w[Arc6ddl}i}	|j}|j|jd|jd	|j	|||}|j|S#|jwxYw#|j$r(}tdt|j}Yd}~|Sd}~wt|jf$rO}td|jtt|dd}t|dd	}	|D]	}
||	f||
<Yd}~|Sd}~wwxYw)
Nrr,zgot SMTPRecipientsRefusedr!got	smtp_code
smtp_errorignore)smtplibSMTPconnectr'sendmailquitSMTPRecipientsRefusedr#r]
recipientsrX
SMTPExceptionr/r)rrfrgrrUrNseerrcodeerrmsgrs           rrMzPureProxy._delivers	/A
IId&&q)4+;+;A+>?
**Xw=,,	#-K@llG../	/%;7ab1GQh7F
/%v.

/	/s<<A?A*A?*A<<A??DB11D	ADD)rrrrBrrM
__classcell__)r/s@rrrs9
BrrceZdZdZdZdZdZy)OptionsTrNF)rrrsetuid	classname
size_limitrGrrrrdrds
FIJOrrdc	tjtjdddgd\}}t}D]\}}|dvrt	d|dvr%t
ttjd?|dvrd|_	K|d	vr||_
W|d
vrtjal|dvrd|_
x|d
vs}	t|}||_t!dkrd}d}nQt!|dkr|d}d}n;t!|dkr|d}|d}n"t	ddt"j%|zj'd}	|	dkrt	dd|z|d|	|_	t||	dzd|_j'd}	|	dkrt	dd|z|d|	|_	t||	dzd|_|S#tj$r}t	d|Yd}~d}~wwxYw#t
d|ztjtjdYxYw#t,$rt	dd|zYwxYw#t,$rt	dd|zY|SwxYw)Nr,z	nVhc:s:du)zclass=nosetuidversionhelpzsize=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:8025zlocalhost:25rqzInvalid arguments: %s:zBad local spec: %szBad local port: %szBad remote spec: %szBad remote port: %s)getoptr&argverrorr*rdr#r_r(rerfr'r]rGrrgr
COMMASPACErr	localhost	localportr4
remotehost
remoteport)
optsrr^optionsoptrint_size	localspec
remotespecrs
          r	parseargsr}
st]]HHQRL+

diGS""!H
'
'+HHQK
(
("GN
%
% #G
%
%**K
(
(&*G#
$
$
s8%-"#.4y1}$	#
	TQG	#
	TQG	!W

a(:??4+@@A	sA1u
a%	12!"1
G3	!A#$0	A1u
a&34#BQG5 AaCD!12Nq<<
a,
&,3::>,3
a%	1235
a&34N5sG-F?9G,!H''I?G)G$$G),5H$'III! I!__main__r<r,)rGz7Cannot import module "pwd"; try running with -n option.r!nobodyrqz3Cannot setuid "nobody"; try running with -n option.)r)?r&osrZror0rSrtest.supportrrwarningsremail._header_value_parserrr__all__rpprogramr_r
r]rLrrrr*rArr(r	r
rrdr}rrxrfrfindlastdot
__import__r%localsmodr~rclass_rsrtrurvrgrGproxyrepwdImportErrorr#r'r(getpwnamrPermissionErrorloopKeyboardInterruptrrr<module>rs1+N	

+D((1+-
i


z.(%%z.zJ"$$J"Z7j7<*
*Z?DzkG!!I
i//#&8G,giB4Hgaij)	
S)
$FG%%w'8'89&&(:(:;%%w7N7N
PE~~	h'*	BIIf


7"	KRUR\R\]CHHQK		GcjjYCHHQK	


s6&F&GH&+GG+HHHH