Viewing File: /opt/alt/python35/lib64/python3.5/__pycache__/smtpd.cpython-35.opt-2.pyc



]"@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlmZm
Z
ddddgZejdZdZGd	d
d
ZeadZdZd
ZdddZGdddejZGdddejZGdddeZGdddeZGdddeZGdddZddZ e!dkre Z"e"j#Z#de#kre#j$dZ%e&e#de%e'e(dgZ)e#e%ddZ#nddl*Z)e+e)e#Z,e,e"j-e"j.fe"j/e"j0fe"j1de"j2Z3e"j4ryddl5Z5Wn2e6k
re7dd ej8ej9dYnXe5j:d!d"Z;yej4e;Wn2e<k
re7d#d ej8ej9dYnXyej=Wne>k
rYnXdS)$N)warn)
get_addr_specget_angle_addr
SMTPServerDebuggingServer	PureProxyMailmanProxyzPython SMTP proxy version 0.3c@s(eZdZddZddZdS)DevnullcCsdS)N)selfmsgr
r
*/opt/alt/python35/lib64/python3.5/smtpd.pywritecsz
Devnull.writecCsdS)Nr
)rr
r
r
flushdsz
Devnull.flushN)__name__
__module____qualname__rrr
r
r
r
r	bsr	
z, icCsDtttdtj|r3t|dtjtj|dS)Nfile)print__doc__globalssysstderrexit)coderr
r
r
usagemsrc@seZdZdZdZdZejeddZe	ddZ
edd	dd
dZdd
Z
ddZe	ddZejddZe	ddZejddZe	ddZejddZe	ddZejddZe	ddZejddZe	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/Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Z d=d>Z!d?d@Z"dAdBZ#dCdDZ$dEdFZ%dGdHZ&dIdJZ'dKdLZ(dMdNZ)dOdPZ*dQdRZ+dS)SSMTPChannelricCs|S)Nr
)xr
r
r
<lambda>yszSMTPChannel.<lambda>cCs7yt|jjSWntk
r2|jSYnXdS)N)maxcommand_size_limitsvalues
ValueErrorcommand_size_limit)rr
r
r
max_command_size_limit{s
z"SMTPChannel.max_command_size_limitNFc	Cstjj||d|||_||_||_||_||_|rd|r^tdd}|dkrt	dt
dd}||_|rd|_d|_
d	|_t|_n*d
|_d|_
td|_d
|_|jd|_d|_|jjtj|_y|j|_WnLtk
r}z,|j|jdtj kridSWYdd}~XnXt!dt"|jdt#|j$d|jt%fdS)NmapzFdecode_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 keywordTrz
.s
.s
rzPeer:rz	220 %s %s)&asynchat
async_chat__init__smtp_serverconnaddrdata_size_limitenable_SMTPUTF8r%rDeprecationWarning_decode_data_emptystring_linesep_dotsepNEWLINE_newlineord_set_rset_state
seen_greeting
extended_smtpr#clearsocketgetfqdnfqdngetpeernamepeerOSErrorcloseargserrnoZENOTCONNrreprDEBUGSTREAMpush__version__)	rZserverr1r2r3r(r4decode_dataerrr
r
r
r/sL					
							
		

zSMTPChannel.__init__cCsA|j|_d|_g|_d|_d|_|jddS)NFrs
)COMMAND
smtp_statemailfromrcpttosrequire_SMTPUTF8	num_bytesset_terminator)rr
r
r
_set_post_data_states				z SMTPChannel._set_post_data_statecCs |jd|_g|_dS)Nr)rW
received_datareceived_lines)rr
r
r
r=s
	zSMTPChannel._set_rset_statecCstdtd|jS)NzTAccess to __server attribute on SMTPChannel is deprecated, use 'smtp_server' insteadr))rr5r0)rr
r
r
__servers
zSMTPChannel.__servercCstdtd||_dS)NzRSetting __server attribute on SMTPChannel is deprecated, set 'smtp_server' insteadr))rr5r0)rvaluer
r
r
rZs
cCstdtd|jS)NzUAccess to __line attribute on SMTPChannel is deprecated, use 'received_lines' insteadr))rr5rY)rr
r
r
__lines
zSMTPChannel.__linecCstdtd||_dS)NzSSetting __line attribute on SMTPChannel is deprecated, set 'received_lines' insteadr))rr5rY)rr[r
r
r
r\s
cCstdtd|jS)NzRAccess to __state attribute on SMTPChannel is deprecated, use 'smtp_state' insteadr))rr5rQ)rr
r
r
__states
zSMTPChannel.__statecCstdtd||_dS)NzPSetting __state attribute on SMTPChannel is deprecated, set 'smtp_state' insteadr))rr5rQ)rr[r
r
r
r]s
cCstdtd|jS)NzXAccess to __greeting attribute on SMTPChannel is deprecated, use 'seen_greeting' insteadr))rr5r>)rr
r
r

__greetings
zSMTPChannel.__greetingcCstdtd||_dS)NzVSetting __greeting attribute on SMTPChannel is deprecated, set 'seen_greeting' insteadr))rr5r>)rr[r
r
r
r^s
cCstdtd|jS)NzSAccess to __mailfrom attribute on SMTPChannel is deprecated, use 'mailfrom' insteadr))rr5rR)rr
r
r

__mailfroms
zSMTPChannel.__mailfromcCstdtd||_dS)NzQSetting __mailfrom attribute on SMTPChannel is deprecated, set 'mailfrom' insteadr))rr5rR)rr[r
r
r
r_s
cCstdtd|jS)NzQAccess to __rcpttos attribute on SMTPChannel is deprecated, use 'rcpttos' insteadr))rr5rS)rr
r
r
	__rcpttoss
zSMTPChannel.__rcpttoscCstdtd||_dS)NzOSetting __rcpttos attribute on SMTPChannel is deprecated, set 'rcpttos' insteadr))rr5rS)rr[r
r
r
r`s
cCstdtd|jS)NzTAccess to __data attribute on SMTPChannel is deprecated, use 'received_data' insteadr))rr5rX)rr
r
r
__datas
zSMTPChannel.__datacCstdtd||_dS)NzRSetting __data attribute on SMTPChannel is deprecated, set 'received_data' insteadr))rr5rX)rr[r
r
r
ras
cCstdtd|jS)NzKAccess to __fqdn attribute on SMTPChannel is deprecated, use 'fqdn' insteadr))rr5rC)rr
r
r
__fqdns
zSMTPChannel.__fqdncCstdtd||_dS)NzISetting __fqdn attribute on SMTPChannel is deprecated, set 'fqdn' insteadr))rr5rC)rr[r
r
r
rbs
cCstdtd|jS)NzKAccess to __peer attribute on SMTPChannel is deprecated, use 'peer' insteadr))rr5rE)rr
r
r
__peers
zSMTPChannel.__peercCstdtd||_dS)NzISetting __peer attribute on SMTPChannel is deprecated, set 'peer' insteadr))rr5rE)rr[r
r
r
rcs
cCstdtd|jS)NzKAccess to __conn attribute on SMTPChannel is deprecated, use 'conn' insteadr))rr5r1)rr
r
r
__conn$s
zSMTPChannel.__conncCstdtd||_dS)NzISetting __conn attribute on SMTPChannel is deprecated, set 'conn' insteadr))rr5r1)rr[r
r
r
rd)s
cCstdtd|jS)NzKAccess to __addr attribute on SMTPChannel is deprecated, use 'addr' insteadr))rr5r2)rr
r
r
__addr/s
zSMTPChannel.__addrcCstdtd||_dS)NzISetting __addr attribute on SMTPChannel is deprecated, set 'addr' insteadr))rr5r2)rr[r
r
r
re4s
cCs3tjj|t|d|jr%dnddS)Nz
zutf-8ascii)r-r.rLbytesrT)rrr
r
r
rL;szSMTPChannel.pushcCsd}|j|jkr$|j}n|j|jkr?|j}|rX|j|krXdS|rs|jt|7_|jr|jj	t
|dn|jj	|dS)Nzutf-8)rQrPr'DATAr3rUlenr6rYappendstr)rdatalimitr
r
r
collect_incoming_data@s		z!SMTPChannel.collect_incoming_datac
Cs|jj|j}tdt|dtg|_|j|jkrf|jd}|_|ss|j	ddS|j
st|d}|jd}|dkr|j
}d}n0|d|j
}||ddj}|jr|j|n|j}||kr'|j	ddSt|d	|d}|sX|j	d
|dS||dS|j|jkr|j	dd|_dS|jr|j|jkr|j	dd|_dSg}xZ|j|jD]F}	|	r|	d|jkr|j|	ddq|j|	qW|jj||_|j|j|j|jf}
i}|j
sd
|jd|ji}|j j!|
|}|j"|s|j	dn
|j	|dS)NzData:rrz500 Error: bad syntaxzutf-8 rz500 Error: line too longZsmtp_z&500 Error: command "%s" not recognizedz451 Internal confusionz552 Error: Too much mail datamail_optionsrcpt_optionsz250 OK)#r7joinrYrrJrKrQrPrUrLr6rkfindupperstripr?r#r&getattrrhr3splitr8r9rjr;rXrErRrSrprqr0process_messagerW)
rlineZszicommandargZmax_szmethodrltextrHkwargsstatusr
r
r
found_terminatorPsd	
		


	
			
zSMTPChannel.found_terminatorcCs\|s|jddS|jr1|jddS|j||_|jd|jdS)Nz501 Syntax: HELO hostnamez503 Duplicate HELO/EHLOz250 %s)rLr>r=rC)rr|r
r
r
	smtp_HELOs
	

	zSMTPChannel.smtp_HELOcCs|s|jddS|jr1|jddS|j||_d|_|jd|j|jr|jd|j|jdd7<|js|jd|jr|jd	|jdd
7<|jddS)Nz501 Syntax: EHLO hostnamez503 Duplicate HELO/EHLOTz250-%sz250-SIZE %sMAILz250-8BITMIMEz250-SMTPUTF8
z250 HELP)	rLr>r=r?rCr3r#r6r4)rr|r
r
r
	smtp_EHLOs&
	

				
	
zSMTPChannel.smtp_EHLOcCs'|r|jdn
|jddS)Nz501 Syntax: NOOPz250 OK)rL)rr|r
r
r
	smtp_NOOPszSMTPChannel.smtp_NOOPcCs|jd|jdS)Nz221 Bye)rLZclose_when_done)rr|r
r
r
	smtp_QUITs
zSMTPChannel.smtp_QUITcCs@t|}|d|j|kr<||djSdS)Nr)rirtru)rkeywordr|Zkeylenr
r
r
_strip_command_keywordsz"SMTPChannel._strip_command_keywordcCsc|s
dS|jjdr4t|\}}nt|\}}|sV||fS|j|fS)Nr<)rr)lstrip
startswithrrZ	addr_spec)rr|addressrestr
r
r
_getaddrs
zSMTPChannel._getaddrcCsgi}xZ|D]R}|jd\}}}|jsE|rI|rIdS|rU|nd||<q
W|S)N=T)	partitionisalnum)rparamsresultZparameqr[r
r
r

_getparamss
zSMTPChannel._getparamscCsg|rVd}|j}|dkr4|jdqc|dkrP|jdqc|dkrd}|jru||7}|j|qc|dkrd	}|jr||7}|j|qc|d
kr|jdqc|dkr|jd
qc|dkr|jdqc|dkr*|jdqc|dkrF|jdqc|jdn
|jddS)Nz [SP <mail-parameters>]ZEHLOz250 Syntax: EHLO hostnameZHELOz250 Syntax: HELO hostnamerz 250 Syntax: MAIL FROM: <address>ZRCPTz250 Syntax: RCPT TO: <address>rhz250 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)rtrLr?)rr|ZextendedZlc_argrr
r
r
	smtp_HELPs:	
	
zSMTPChannel.smtp_HELPcCsV|rE|j|\}}|r1|jdqR|jd|n
|jddS)NzB252 Cannot VRFY user, but will accept message and attempt deliveryz502 Could not VRFY %sz501 Syntax: VRFY <address>)rrL)rr|rrr
r
r
	smtp_VRFYszSMTPChannel.smtp_VRFYcCse|js|jddStd|dtd}|jrF|d7}|dkrc|j|dS|jd|}|j|\}}|s|j|dS|jr|r|j|dS|jr|jddS|jj	|_
|j|j
}|dkr |j|dS|jsX|j
dd	}|dkrX|jddS|jr|j
dd
}|dkrd|_n|d
k	r|jddS|j
dd}|r|js|j|dS|jrt||jkr|jddSt|jdkr5|jddS||_td|jdt|jddS)Nz503 Error: send HELO firstz	===> MAILrz 501 Syntax: MAIL FROM: <address>z [SP <mail-parameters>]zFROM:z503 Error: nested MAIL commandZBODY7BIT8BITMIMEz1501 Error: BODY can only be one of 7BIT, 8BITMIMEZSMTPUTF8FTz&501 Error: SMTPUTF8 takes no argumentsZSIZEz:552 Error: message size exceeds fixed maximum message sizerz:555 MAIL FROM parameters not recognized or not implementedzsender:z250 OK)rr)r>rLrrKr?rrrRrtrwrprr6popr4rTisdigitr3intrikeys)rr|	syntaxerrrrZbodysmtputf8sizer
r
r
	smtp_MAILsh	
	



	

	
	



	zSMTPChannel.smtp_MAILcCs|js|jddStd|dt|jsG|jddSd}|jr`|d7}|dkr}|j|dS|jd|}|j|\}}|s|j|dS|jr|r|j|dS|jj	|_
|j|j
}|dkr |j|dSt|j
dkrI|jd	dS|jj|td
|jdt|jddS)Nz503 Error: send HELO firstz	===> RCPTrz503 Error: need MAIL commandz501 Syntax: RCPT TO: <address>z [SP <mail-parameters>]zTO:rz8555 RCPT TO parameters not recognized or not implementedzrecips:z250 OK)r>rLrrKrRr?rrrtrwrqrrirrSrj)rr|rrrr
r
r
	smtp_RCPT;s@	
	
	





zSMTPChannel.smtp_RCPTcCs2|r|jddS|j|jddS)Nz501 Syntax: RSETz250 OK)rLr=)rr|r
r
r
	smtp_RSET^s


zSMTPChannel.smtp_RSETcCsu|js|jddS|js4|jddS|rK|jddS|j|_|jd|jddS)Nz503 Error: send HELO firstz503 Error: need RCPT commandz501 Syntax: DATAs
.
z#354 End data with <CR><LF>.<CR><LF>)r>rLrSrhrQrV)rr|r
r
r
	smtp_DATAes	
	


zSMTPChannel.smtp_DATAcCs|jddS)Nz502 EXPN not implemented)rL)rr|r
r
r
	smtp_EXPNtszSMTPChannel.smtp_EXPN),rrrrPrhr&collectionsdefaultdictr#propertyr'DATA_SIZE_DEFAULTr/rWr=Z_SMTPChannel__serversetterZ_SMTPChannel__lineZ_SMTPChannel__stateZ_SMTPChannel__greetingZ_SMTPChannel__mailfromZ_SMTPChannel__rcpttosZ_SMTPChannel__dataZ_SMTPChannel__fqdnZ_SMTPChannel__peerZ_SMTPChannel__connZ_SMTPChannel__addrrLrnrrrrrrrrrrrrrrrr
r
r
r
rts`-	>#6#rc@sFeZdZeZedddddZddZddZdS)	rNFcCs4||_||_||_||_|rB|r<tdd}|dkrdtdtdd}||_tj	j
|d|y`tj|dtj
}|j|dd|dd	|j|j||jd
Wn|jYn6Xtd|jjtjtj||fdtdS)
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(typerrz0%s started at %s
	Local addr: %s
	Remote addr:%sr)Z
_localaddr_remoteaddrr3r4r%rr5r6asyncore
dispatcherr/rAgetaddrinfoSOCK_STREAMZ
create_socketZset_reuse_addrbindlistenrGr	__class__rtimectimerK)rZ	localaddrZ
remoteaddrr3r(r4rNZgai_resultsr
r
r
r/|s6				
	 


zSMTPServer.__init__cCsKtdt|dt|j||||j|j|j|j}dS)NzIncoming connection from %sr)rrJrK
channel_classr3_mapr4r6)rr1r2Zchannelr
r
r
handle_accepteds	zSMTPServer.handle_acceptedcKs
tdS)N)NotImplementedError)rrErRrSrlrr
r
r
rxszSMTPServer.process_message)	rrrrrrr/rrxr
r
r
r
rxs
"c@s(eZdZddZddZdS)rcCsd}|j}x|D]z}|rn|rnd|d}t|ts^t|jd}t|d}t|tst|}t|qWdS)NrzX-Peer: rzutf-8)
splitlines
isinstancerkrJencoder)rrErlZ	inheaderslinesryZ
peerheaderr
r
r
_print_message_contents


z&DebuggingServer._print_message_contentcKsptd|rR|jdr1td|d|jdrRtd|d|j||tddS)Nz%---------- MESSAGE FOLLOWS ----------rpzmail options: %srqzrcpt options: %s
z%------------ END MESSAGE ------------)rgetr)rrErRrSrlrr
r
r
rxs
zDebuggingServer.process_messageN)rrrrrxr
r
r
r
rscs:eZdZfddZddZddZS)rcs?d|kr"|dr"tdtt|j||dS)Nr4z$PureProxy does not support SMTPUTF8.)r%superrr/)rrHr)rr
r
r/szPureProxy.__init__c	Cs|jd}d}x|D]}|s)P|d7}qW|j|d|dtj|}|j|||}td|dtdS)Nrrrz
X-Peer: %szwe got some refusals:r)rwinsertr:rr_deliverrrK)	rrErRrSrlrrzryrefusedr
r
r
rxs
zPureProxy.process_messagecCs7ddl}i}yU|j}|j|jd|jdz|j|||}Wd|jXWn|jk
r}ztddt|j	}WYdd}~Xnt
|jfk
r2}z`td|jdtt
|dd	}t
|dd}	x|D]}
||	f||
<qWWYdd}~XnX|S)
Nrrzgot SMTPRecipientsRefusedrZgotZ	smtp_codeZ
smtp_errorignore)smtplibZSMTPconnectrZsendmailquitZSMTPRecipientsRefusedrrKZ
recipientsrFZ
SMTPExceptionrrv)rrRrSrlrrseZerrcodeerrmsgrr
r
r
rs$
'zPureProxy._deliver)rrrr/rxrr
r
)rr
rscs.eZdZfddZddZS)rcs?d|kr"|dr"tdtt|j||dS)Nr4z'MailmanProxy does not support SMTPUTF8.)r%rrr/)rrHr)rr
r
r/szMailmanProxy.__init__cCsddlm}ddlm}ddlm}ddlm}g}	x|D]}
|
jjdd}|jd}t|dkrqM|d}
t|dkr|d	}nd
}|j	|
sM|d!krqM|	j
|
|
|fqMWx$|	D]\}
}
}|j|
qWtddj
|dt|ri|j|||}td|dti}||}|j|}|jds||d<|jdstjtj|d<x(|	D] \}
}
}td|
dt|j|
}|s(|j|
dd}|||
<|d
krJ|j|dd	q|dkrl|j|dd	q|dkr|j|dd	q|d
kr|j|dd	q|d"kr|dkrd|d<n
d |d<|j|dd	qWdS)#Nr)StringIO)Utils)Message)MailList@-r)rradminownerrequestrrleavezforwarding recips:rorzwe got refusals:fromZFromZdateZDatezsending message tolocktolistZtoadminZtoownerZ	torequestZ	subscribeZSubjectZunsubscribe)rrrrrrr)rrr)iorZMailmanrrrlowerrwriZlist_existsrjremoverrrrKrrrrZEnqueue)rrErRrSrlrrrrZ	listnamesZrcptlocalpartsZlistnamer{rZmlistsrrZmlistr
r
r
rxsd


	



zMailmanProxy.process_message)rrrr/rxr
r
)rr
rsc@s(eZdZdZdZdZdZdS)OptionsTrNF)rrrsetuid	classname
size_limitr4r
r
r
r
rksrc
!Cs%yAtjtjdddddddddd	g\}}Wn5tjk
rx}ztd|WYdd}~XnXt}x|D]\}}|d'krtdq|d(krtttjdq|d)krd|_	q|d*kr||_
q|d+krtjaq|d,kr4d|_
q|d-kryt|}||_Wqtd|dtjtjdYqXqWt|dkrd}d}nht|dkr|d}d}nCt|d kr|d}|d}ntdd!tj||jd"}	|	dkrAtdd#||d|	|_y!t||	dd|_Wn#tk
rtdd$|YnX|jd"}	|	dkrtdd%||d|	|_y!t||	dd|_Wn#tk
r tdd&|YnX|S).Nrz	nVhc:s:duzclass=Znosetuidversionhelpzsize=debugr-h--helpr-V	--version-n
--nosetuidF-c--class-d--debug-u
--smtputf8T-s--sizezInvalid size: rzlocalhost:8025zlocalhost:25r)zInvalid arguments: %s:zBad local spec: %szBad local port: %szBad remote spec: %szBad remote port: %s)rr)rr)rr)rr)rr)rr)rr)getoptrargverrorrrrrMrrrrrKr4rrri
COMMASPACErrrs	localhost	localportr%
remotehost
remoteport)
ZoptsrHroptionsoptr|Zint_sizeZ	localspecZ
remotespecrzr
r
r
	parseargsrsp 	


	
	

!
!
r__main__r*rr4z7Cannot import module "pwd"; try running with -n option.rnobodyr)z3Cannot setuid "nobody"; try running with -n option.)?rosrIrrrArr-rwarningsrZemail._header_value_parserrr__all__rZprogramrMr	rKr:rrrr.rrrrrrrrrrrrfindZlastdot
__import__rlocalsmodrrvclass_rrrrrr4proxyrpwdImportErrorrrrgetpwnamrPermissionErrorZloopKeyboardInterruptr
r
r
r
<module>Psp
	U-SB		(	



Back to Directory File Manager