fyD ddlZddlZddlZddlZddlZddlZddlZddlmZm Z ddl m Z m Z gdZ dZeeedddlZddlZejdZdZGd d Zead Zd Zd Zd$dZGddejZGddejZGddeZGddeZ GddZ!dZ"edkrMe"Z#e#j$Z$de$vrJe$%dZ&e'e$de&e(e)dgZ*e$e&dzdZ$nddl+Z*e,e*e$Z-e-e#j.e#j/fe#j0e#j1fe#j2e#j3Z4e#j5r ddl6Z6n-#e7$r%e8dej9 ej:dYnwxYwe6j;d!d"Z< ej5e<n-#e=$r%e8d#ej9 ej:dYnwxYw ej>dS#e?$rYdSwxYwdS)%N) _deprecatedwarn) get_addr_specget_angle_addr) SMTPChannel SMTPServerDebuggingServer PureProxyzThe {name} module is deprecated and unmaintained and will be removed in Python {remove}. Please see aiosmtpd (https://aiosmtpd.readthedocs.io/) for the recommended replacement.) )removezPython SMTP proxy version 0.3ceZdZdZdZdS)DevnullcdSNselfmsgs ,/opt/alt/python311/lib64/python3.11/smtpd.pywritez Devnull.writeicdSrrrs rflushz Devnull.flushjrrN)__name__ __module__ __qualname__rrrrrrrhs"rr z, ictttztj|rt|tjtj|dS)Nfile)print__doc__globalssysstderrexit)coders rusager,ssN 'GII CJ//// $ c ####HTNNNNNrc*eZdZdZdZdZejefdZe dZ e dddfdZ d Z d Ze d Zejd Ze d ZejdZe dZejdZe dZejdZe dZejdZe dZejdZe dZejdZe dZejdZe dZejdZe dZejdZe dZejd 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+dS)2rric|Srr)xs rzSMTPChannel.sqrc~ t|jS#t$r |jcYSwxYwr)maxcommand_size_limitsvalues ValueErrorcommand_size_limitrs rmax_command_size_limitz"SMTPChannel.max_command_size_limitsN +t/668899 9 + + +* * * * +s %(<<NFcZtj|||||_||_||_||_||_||_|r|rtd|r"d|_ d|_ d|_ t|_n)d|_ d|_ td|_ d |_|d|_d |_|jt+j|_ ||_nB#t4$r5}||jt8jkrYd}~dSd}~wwxYwt=d t?|jt@ |!d |jdtDdS)NmapFdecode_data and enable_SMTPUTF8 cannot be set to True at the same timer! .r . FzPeer:r#z220  )#asynchat async_chat__init__ smtp_serverconnaddrdata_size_limitenable_SMTPUTF8 _decode_datar6 _emptystring_linesep_dotsepNEWLINE_newlineord_set_rset_state seen_greeting extended_smtpr4clearsocketgetfqdnfqdn getpeernamepeerOSErrorcloseerrnoENOTCONNr%repr DEBUGSTREAMpush __version__) rserverrGrHrIr;rJ decode_dataerrs rrEzSMTPChannel.__init__s$$T4S$999!  ..'  A{ A@AA A  " "D "DMDL#DMM #D #DMt99DL!DM "  &&(((N$$  ((**DII    JJLLLyEN** FFFFF   gtDI[9999 KK899999sD E%*EEc |j|_d|_g|_d|_d|_|ddS)NFrr?)COMMAND smtp_statemailfromrcpttosrequire_SMTPUTF8 num_bytesset_terminatorrs r_set_post_data_statez SMTPChannel._set_post_data_statesE=,  % G$$$$$rcL |d|_g|_dSNr!)rn received_datareceived_linesrs rrRzSMTPChannel._set_rset_states-< !!### rc<tdtd|jS)NzTAccess to __server attribute on SMTPChannel is deprecated, use 'smtp_server' insteadrDeprecationWarningrFrs r__serverzSMTPChannel.__servers* ();Q @ @ @rc@tdtd||_dS)NzRSetting __server attribute on SMTPChannel is deprecated, set 'smtp_server' insteadrtrurvalues rrwzSMTPChannel.__servers/ ();Q @ @ @ rc<tdtd|jS)NzUAccess to __line attribute on SMTPChannel is deprecated, use 'received_lines' insteadrtrrvrrrs r__linezSMTPChannel.__lines* +,> C C C""rc@tdtd||_dS)NzSSetting __line attribute on SMTPChannel is deprecated, set 'received_lines' insteadrtr|rys rr}zSMTPChannel.__lines/ +,> C C C#rc<tdtd|jS)NzRAccess to __state attribute on SMTPChannel is deprecated, use 'smtp_state' insteadrtrrvrhrs r__statezSMTPChannel.__states& '(:A ? ? ?rc@tdtd||_dS)NzPSetting __state attribute on SMTPChannel is deprecated, set 'smtp_state' insteadrtrrys rrzSMTPChannel.__states) '(:A ? ? ?rc<tdtd|jS)NzXAccess to __greeting attribute on SMTPChannel is deprecated, use 'seen_greeting' insteadrtrrvrSrs r __greetingzSMTPChannel.__greeting* *+=q B B B!!rc@tdtd||_dS)NzVSetting __greeting attribute on SMTPChannel is deprecated, set 'seen_greeting' insteadrtrrys rrzSMTPChannel.__greeting/ *+=q B B B"rc<tdtd|jS)NzSAccess to __mailfrom attribute on SMTPChannel is deprecated, use 'mailfrom' insteadrtrrvrirs r __mailfromzSMTPChannel.__mailfroms& %&8! = = =}rc@tdtd||_dS)NzQSetting __mailfrom attribute on SMTPChannel is deprecated, set 'mailfrom' insteadrtrrys rrzSMTPChannel.__mailfroms) %&8! = = = rc<tdtd|jS)NzQAccess to __rcpttos attribute on SMTPChannel is deprecated, use 'rcpttos' insteadrtrrvrjrs r __rcpttoszSMTPChannel.__rcpttoss& $%7 < < <|rc@tdtd||_dS)NzOSetting __rcpttos attribute on SMTPChannel is deprecated, set 'rcpttos' insteadrtrrys rrzSMTPChannel.__rcpttoss) $%7 < < < rc<tdtd|jS)NzTAccess to __data attribute on SMTPChannel is deprecated, use 'received_data' insteadrtrrvrqrs r__datazSMTPChannel.__datarrc@tdtd||_dS)NzRSetting __data attribute on SMTPChannel is deprecated, set 'received_data' insteadrtrrys rrzSMTPChannel.__datarrc<tdtd|jS)NzKAccess to __fqdn attribute on SMTPChannel is deprecated, use 'fqdn' insteadrtrrvrXrs r__fqdnzSMTPChannel.__fqdn & !"4a 9 9 9yrc@tdtd||_dS)NzISetting __fqdn attribute on SMTPChannel is deprecated, set 'fqdn' insteadrtrrys rrzSMTPChannel.__fqdn) !"4a 9 9 9 rc<tdtd|jS)NzKAccess to __peer attribute on SMTPChannel is deprecated, use 'peer' insteadrtrrvrZrs r__peerzSMTPChannel.__peerrrc@tdtd||_dS)NzISetting __peer attribute on SMTPChannel is deprecated, set 'peer' insteadrtrrys rrzSMTPChannel.__peerrrc<tdtd|jS)NzKAccess to __conn attribute on SMTPChannel is deprecated, use 'conn' insteadrtrrvrGrs r__connzSMTPChannel.__conn#rrc@tdtd||_dS)NzISetting __conn attribute on SMTPChannel is deprecated, set 'conn' insteadrtrrys rrzSMTPChannel.__conn(rrc<tdtd|jS)NzKAccess to __addr attribute on SMTPChannel is deprecated, use 'addr' insteadrtrrvrHrs r__addrzSMTPChannel.__addr.rrc@tdtd||_dS)NzISetting __addr attribute on SMTPChannel is deprecated, set 'addr' insteadrtrrys rrzSMTPChannel.__addr3rrcztj|t|dz|jrdnddS)Nr=utf-8ascii)rCrDrabytesrkrs rrazSMTPChannel.push:sQ  u <%:G''(I(I J J J J JrcZd}|j|jkr|j}n|j|jkr|j}|r |j|krdS|r|xjt |z c_|jr*|j t|ddS|j |dS)Nr) rhrgr8DATArIrllenrKrrappendstr)rdatalimits rcollect_incoming_dataz!SMTPChannel.collect_incoming_data?s ?dl * */EE _ ) )(E  (T^e++ F  ( NNc$ii 'NN   -   & &s4'9'9 : : : : :   & &t , , , , ,rc|j|j}tdt |t g|_|j|jkr!|jdc}|_|s| ddS|j st|d}| d}|dkr| }d}n;|d| }||dzd}|jr |j|n|j}||kr| ddSt%|d |zd}|s| d |zdS||dS|j|jkr| d d|_dS|jr.|j|jkr| d d|_dSg}||jD]H} | r/| d|jkr|| dd3|| I|j||_|j|j|j|jf} i} |j s|j|jd } |j j!| i| } |"| s| ddS| | dS)NzData:r#rz500 Error: bad syntaxrrBr.z500 Error: line too longsmtp_z&500 Error: command "%s" not recognizedz451 Internal confusionz552 Error: Too much mail data) mail_options rcpt_options250 OK)#rLjoinrrr%r_r`rhrgrlrarKrfindupperstriprTr4r7getattrrrIsplitrMrNrrPrqrZrirjrrrFprocess_messagern) rlineszicommandargmax_szmethodrtextargskwargsstatuss rfound_terminatorzSMTPChannel.found_terminatorOs %%d&9:: gtDzz 4444  ?dl * *!% B  1222$ *4)) #A1uu**,,rr(..**1Q344j&&((-Kd.w77373J F{{ 4555T7W#4d;;F  BWLMMM F3KKK F$)++ 2333!"# 9M(M(M 9:::!"D 4=11 & &&DGt|33KKQRR))))KK%%%%!%!3!3D!9!9D It}dlD]EHLOz250 Syntax: EHLO hostnameHELOz250 Syntax: HELO hostnamerz 250 Syntax: MAIL FROM:
RCPTz250 Syntax: RCPT TO:
rz250 Syntax: DATARSETz250 Syntax: RSETNOOPz250 Syntax: NOOPQUITz250 Syntax: QUITVRFYz250 Syntax: VRFY
zD501 Supported commands: EHLO HELO MAIL RCPT DATA RSET NOOP QUIT VRFYzD250 Supported commands: EHLO HELO MAIL RCPT DATA RSET NOOP QUIT VRFY)rrarT)rrextendedlc_argrs r smtp_HELPzSMTPChannel.smtp_HELPs  -0HYY[[F 5666666!! 5666666!!8%$8OC #6!!6%$8OC #6!! ,-----6!! ,-----6!! ,-----6!! ,-----6!! 677777 566666 II, - - - - -rc|rK||\}}|r|ddS|d|zdS|ddS)NzB252 Cannot VRFY user, but will accept message and attempt deliveryz502 Could not VRFY %sz501 Syntax: VRFY
)rra)rrrrs r smtp_VRFYzSMTPChannel.smtp_VRFYs  4"mmC00OGV 9 122222 1C788888 II2 3 3 3 3 3rcV|js|ddStd|td}|jr|dz }|||dS|d|}||\}}|s||dS|js|r||dS|jr|ddS| |_ | |j }|||dS|j s1| dd }|d vr|d dS|jr=| d d }|durd|_n|d ur|ddS| dd}|ra|s||dS|jr/t%||jkr|ddSt'|dkr|ddS||_td|jt|ddS)N503 Error: send HELO firstz ===> MAILr#z 501 Syntax: MAIL FROM:
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)rSrar%r`rTrrrirrrrrKpoprJrkisdigitrIintrkeys)rr syntaxerrrrbodysmtputf8sizes r smtp_MAILzSMTPChannel.smtp_MAILs!  II2 3 3 3 F k3[11116   3 2 2I ; IIi F))'377--,,  IIi F! f  IIi F =  II6 7 7 7 F"LLNN0022!233 > IIi F  ::ff--D/// MNNN   zz*e44H4(,%%&& BCCCzz&$''  <<>>  )$$$% #d))d6J*J*J VWWW v{{}}   ! ! IIR S S S F  i[9999 (rc|js|ddStd|t|js|ddSd}|jr|dz }|||dS|d|}||\}}|s||dS|js|r||dS| |_ | |j }|||dSt| dkr|d dS|j|td |jt|d dS) Nrz ===> RCPTr#z503 Error: need MAIL commandz501 Syntax: RCPT TO:
rzTO:rz8555 RCPT TO parameters not recognized or not implementedzrecips:r)rSrar%r`rirTrrrrrrrrrjr)rrrrrs r smtp_RCPTzSMTPChannel.smtp_RCPT:s!  II2 3 3 3 F k3[1111}  II4 5 5 5 F4   3 2 2I ; IIi F))%55--,,  IIi F! f  IIi F"LLNN0022!233 > IIi F v{{}}   ! ! IIP Q Q Q F G$$$ iK8888 (rc|r|ddS||ddS)Nz501 Syntax: RSETr)rarRrs r smtp_RSETzSMTPChannel.smtp_RSET]sL   II( ) ) ) F  (rc|js|ddS|js|ddS|r|ddS|j|_|d|ddS)Nrz503 Error: need RCPT commandz501 Syntax: DATAs . z#354 End data with .)rSrarjrrhrmrs r smtp_DATAzSMTPChannel.smtp_DATAds!  II2 3 3 3 F|  II4 5 5 5 F   II( ) ) ) F) L))) 788888rc0|ddS)Nz502 EXPN not implementedrrs r smtp_EXPNzSMTPChannel.smtp_EXPNss ,-----r),rrrrgrr7 collections defaultdictr4propertyr8DATA_SIZE_DEFAULTrErnrR_SMTPChannel__serversetter_SMTPChannel__line_SMTPChannel__state_SMTPChannel__greeting_SMTPChannel__mailfrom_SMTPChannel__rcpttos_SMTPChannel__data_SMTPChannel__fqdn_SMTPChannel__peer_SMTPChannel__conn_SMTPChannel__addrrarrrrrrrrrrrr rrrrrrrrrzsG D1+1;M2P2P2PQQ ++X+ ? ? ? **Xw==, # # # -K @ @ @ @lGGGGGG./ / / / %; 7 7 7 7ab11GQ h77F / /%v.  / / / / / /s=AB A5 B5B  B D#B;;D#A DD#)rrrrErrQ __classcell__)r3s@rr r sY99999 B B Brr ceZdZdZdZdZdZdS)OptionsTr NF)rrrsetuid classname size_limitrJrrrrhrhs" FIJOOOrrhc tjtjdddgd\}}n,#tj$r}t d|Yd}~nd}~wwxYwt }|D]\}}|dvrt d|dvr)t ttjdF|dvrd|_ R|d vr||_ ^|d vr tj a o|d vrd |_ {|d vrQ t|}||_#t d|ztj tjdYxYwt!|dkrd}d}nmt!|dkr |d}d}nOt!|dkr|d}|d}n+t ddt"|z|d} | dkrt dd|z|d| |_ t|| dzd|_n##t,$rt dd|zYnwxYw|d} | dkrt dd|z|d| |_ t|| dzd|_n##t,$rt dd|zYnwxYw|S)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:25rtr zInvalid arguments: %s:zBad local spec: %szBad local port: %szBad remote spec: %szBad remote port: %s)getoptr(argverrorr,rhr%rbr*rirjr)r`rJrrkr COMMASPACErr localhost localportr6 remotehost remoteport) optsrrboptionsoptrint_size localspec remotespecrs r parseargsrsN] HQRRL+    dd < a iiGS " " " !HHHH ' ' ' +    HQKKKK ( ( ("GNN % % % #G   % % %*KK ( ( (&*G # # $ $ $ s88%-"" &,3:>>>> % 4yy1}}$ # TQG # TQG !W  a(:??4+@+@@AAA sA1uu a% 1222!"1" G3 !A#$$00 333 a% 1222223A1uu a&3444#BQBG5 AaCDD!122 555 a&3444445 NsD-0AAA,D4D9H I?IJ!!KK__main__r>r.)rJz7Cannot import module "pwd"; try running with -n option.r#nobodyrtz3Cannot setuid "nobody"; try running with -n option.)r!)@r(osr]rrr4rVrwarningsrremail._header_value_parserrr__all___DEPRECATION_MSGrr+rCrsprogramrbrr`rOrurr,rDrr,rr r rhrr{rjrfindlastdot __import__r'localsmodrrclass_rvrwrxryrkrJproxyripwd ImportErrorr%r)r*getpwnamrPermissionErrorloopKeyboardInterruptrrrrs+N &&&&&&&&DDDDDDDD   # H&w7777  (1+-  gii   z.z.z.z.z.(%z.z.z.zJ"J"J"J"J"$J"J"J"Z77777j777<***** ***Z???D zikkG!I i//#&&j8G8,ggiiB4HHgaijj)  WS) $ $F FG%w'89&(:;%w7N P P PE~   JJJJ    EKRUR\ ] ] ] ] CHQKKKKK h''*  BIf        EGcj Y Y Y Y CHQKKKKK         9s6;F'F*)F*G'G?>G?HHH