B Ø"éæ/ôÄã@spdZddlZddlZddlZddlZddlZGdd„deƒZGdd„dej j ƒZ ddd d d d d dddddddgZ xve ee ƒƒD]fZe eZeeƒedƒkrªe eej¡Zn0gZx eD]Ze e eej¡¡q´WeeƒZ[ee e<[q~W[dde dej¡e d¡e dej¡gZe dejejB¡Zdd„ZegZdd„Zd d!„Zd"d#„Zed$ksfej dekrleƒdS)%z(Classes to parse mailer-daemon messages.éNc@s eZdZdS)Ú UnparseableN)Ú__name__Ú __module__Ú __qualname__©rrú?/opt/alt/python37/lib64/python3.7/Tools/scripts/mailerdaemon.pyr src@s$eZdZdd„Zdd„Zdd„ZdS)Ú ErrorMessagecCstjj |¡d|_dS)NÚ)ÚemailÚmessageÚMessageÚ__init__Úsub)Úselfrrrr szErrorMessage.__init__cCs>| d¡}|sdS| ¡}| d¡r(dSd|kr4dS||_dS)NZSubjectrz waiting mailéZwarning)ÚgetÚlowerÚ startswithr)rrrrrÚ is_warnings  zErrorMessage.is_warningc CsBx8tD]0}| ¡y||j|jƒStk r4YqXqWt‚dS)N)Ú EMPARSERSZ rewindbodyÚfprr)rÚprrrÚ get_errors s  zErrorMessage.get_errorsN)rrrr rrrrrrrs rz.error: (?Punresolvable): (?P.+))z?----- The following addresses had permanent fatal errors ----- z(?P[^ ].*) ( .* )?z(remote execution.* .*rmail (?P.+))z8The following recipients did not receive your message: zK +(?P.*) (The following recipients did not receive your message: )?z?------- Failure Reasons -------- (?P.*) (?P.*)z ^<(?P.*)>: (?P.*)z=^(?PUser mailbox exceeds allowed size): (?P.+)z0^5\d{2} <(?P[^ >]+)>\.\.\. (?P.+)z)^Original-Recipient: rfc822;(?P.*)zR^did not reach the following recipient\(s\): (?P.*) on .* +(?P.*)z+^ <(?P[^ >]+)> \.\.\. (?P.*)z@^Report on your message to: (?P.*) Reason: (?P.*)z^^Your message was not delivered to +(?P.*) +for the following reason: +(?P.*)zO^ was not +(?P[^ ].*?) * .* .* .* because:.* +(?P[^ ].*?) * r z^5\d{2} <>\.\.\. (?P.*)z<>\.\.\. (?P.*)z^<<< 5\d{2} (?P.*)z,===== stderr was ===== rmail: (?P.*)z ^Diagnostic-Code: (?P.*)z^From:c CsT| ¡}t |¡}|dkr$t|ƒ}n | d¡}g}g}d}xätD]Ü}t|ƒtdƒkrÎ|d |d|¡}|dk rÌy| d¡}Wntk rYnXx6|d  ||  d¡|¡}|dkr¶P|  | d¡¡q”WPq@| |d|¡}|dk r@|  | d¡¡y| d¡}Wntk rYnXPq@W|s*t ‚|s |}|dd…dkrR|dd…}xÌt D]Ä}t|ƒtdƒkrúx†tt|ƒdd d ƒD]n} || } t t | ¡ | d ¡¡tj¡} |  |¡}|dk r„|  d  |  ¡d | d¡ ¡¡¡|| =q„WqX| |¡}|dk rX| d¡}PqXWx.|D]&} |  d  |  ¡d | ¡¡¡q&W|S) NrrÚreasonrr ézreturned mail: r éÿÿÿÿz<>ú z: )ÚreadÚemparse_list_fromÚsearchÚlenÚstartÚemparse_list_listÚtypeÚgroupÚ IndexErrorÚmatchÚendÚappendrÚemparse_list_reasonÚrangeÚreÚcompileÚescapeÚjoinÚsplitÚ MULTILINEÚstrip) rrÚdataZresZ from_indexÚerrorsZemailsrZregexpÚir ZexprrrÚ emparse_listasj         &     &r5cCs0t|ƒ}t|ƒ}||krdS||kr(dSdSdS)Nrrr)Úint)ÚaÚbrrrÚ sort_numericœsr9c Csnt |¡t d¡}i}i}i}d}}}| t|fdd„t d¡ƒƒ} |  t¡x~| D]t} t| ƒ} t j | t d} |   d¡}t d| |d fd d |  ¡rÎ|  ¡t d ƒ|d }|rZt | d | ¡qZy |  ¡}Wn0tk r t dƒ|d }|  ¡wZYnXt t|ƒdƒx|D]ˆ}y,|  d¡d d…\}}dtj||f}Wnd}YnX||kr†d ||<d| |f||<n||d ||<d| |f||<q W|  ¡|d }|rZt | d | ¡qZWt dƒt |d|dd d t |dƒt dƒg} x0| ¡D]$}|  |||||||f¡qW|  ¡x*| D]"\}}}}t d||||fƒqDWdS)Nz^[0-9]*$rcSs| |¡dk S)N)r&)ÚfnÚpatrrrÚ¯ózparsedir..Ú.)Z_classZFromz %s %-40s rr)r'z warning onlyú,z** Not parseabler3Údateéz%s %02dz??????z%s (%s)z--------------z files parsed,zfiles warning-only,zfiles unparseablez %d %s - %s %s)ÚosÚchdirr+r,ÚfilterÚlistdirÚsortr9Úopenr Zmessage_from_filerZgetaddrÚprintrÚcloseÚrenamerrr ZgetdateÚcalendarZ month_abbrÚkeysr()ÚdirÚmodifyr;Z errordictZ errorfirstZ errorlastZnokZnwarnZnbadÚlistÚfilesr:rÚmZsenderr3ÚeZmmZddr@ZnumÚfirstZlastrrrÚparsedir¦sj          $rTcCsld}ttjƒdkr,tjddkr,d}tjd=ttjƒdkr^x,tjdd…D]}t||ƒqJWn td|ƒdS)Nrrz-dz/ufs/jack/Mail/errorsinbox)r ÚsysÚargvrT)rNZfolderrrrÚmainêsrWÚ__main__)!Ú__doc__rKZ email.messager r+rBrUÚ Exceptionrr r rr"r*r r4Úxr#r,r0Zxlr(Útupler)Ú IGNORECASErr5rr9rTrWrrVrrrrÚs\&  9 D