JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbrў fuc!@sRdZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z ddl m Z mZddddgZejdZd ZGd d d Zead Zd ZdZdZd ddZGdddejZGdddejZGdddeZGdddeZGdddeZ GdddZ!ddZ"e#dkrNe"Z$e$j%Z%de%kr e%j&dZ'e(e%de'e)e*d gZ+e%e'ddZ%n ddl,Z+e-e+e%Z.e.e$j/e$j0fe$j1e$j2fe$j3Z4e$j5r(yddl6Z6Wn2e7k re8dd ej9ej:dYnXe6j;d!d"Z<yej5e<Wn]e=k r$Z>z=e>jej?krne8d#d ej9ej:dWYddZ>[>XnXnyej@WneAk rJYnXndS($uAn RFC 5321 smtp proxy. 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. --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. iN(uwarn(u get_addr_specuget_angle_addru SMTPServeruDebuggingServeru PureProxyu MailmanProxyuPython SMTP proxy version 0.3cBs,|EeZdZddZddZdS(uDevnullcCsdS(N((uselfumsg((u*/opt/alt/python33/lib64/python3.3/smtpd.pyuwrite_su Devnull.writecCsdS(N((uself((u*/opt/alt/python33/lib64/python3.3/smtpd.pyuflush`su Devnull.flushN(u__name__u __module__u __qualname__uwriteuflush(u __locals__((u*/opt/alt/python33/lib64/python3.3/smtpd.pyuDevnull^s uDevnullu uu, icCsGtttdtj|r6t|dtjntj|dS(Nufile(uprintu__doc__uglobalsusysustderruexit(ucodeumsg((u*/opt/alt/python33/lib64/python3.3/smtpd.pyuusagejsuusagecBs|EeZdZdZdZdZejeddZej iedd6e ej Z e dd Zed d Zejd d Zed dZejddZeddZejddZeddZejddZeddZejddZeddZejddZeddZejddZedd Zejd!d Zed"d#Zejd$d#Zed%d&Zejd'd&Zed(d)Zejd*d)Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Z d5d6Z!d7d8Z"d9d:Z#d;d<Z$d=d>Z%d?d@Z&dAdBZ'dCdDZ(dEdFZ)dGdHZ*dIdJZ+dKdLZ,dMS(Nu SMTPChanneliiicCs|S(N((ux((u*/opt/alt/python33/lib64/python3.3/smtpd.pyuvsuSMTPChannel.iuMAILcCs@tjj||||_||_||_||_g|_|j|_ d|_ d|_ g|_ d|_tj|_d|_y|j|_WnRtjk r}z/|j|jdtjkrndSWYdd}~XnXtdt|jdt|jd|jtf|jdd|_!dS(NuiuPeer:ufileu 220 %s %ss F("uasynchatu async_chatu__init__u smtp_serveruconnuaddrudata_size_limitureceived_linesuCOMMANDu smtp_stateu seen_greetinguNoneumailfromurcpttosu received_datausocketugetfqdnufqdnu num_bytesu getpeernameupeeruerrorucloseuargsuerrnouENOTCONNuprinturepru DEBUGSTREAMupushu __version__uset_terminatoruFalseu extended_smtp(uselfuserveruconnuaddrudata_size_limituerr((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu__init__|s0             uSMTPChannel.__init__cCstdtd|jS(NuTAccess to __server attribute on SMTPChannel is deprecated, use 'smtp_server' insteadi(uwarnuDeprecationWarningu smtp_server(uself((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu__servers uSMTPChannel.__servercCstdtd||_dS(NuRSetting __server attribute on SMTPChannel is deprecated, set 'smtp_server' insteadi(uwarnuDeprecationWarningu smtp_server(uselfuvalue((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu__servers cCstdtd|jS(NuUAccess to __line attribute on SMTPChannel is deprecated, use 'received_lines' insteadi(uwarnuDeprecationWarningureceived_lines(uself((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu__lines uSMTPChannel.__linecCstdtd||_dS(NuSSetting __line attribute on SMTPChannel is deprecated, set 'received_lines' insteadi(uwarnuDeprecationWarningureceived_lines(uselfuvalue((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu__lines cCstdtd|jS(NuRAccess to __state attribute on SMTPChannel is deprecated, use 'smtp_state' insteadi(uwarnuDeprecationWarningu smtp_state(uself((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu__states uSMTPChannel.__statecCstdtd||_dS(NuPSetting __state attribute on SMTPChannel is deprecated, set 'smtp_state' insteadi(uwarnuDeprecationWarningu smtp_state(uselfuvalue((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu__states cCstdtd|jS(NuXAccess to __greeting attribute on SMTPChannel is deprecated, use 'seen_greeting' insteadi(uwarnuDeprecationWarningu seen_greeting(uself((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu __greetings uSMTPChannel.__greetingcCstdtd||_dS(NuVSetting __greeting attribute on SMTPChannel is deprecated, set 'seen_greeting' insteadi(uwarnuDeprecationWarningu seen_greeting(uselfuvalue((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu __greetings cCstdtd|jS(NuSAccess to __mailfrom attribute on SMTPChannel is deprecated, use 'mailfrom' insteadi(uwarnuDeprecationWarningumailfrom(uself((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu __mailfroms uSMTPChannel.__mailfromcCstdtd||_dS(NuQSetting __mailfrom attribute on SMTPChannel is deprecated, set 'mailfrom' insteadi(uwarnuDeprecationWarningumailfrom(uselfuvalue((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu __mailfroms cCstdtd|jS(NuQAccess to __rcpttos attribute on SMTPChannel is deprecated, use 'rcpttos' insteadi(uwarnuDeprecationWarningurcpttos(uself((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu __rcpttoss uSMTPChannel.__rcpttoscCstdtd||_dS(NuOSetting __rcpttos attribute on SMTPChannel is deprecated, set 'rcpttos' insteadi(uwarnuDeprecationWarningurcpttos(uselfuvalue((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu __rcpttoss cCstdtd|jS(NuTAccess to __data attribute on SMTPChannel is deprecated, use 'received_data' insteadi(uwarnuDeprecationWarningu received_data(uself((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu__datas uSMTPChannel.__datacCstdtd||_dS(NuRSetting __data attribute on SMTPChannel is deprecated, set 'received_data' insteadi(uwarnuDeprecationWarningu received_data(uselfuvalue((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu__datas cCstdtd|jS(NuKAccess to __fqdn attribute on SMTPChannel is deprecated, use 'fqdn' insteadi(uwarnuDeprecationWarningufqdn(uself((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu__fqdns uSMTPChannel.__fqdncCstdtd||_dS(NuISetting __fqdn attribute on SMTPChannel is deprecated, set 'fqdn' insteadi(uwarnuDeprecationWarningufqdn(uselfuvalue((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu__fqdns cCstdtd|jS(NuKAccess to __peer attribute on SMTPChannel is deprecated, use 'peer' insteadi(uwarnuDeprecationWarningupeer(uself((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu__peers uSMTPChannel.__peercCstdtd||_dS(NuISetting __peer attribute on SMTPChannel is deprecated, set 'peer' insteadi(uwarnuDeprecationWarningupeer(uselfuvalue((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu__peers cCstdtd|jS(NuKAccess to __conn attribute on SMTPChannel is deprecated, use 'conn' insteadi(uwarnuDeprecationWarninguconn(uself((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu__conns uSMTPChannel.__conncCstdtd||_dS(NuISetting __conn attribute on SMTPChannel is deprecated, set 'conn' insteadi(uwarnuDeprecationWarninguconn(uselfuvalue((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu__conns cCstdtd|jS(NuKAccess to __addr attribute on SMTPChannel is deprecated, use 'addr' insteadi(uwarnuDeprecationWarninguaddr(uself((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu__addrs uSMTPChannel.__addrcCstdtd||_dS(NuISetting __addr attribute on SMTPChannel is deprecated, set 'addr' insteadi(uwarnuDeprecationWarninguaddr(uselfuvalue((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu__addr s cCs$tjj|t|dddS(Nu uascii(uasynchatu async_chatupushubytes(uselfumsg((u*/opt/alt/python33/lib64/python3.3/smtpd.pyupushsuSMTPChannel.pushcCsd}|j|jkr$|j}n|j|jkrB|j}n|r[|j|kr[dS|ry|jt|7_n|jj t |ddS(Nuutf-8( uNoneu smtp_stateuCOMMANDumax_command_size_limituDATAudata_size_limitu num_bytesulenureceived_linesuappendustr(uselfudataulimit((u*/opt/alt/python33/lib64/python3.3/smtpd.pyucollect_incoming_datas  u!SMTPChannel.collect_incoming_datac Cstj|j}tdt|dtg|_|j|jkrQ|jd}|_|sp|j ddSd}|j d}|dkr|j }d}n0|d|j }||ddj }|jr|j|n|j}||kr|j ddSt|d|d}|sC|j d |dS||dS|j|jkr}|j d d|_dS|jr|j|jkr|j d d|_dSg}xT|jd D]C} | r| dd kr|j| ddq|j| qWtj||_|jj|j|j|j|j} g|_d|_|j|_d|_|jd| s|j dn |j | dS(NuData:ufileiu500 Error: bad syntaxu iu500 Error: line too longusmtp_u&500 Error: command "%s" not recognizedu451 Internal confusionu552 Error: Too much mail datau u.s u250 OK(u EMPTYSTRINGujoinureceived_linesuprinturepru DEBUGSTREAMu smtp_stateuCOMMANDu num_bytesupushuNoneufinduupperustripu extended_smtpucommand_size_limitsucommand_size_limitugetattruDATAudata_size_limitusplituappenduNEWLINEu received_datau smtp_serveruprocess_messageupeerumailfromurcpttosuset_terminator( uselfulineuszumethoduiucommanduargumax_szudatautextustatus((u*/opt/alt/python33/lib64/python3.3/smtpd.pyufound_terminator$sf                  uSMTPChannel.found_terminatorcCsZ|s|jddS|jr0|jdn&||_d|_|jd|jdS(Nu501 Syntax: HELO hostnameu503 Duplicate HELO/EHLOu250 %sF(upushu seen_greetinguFalseu extended_smtpufqdn(uselfuarg((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu smtp_HELOas    uSMTPChannel.smtp_HELOcCs|s|jddS|jr0|jdnS||_d|_|jd|j|jrv|jd|jn|jddS(Nu501 Syntax: EHLO hostnameu503 Duplicate HELO/EHLOu250-%su 250-SIZE %su250 HELPT(upushu seen_greetinguTrueu extended_smtpufqdnudata_size_limit(uselfuarg((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu smtp_EHLOls     uSMTPChannel.smtp_EHLOcCs'|r|jdn |jddS(Nu501 Syntax: NOOPu250 OK(upush(uselfuarg((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu smtp_NOOPzsuSMTPChannel.smtp_NOOPcCs|jd|jdS(Nu221 Bye(upushuclose_when_done(uselfuarg((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu smtp_QUITs uSMTPChannel.smtp_QUITcCs@t|}|d|j|kr<||djSdS(Nu(ulenuupperustrip(uselfukeyworduargukeylen((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu_strip_command_keywords u"SMTPChannel._strip_command_keywordcCsc|s dS|jjdr4t|\}}nt|\}}|sV||fS|j|fS(Nuu<(uu(ulstripu startswithuget_angle_addru get_addr_specu addr_spec(uselfuarguaddressurest((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu_getaddrs uSMTPChannel._getaddrcCs*dd|jD}dd|DS(NcSs.g|]$}d|kr|jddqS(u=i(usplit(u.0uparam((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu s u*SMTPChannel._getparams..cSs+i|]!\}}|jr||qS((uisalnum(u.0ukuv((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu s u*SMTPChannel._getparams..(usplit(uselfuparams((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu _getparamssuSMTPChannel._getparamscCsm|r\d}|j}|dkr4|jdqi|dkrP|jdqi|dkrd}|jrx||7}n|j|qi|dkrd }|jr||7}n|j|qi|d kr|jd qi|d kr|jd qi|dkr|jdqi|dkr0|jdqi|dkrL|jdqi|jdn |jddS(Nu [SP uRCPTu250 Syntax: RCPT TO:
uDATAu250 Syntax: DATAuRSETu250 Syntax: RSETuNOOPu250 Syntax: NOOPuQUITu250 Syntax: QUITuVRFYu250 Syntax: VRFY
uD501 Supported commands: EHLO HELO MAIL RCPT DATA RSET NOOP QUIT VRFYuD250 Supported commands: EHLO HELO MAIL RCPT DATA RSET NOOP QUIT VRFY(uupperupushu extended_smtp(uselfuarguextendedulc_argumsg((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu smtp_HELPs:              uSMTPChannel.smtp_HELPcCsV|rE|j|\}}|r1|jdqR|jd|n |jddS(NuB252 Cannot VRFY user, but will accept message and attempt deliveryu502 Could not VRFY %su501 Syntax: VRFY
(u_getaddrupush(uselfuarguaddressuparams((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu smtp_VRFYs uSMTPChannel.smtp_VRFYcCs|js|jddStd|dtd}|jrI|d7}n|dkrf|j|dS|jd|}|j|\}}|s|j|dS|j r|r|j|dS|s|j|dS|jr|jddS|j |j }|dkr(|j|dS|j dd}|r|j s]|j|dS|j rt||j kr|jd dSnt|jd kr|jd dS||_td |jdt|jd dS(Nu503 Error: send HELO firstu ===> MAILufileu 501 Syntax: MAIL FROM:
u [SP ]uFROM:u503 Error: nested MAIL commanduSIZEu:552 Error: message size exceeds fixed maximum message sizeiu:555 MAIL FROM parameters not recognized or not implementedusender:u250 OK(u seen_greetingupushuprintu DEBUGSTREAMu extended_smtpuNoneu_strip_command_keywordu_getaddrumailfromu _getparamsuupperupopuisdigitudata_size_limituintulenukeys(uselfuargu syntaxerruaddressuparamsusize((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu smtp_MAILsT                  uSMTPChannel.smtp_MAILcCs|js|jddStd|dt|jsG|jddSd}|jrc|d7}n|dkr|j|dS|jd|}|j|\}}|s|j|dS|r|jr|j |j }|dkr|j|dSq|j|dSn|s-|j|dS|r\t |j dkr\|jd dS|ss|jddS|j j|td |j dt|jd dS( Nu503 Error: send HELO firstu ===> RCPTufileu503 Error: need MAIL commandu501 Syntax: RCPT TO:
u [SP ]uTO:iu8555 RCPT TO parameters not recognized or not implementedurecips:u250 OK(u seen_greetingupushuprintu DEBUGSTREAMumailfromu extended_smtpuNoneu_strip_command_keywordu_getaddru _getparamsuupperulenukeysurcpttosuappend(uselfuargu syntaxerruaddressuparams((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu smtp_RCPTsL                uSMTPChannel.smtp_RCPTcCsO|r|jddSd|_g|_d|_|j|_|jddS(Nu501 Syntax: RSETuu250 OK(upushuNoneumailfromurcpttosu received_datauCOMMANDu smtp_state(uselfuarg((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu smtp_RSET s     uSMTPChannel.smtp_RSETcCsu|js|jddS|js4|jddS|rK|jddS|j|_|jd|jddS(Nu503 Error: send HELO firstu503 Error: need RCPT commandu501 Syntax: DATAs . u#354 End data with .(u seen_greetingupushurcpttosuDATAu smtp_stateuset_terminator(uselfuarg((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu smtp_DATA+s       uSMTPChannel.smtp_DATAcCs|jddS(Nu502 EXPN not implemented(upush(uselfuarg((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu smtp_EXPN:suSMTPChannel.smtp_EXPNN(-u__name__u __module__u __qualname__uCOMMANDuDATAucommand_size_limitu collectionsu defaultdictucommand_size_limitsuupdateumaxuvaluesumax_command_size_limituDATA_SIZE_DEFAULTu__init__upropertyu_SMTPChannel__serverusetteru_SMTPChannel__lineu_SMTPChannel__stateu_SMTPChannel__greetingu_SMTPChannel__mailfromu_SMTPChannel__rcpttosu_SMTPChannel__datau_SMTPChannel__fqdnu_SMTPChannel__peeru_SMTPChannel__connu_SMTPChannel__addrupushucollect_incoming_dataufound_terminatoru smtp_HELOu smtp_EHLOu smtp_NOOPu smtp_QUITu_strip_command_keywordu_getaddru _getparamsu smtp_HELPu smtp_VRFYu smtp_MAILu smtp_RCPTu smtp_RSETu smtp_DATAu smtp_EXPN(u __locals__((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu SMTPChannelqs^   =      # , ) u SMTPChannelcBsA|EeZdZeZeddZddZddZdS(u SMTPServerc Cs||_||_||_tjj|y>|jtjtj |j |j ||j dWn|j Yn6Xtd|jjtjtj||fdtdS(Niu0%s started at %s Local addr: %s Remote addr:%sufile(u _localaddru _remoteaddrudata_size_limituasyncoreu dispatcheru__init__u create_socketusocketuAF_INETu SOCK_STREAMuset_reuse_addrubindulistenucloseuprintu __class__u__name__utimeuctimeu DEBUGSTREAM(uselfu localaddru remoteaddrudata_size_limit((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu__init__Bs      uSMTPServer.__init__cCs9tdt|dt|j||||j}dS(NuIncoming connection from %sufile(uprinturepru DEBUGSTREAMu channel_classudata_size_limit(uselfuconnuaddruchannel((u*/opt/alt/python33/lib64/python3.3/smtpd.pyuhandle_acceptedVsuSMTPServer.handle_acceptedcCs tdS(uIOverride 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. This function should return None, for a normal `250 Ok' response; otherwise it returns the desired response string in RFC 821 format. N(uNotImplementedError(uselfupeerumailfromurcpttosudata((u*/opt/alt/python33/lib64/python3.3/smtpd.pyuprocess_message[suSMTPServer.process_messageN( u__name__u __module__u __qualname__u SMTPChannelu channel_classuDATA_SIZE_DEFAULTu__init__uhandle_accepteduprocess_message(u __locals__((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu SMTPServer>s cBs |EeZdZddZdS(uDebuggingServercCsod}|jd}tdx?|D]7}|rS| rStd|dd}nt|q&WtddS(Niu u%---------- MESSAGE FOLLOWS ----------uX-Peer:iu%------------ END MESSAGE ------------(usplituprint(uselfupeerumailfromurcpttosudatau inheadersulinesuline((u*/opt/alt/python33/lib64/python3.3/smtpd.pyuprocess_messagevs    uDebuggingServer.process_messageN(u__name__u __module__u __qualname__uprocess_message(u __locals__((u*/opt/alt/python33/lib64/python3.3/smtpd.pyuDebuggingServertscBs,|EeZdZddZddZdS(u PureProxyc Cs|jd}d}x"|D]}|s,Pn|d7}qW|j|d|dtj|}|j|||}td|dtdS(Nu iiu X-Peer: %suwe got some refusals:ufile(usplituinsertuNEWLINEujoinu_deliveruprintu DEBUGSTREAM( uselfupeerumailfromurcpttosudataulinesuiulineurefused((u*/opt/alt/python33/lib64/python3.3/smtpd.pyuprocess_messages uPureProxy.process_messagec Cs:ddl}i}yU|j}|j|jd|jdz|j|||}Wd|jXWn|jk r}ztddt|j }WYdd}~Xnt j |j fk r5}z`td|j dtt|dd }t|dd} x|D]} || f|| tjtjdddddddddg\}}Wn5tjk ru}ztd|WYdd}~XnXt}x|D]\}}|d"krtd q|d#krttdtjtj d q|d$krd |_ q|d%kr ||_ q|d&kr"tja q|d'kryt |}||_Wqytd|dtjtj dYqyXqqWt|dkrd}d}nht|dkr|d }d}nCt|dkr|d }|d}ntddtj||jd} | d kr5tdd|n|d| |_y!t || dd|_Wn#tk rtdd|YnX|jd} | d krtdd |n|d| |_y!t || dd|_Wn#tk rtdd!|YnX|S((NiunVhc:s:duclass=unosetuiduversionuhelpusize=udebugu-hu--helpiu-Vu --versionufileu-nu --nosetuidu-cu--classu-du--debugu-su--sizeuInvalid size: ulocalhost:8025u localhost:25iiuInvalid arguments: %su:uBad local spec: %suBad local port: %suBad remote spec: %suBad remote port: %s(u-hu--help(u-Vu --version(u-nu --nosetuid(u-cu--class(u-du--debug(u-su--size(ugetoptusysuargvuerroruusageuOptionsuprintu __version__ustderruexitusetuidu classnameu DEBUGSTREAMuintu size_limitulenu COMMASPACEujoinufindu localhostu localportu ValueErroru remotehostu remoteport( uoptsuargsueuoptionsuoptuarguint_sizeu localspecu remotespecui((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu parseargssj%                    !  ! u parseargsu__main__u.iu7Cannot import module "pwd"; try running with -n option.ufileunobodyiu3Cannot setuid "nobody"; try running with -n option.(Bu__doc__usysuosuerrnougetoptutimeusocketuasyncoreuasynchatu collectionsuwarningsuwarnuemail._header_value_parseru get_addr_specuget_angle_addru__all__uargvuprogramu __version__uDevnullu DEBUGSTREAMuNEWLINEu EMPTYSTRINGu COMMASPACEuDATA_SIZE_DEFAULTuusageu async_chatu SMTPChannelu dispatcheru SMTPServeruDebuggingServeru PureProxyu MailmanProxyuOptionsu parseargsu__name__uoptionsu classnameurfindulastdotu __import__uglobalsulocalsumodu__main__ugetattruclass_u localhostu localportu remotehostu remoteportu size_limituproxyusetuidupwdu ImportErroruprintustderruexitugetpwnamunobodyuOSErrorueuEPERMuloopuKeyboardInterrupt(((u*/opt/alt/python33/lib64/python3.3/smtpd.pyu)sv#           6(N ?    (    #