MINI MINI MANI MO

Path : /usr/lib64/python3.6/__pycache__/
File Upload :
Current File : //usr/lib64/python3.6/__pycache__/smtpd.cpython-36.opt-2.pyc

3


 \@sZddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlmZm
Z
dddddgZejdZd	ZGd
ddZeadZd
ZdZd$ddZGdddejZGdddejZGdddeZGdddeZGdddeZGdddZddZ e!dkrVe Z"e"j#Z#de#krle#j$dZ%e&e#de%e'e(dgZ)e#e%ddZ#nddl*Z)e+e)e#Z,e,e"j-e"j.fe"j/e"j0fe"j1e"j2dZ3e"j4r2yddl5Z5Wn.e6k
re7dej8d ej9dYnXe5j:d!d"Z;yej4e;Wn.e<k
r0e7d#ej8d ej9dYnXyej=Wne>k
rTYnXdS)%N)warn)
get_addr_specget_angle_addrSMTPChannel
SMTPServerDebuggingServer	PureProxyMailmanProxyzPython SMTP proxy version 0.3c@seZdZddZddZdS)DevnullcCsdS)N)selfmsgrr/usr/lib64/python3.6/smtpd.pywritefsz
Devnull.writecCsdS)Nr)rrrrflushgsz
Devnull.flushN)__name__
__module____qualname__rrrrrrr
esr

z, icCs4ttttjd|r&t|tjdtj|dS)N)file)print__doc__globalssysstderrexit)coder
rrrusagepsrc@seZdZdZdZdZejefddZe	ddZ
edd	d	fd
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)SrricCs|S)Nr)xrrr<lambda>|szSMTPChannel.<lambda>cCs*yt|jjStk
r$|jSXdS)N)maxcommand_size_limitsvalues
ValueErrorcommand_size_limit)rrrrmax_command_size_limit~sz"SMTPChannel.max_command_size_limitNFc	Cstjj|||d||_||_||_||_||_||_|rF|rFt	d|rdd|_
d|_d|_t
|_nd|_
d|_td|_d	|_|jd|_d
|_|jjtj|_y|j|_Wn:tk
r}z|j|jdtjkrdSd}~XnXtdt |jt!d
|j"d|jt#fdS)N)mapzFdecode_data and enable_SMTPUTF8 cannot be set to True at the same timerz
.s
.
FrzPeer:)rz	220 %s %s)$asynchat
async_chat__init__smtp_serverconnaddrdata_size_limitenable_SMTPUTF8_decode_datar%_emptystring_linesep_dotsepNEWLINE_newlineord_set_rset_state
seen_greeting
extended_smtpr#clearsocketZgetfqdnfqdnZgetpeernamepeerOSErrorcloseargserrnoZENOTCONNrreprDEBUGSTREAMpush__version__)	rZserverr1r2r3r(r4decode_dataerrrrrr/s@


zSMTPChannel.__init__cCs.|j|_d|_g|_d|_d|_|jddS)NFrs
)COMMAND
smtp_statemailfromrcpttosrequire_SMTPUTF8	num_bytesset_terminator)rrrr_set_post_data_statesz SMTPChannel._set_post_data_statecCs|jd|_g|_dS)Nr)rT
received_datareceived_lines)rrrrr<szSMTPChannel._set_rset_statecCstdtd|jS)NzTAccess to __server attribute on SMTPChannel is deprecated, use 'smtp_server' instead)rDeprecationWarningr0)rrrr__serverszSMTPChannel.__servercCstdtd||_dS)NzRSetting __server attribute on SMTPChannel is deprecated, set 'smtp_server' insteadrW)rrXr0)rvaluerrrrYscCstdtd|jS)NzUAccess to __line attribute on SMTPChannel is deprecated, use 'received_lines' insteadrW)rrXrV)rrrr__lineszSMTPChannel.__linecCstdtd||_dS)NzSSetting __line attribute on SMTPChannel is deprecated, set 'received_lines' insteadrW)rrXrV)rrZrrrr[scCstdtd|jS)NzRAccess to __state attribute on SMTPChannel is deprecated, use 'smtp_state' insteadrW)rrXrN)rrrr__stateszSMTPChannel.__statecCstdtd||_dS)NzPSetting __state attribute on SMTPChannel is deprecated, set 'smtp_state' insteadrW)rrXrN)rrZrrrr\scCstdtd|jS)NzXAccess to __greeting attribute on SMTPChannel is deprecated, use 'seen_greeting' insteadrW)rrXr=)rrrr
__greetingszSMTPChannel.__greetingcCstdtd||_dS)NzVSetting __greeting attribute on SMTPChannel is deprecated, set 'seen_greeting' insteadrW)rrXr=)rrZrrrr]scCstdtd|jS)NzSAccess to __mailfrom attribute on SMTPChannel is deprecated, use 'mailfrom' insteadrW)rrXrO)rrrr
__mailfromszSMTPChannel.__mailfromcCstdtd||_dS)NzQSetting __mailfrom attribute on SMTPChannel is deprecated, set 'mailfrom' insteadrW)rrXrO)rrZrrrr^scCstdtd|jS)NzQAccess to __rcpttos attribute on SMTPChannel is deprecated, use 'rcpttos' insteadrW)rrXrP)rrrr	__rcpttosszSMTPChannel.__rcpttoscCstdtd||_dS)NzOSetting __rcpttos attribute on SMTPChannel is deprecated, set 'rcpttos' insteadrW)rrXrP)rrZrrrr_scCstdtd|jS)NzTAccess to __data attribute on SMTPChannel is deprecated, use 'received_data' insteadrW)rrXrU)rrrr__dataszSMTPChannel.__datacCstdtd||_dS)NzRSetting __data attribute on SMTPChannel is deprecated, set 'received_data' insteadrW)rrXrU)rrZrrrr`scCstdtd|jS)NzKAccess to __fqdn attribute on SMTPChannel is deprecated, use 'fqdn' insteadrW)rrXrA)rrrr__fqdn
szSMTPChannel.__fqdncCstdtd||_dS)NzISetting __fqdn attribute on SMTPChannel is deprecated, set 'fqdn' insteadrW)rrXrA)rrZrrrrascCstdtd|jS)NzKAccess to __peer attribute on SMTPChannel is deprecated, use 'peer' insteadrW)rrXrB)rrrr__peerszSMTPChannel.__peercCstdtd||_dS)NzISetting __peer attribute on SMTPChannel is deprecated, set 'peer' insteadrW)rrXrB)rrZrrrrbscCstdtd|jS)NzKAccess to __conn attribute on SMTPChannel is deprecated, use 'conn' insteadrW)rrXr1)rrrr__conn szSMTPChannel.__conncCstdtd||_dS)NzISetting __conn attribute on SMTPChannel is deprecated, set 'conn' insteadrW)rrXr1)rrZrrrrc%scCstdtd|jS)NzKAccess to __addr attribute on SMTPChannel is deprecated, use 'addr' insteadrW)rrXr2)rrrr__addr+szSMTPChannel.__addrcCstdtd||_dS)NzISetting __addr attribute on SMTPChannel is deprecated, set 'addr' insteadrW)rrXr2)rrZrrrrd0scCs&tjj|t|d|jrdnddS)Nz
zutf-8ascii)r-r.rIbytesrQ)rr
rrrrI7s
zSMTPChannel.pushcCs|d}|j|jkr|j}n|j|jkr*|j}|r<|j|kr<dS|rR|jt|7_|jrl|jj	t
|dn|jj	|dS)Nzutf-8)rNrMr'DATAr3rRlenr5rVappendstr)rdatalimitrrrcollect_incoming_data<sz!SMTPChannel.collect_incoming_datac
Cs|jj|j}tdt|tdg|_|j|jkr|jd}|_|sT|j	ddS|j
sdt|d}|jd}|dkr|j
}d}n$|d|j
}||ddj}|jr|j|n|j}||kr|j	ddSt|d	|d}|s|j	d
|dS||dS|j|jkr*|j	dd|_dS|jrT|j|jkrT|j	dd|_dSg}xJ|j|jD]:}	|	r|	d|jkr|j|	ddn
|j|	qfW|jj||_|j|j|j|jf}
i}|j
s|j|jd
}|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)#r6joinrVrrGrHrNrMrRrIr5rjfindupperstripr>r#r&getattrrgr3splitr7r8rir:rUrBrOrProrpr0process_messagerT)
rlineZszicommandargZmax_szmethodrktextrEkwargsZstatusrrrfound_terminatorLsd






zSMTPChannel.found_terminatorcCsH|s|jddS|jr&|jddS|j||_|jd|jdS)Nz501 Syntax: HELO hostnamez503 Duplicate HELO/EHLOz250 %s)rIr=r<rA)rr{rrr	smtp_HELOs

zSMTPChannel.smtp_HELOcCs|s|jddS|jr&|jddS|j||_d|_|jd|j|jrr|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)	rIr=r<r>rAr3r#r5r4)rr{rrr	smtp_EHLOs&



zSMTPChannel.smtp_EHLOcCs|r|jdn
|jddS)Nz501 Syntax: NOOPz250 OK)rI)rr{rrr	smtp_NOOPszSMTPChannel.smtp_NOOPcCs|jd|jdS)Nz221 Bye)rIZclose_when_done)rr{rrr	smtp_QUITs
zSMTPChannel.smtp_QUITcCs0t|}|d|j|kr,||djSdS)Nr)rhrsrt)rkeywordr{Zkeylenrrr_strip_command_keywordsz"SMTPChannel._strip_command_keywordcCsF|sdS|jjdr$t|\}}nt|\}}|s<||fS|j|fS)Nr<)rr)lstrip
startswithrrZ	addr_spec)rr{addressrestrrr_getaddrszSMTPChannel._getaddrcCsNi}xD|D]<}|jd\}}}|js2|r6|r6dS|r>|nd||<q
W|S)N=T)	partitionisalnum)rparamsresultZparameqrZrrr
_getparamss
zSMTPChannel._getparamscCs|rd}|j}|dkr$|jdq|dkr8|jdq|dkr^d}|jrR||7}|j|q|dkrd	}|jrx||7}|j|q|d
kr|jdq|dkr|jd
q|dkr|jdq|dkr|jdq|dkr|jdq|jdn
|jddS)Nz [SP <mail-parameters>]ZEHLOz250 Syntax: EHLO hostnameZHELOz250 Syntax: HELO hostnamerz 250 Syntax: MAIL FROM: <address>ZRCPTz250 Syntax: RCPT TO: <address>rgz250 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)rsrIr>)rr{ZextendedZlc_argr
rrr	smtp_HELPs:zSMTPChannel.smtp_HELPcCs@|r2|j|\}}|r"|jdq<|jd|n
|jddS)NzB252 Cannot VRFY user, but will accept message and attempt deliveryz502 Could not VRFY %sz501 Syntax: VRFY <address>)rrI)rr{rrrrr	smtp_VRFYszSMTPChannel.smtp_VRFYcCs|js|jddStd|tdd}|jr4|d7}|dkrJ|j|dS|jd|}|j|\}}|sv|j|dS|jr|r|j|dS|jr|jddS|jj	|_
|j|j
}|dkr|j|dS|js|j
dd	}|dkr|jddS|jr>|j
dd
}|dkr&d|_n|d
k	r>|jddS|j
dd}|r|jsh|j|dS|jrt||jkr|jddSt|jdkr|jddS||_td|jtd|jddS)Nz503 Error: send HELO firstz	===> MAIL)rz 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=rIrrHr>rrrOrsrvrorr5popr4rQisdigitr3intrhkeys)rr{	syntaxerrrrZbodysmtputf8sizerrr	smtp_MAILsh














zSMTPChannel.smtp_MAILcCs|js|jddStd|td|js6|jddSd}|jrH|d7}|dkr^|j|dS|jd|}|j|\}}|s|j|dS|jr|r|j|dS|jj	|_
|j|j
}|dkr|j|dSt|j
dkr|jd	dS|jj|td
|jtd|jddS)Nz503 Error: send HELO firstz	===> RCPT)rz503 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=rIrrHrOr>rrrsrvrprrhrrPri)rr{rrrrrr	smtp_RCPT7s@






zSMTPChannel.smtp_RCPTcCs(|r|jddS|j|jddS)Nz501 Syntax: RSETz250 OK)rIr<)rr{rrr	smtp_RSETZs

zSMTPChannel.smtp_RSETcCsZ|js|jddS|js(|jddS|r:|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=rIrPrgrNrS)rr{rrr	smtp_DATAas



zSMTPChannel.smtp_DATAcCs|jddS)Nz502 EXPN not implemented)rI)rr{rrr	smtp_EXPNpszSMTPChannel.smtp_EXPN),rrrrMrgr&collectionsdefaultdictr#propertyr'DATA_SIZE_DEFAULTr/rTr<Z_SMTPChannel__serversetterZ_SMTPChannel__lineZ_SMTPChannel__stateZ_SMTPChannel__greetingZ_SMTPChannel__mailfromZ_SMTPChannel__rcpttosZ_SMTPChannel__dataZ_SMTPChannel__fqdnZ_SMTPChannel__peerZ_SMTPChannel__connZ_SMTPChannel__addrrIrmrrrrrrrrrrrrrrrrrrrrws`&	>#6#c@s2eZdZeZedddfddZddZddZdS)	rNFcCs||_||_||_||_||_|r.|r.tdtjj||dyNt	j
|dt	ji}|j|dd|dd|j
|j||jdWn|jYn(Xtd|jjtjtj||ftddS)	NzFdecode_data and enable_SMTPUTF8 cannot be set to True at the same time)r(typerrz0%s started at %s
	Local addr: %s
	Remote addr:%s)r)Z
_localaddr_remoteaddrr3r4r5r%asyncore
dispatcherr/r@ZgetaddrinfoZSOCK_STREAMZ
create_socketZset_reuse_addrZbindZlistenrDr	__class__rtimectimerH)rZ	localaddrZ
remoteaddrr3r(r4rKZgai_resultsrrrr/xs*

zSMTPServer.__init__cCs6tdt|td|j||||j|j|j|j}dS)NzIncoming connection from %s)r)rrGrH
channel_classr3Z_mapr4r5)rr1r2Zchannelrrrhandle_acceptedszSMTPServer.handle_acceptedcKstdS)N)NotImplementedError)rrBrOrPrkr~rrrrwszSMTPServer.process_message)	rrrrrrr/rrwrrrrrts
c@seZdZddZddZdS)rcCsrd}|j}x`|D]X}|rP|rPd|d}t|tsDt|jd}t|d}t|tsbt|}t|qWdS)NrzX-Peer: rzutf-8)
splitlines
isinstancerjrGencoder)rrBrkZ	inheaderslinesrxZ
peerheaderrrr_print_message_contents



z&DebuggingServer._print_message_contentcKsXtd|r@|jdr&td|d|jdr@td|d|j||tddS)Nz%---------- MESSAGE FOLLOWS ----------rozmail options: %srpzrcpt options: %s
z%------------ END MESSAGE ------------)rgetr)rrBrOrPrkr~rrrrws

zDebuggingServer.process_messageN)rrrrrwrrrrrscs,eZdZfddZddZddZZS)rcs.d|kr|drtdtt|j||dS)Nr4z$PureProxy does not support SMTPUTF8.)r%superrr/)rrEr~)rrrr/szPureProxy.__init__c	Csh|jd}d}x|D]}|sP|d7}qW|j|d|dtj|}|j|||}td|tddS)Nrrrz
X-Peer: %szwe got some refusals:)r)rvinsertr9rq_deliverrrH)	rrBrOrPrkrryrxrefusedrrrrws


zPureProxy.process_messagecCsddl}i}yB|j}|j|jd|jdz|j|||}Wd|jXWn|jk
r}ztdtd|j	}WYdd}~Xnjt
|jfk
r}zHtd|jtdt
|dd	}t
|dd}	x|D]}
||	f||
<qWWYdd}~XnX|S)
Nrrzgot SMTPRecipientsRefused)rZgotZ	smtp_codeZ
smtp_errorignore)smtplibZSMTPZconnectrZsendmailquitZSMTPRecipientsRefusedrrHZ
recipientsrCZ
SMTPExceptionrru)rrOrPrkrrseZerrcodeerrmsgrrrrrs$
"zPureProxy._deliver)rrrr/rwr
__classcell__rr)rrrscs$eZdZfddZddZZS)r	cs.d|kr|drtdtt|j||dS)Nr4z'MailmanProxy does not support SMTPUTF8.)r%rrr/)rrEr~)rrrr/
szMailmanProxy.__init__cCs:ddlm}ddlm}ddlm}ddlm}g}	x~|D]v}
|
jjdd}|jd}t|dkrhq:|d}
t|dkr|d	}nd
}|j	|
s:|d!krq:|	j
|
|
|fq:Wx|	D]\}
}
}|j|
qWtddj
|td|r|j|||}td|tdi}||}|j|}|jds2||d<|jdsPtjtj|d<x|	D]\}
}
}td|
td|j|
}|s|j|
dd}|||
<|d
kr|j|d	dn|dkr|j|d	dnh|dkr|j|d	dnN|d
kr|j|d	dn4|d"krV|dkrd|d<nd |d<|j|d	dqVWdS)#Nr)StringIO)Utils)Message)MailList@-rWrradminownerrequestrqleavezforwarding recips:rn)rzwe got refusals:fromZFromZdateZDatezsending message to)lock)tolist)Ztoadmin)Ztoowner)Z	torequestZ	subscribeZSubjectZunsubscribe)rrrrrqr)rqr)iorZMailmanrrrlowerrvrhZlist_existsriremoverrqrHrrrrZEnqueue)rrBrOrPrkrrrrZ	listnamesZrcptZlocalpartsZlistnamerzrZmlistsrr
Zmlistrrrrwsd











zMailmanProxy.process_message)rrrr/rwrrr)rrr	sc@seZdZdZdZdZdZdS)OptionsTrNF)rrrsetuid	classname
size_limitr4rrrrr_src
!Csty.tjtjdddddddddd	g\}}Wn.tjk
r\}ztd|WYdd}~XnXt}x|D]\}}|d'krtdqj|d(krtttjdqj|d)krd|_	qj|d*kr||_
qj|d+krtjaqj|d,krd|_
qj|d-krjyt|}||_Wqjtd|tjdtjdYqjXqjWt|dkr@d}d}nPt|dkr\|d}d}n4t|d kr||d}|d}ntdd!tj||jd"}	|	dkrtdd#||d|	|_yt||	dd|_Wn$tk
rtdd$|YnX|jd"}	|	dkr"tdd%||d|	|_yt||	dd|_Wn$tk
rntdd&|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:25rWzInvalid arguments: %s:zBad local spec: %szBad local port: %szBad remote spec: %szBad remote port: %s)rr)rr)rr)rr)rr)rr)rr)getoptrargverrorrrrrJrrrrrHr4rrrh
COMMASPACErqrr	localhost	localportr%
remotehost
remoteport)
ZoptsrEroptionsoptr{Zint_sizeZ	localspecZ
remotespecryrrr	parseargsfsp






r__main__r)r)r4z7Cannot import module "pwd"; try running with -n option.)rnobodyrWz3Cannot setuid "nobody"; try running with -n option.)r)?rosrFrrr@rr-rwarningsrZemail._header_value_parserrr__all__rZprogramrJr
rHr9rrrr.rrrrrr	rrrrrrfindZlastdot
__import__rlocalsmodrruZclass_rrrrrr4proxyrpwdImportErrorrrrgetpwnamrPermissionErrorZloopKeyboardInterruptrrrr<module>Psv

M-SB






OHA YOOOO