§
    Ètºfh(  ã                   ór  — d Z ddlZddlZddlZddlZddlmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZmZ ddlmZ d	Zej                             d
¦  «        ZdZdZ eej        ¦  «        Z ee¬¦  «        Z G d„ d¦  «        Zd„ Z ed¦  «        Zd„ Z  G d„ d¦  «        Z!d„ Z"d„ Z#da$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)dS )z4
Implementation module for the I{mailmail} command.
é    N)ÚConfigParser)ÚStringIO)Úversion)Úreactor)ÚLoggerÚtextFileLogObserver)Úsmtpz/etc/mailmailz~/.twisted/mailmailz	127.0.0.1z�Subject: Failed Message Delivery

  Message delivery failed.  The following occurred:

  %s
--
The Twisted sendmail application.
)Úobserverc                   ó   — e Zd ZdZdS )ÚOptionsat  
    Store the values of the parsed command-line options to the I{mailmail}
    script.

    @type to: L{list} of L{str}
    @ivar to: The addresses to which to deliver this message.

    @type sender: L{str}
    @ivar sender: The address from which this message is being sent.

    @type body: C{file}
    @ivar body: The object from which the message is to be read.
    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    ú\/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/mail/scripts/mailmail.pyr   r   (   s   € € € € € ðð ð ð r   r   c                  óp   — 	 t          j        ¦   «         S # t          $ r t          j        ¦   «         cY S w xY w©N)ÚosÚgetloginÚBaseExceptionÚgetpassÚgetuserr   r   r   r   r   8   sB   € ð!ÝŒ{‰}Œ}ÐøÝð !ð !ð !ÝŒÑ Ô Ð Ð Ð ð!øøøs   ‚ •5´5zUnsupported option.c                 óÌ  — t          ¦   «         }d„ | D ¦   «         |_        t          ¦   «         |_        d| v r#t	          dt
          ¦  «         t          ¦   «         ‚d| v rt          ‚d| v rt          ‚d| v rB| |                      d¦  «        dz            |_        |j         	                    |j        ¦  «         d| v sd	| v rt          ‚d
| v rd|_
        nd|_
        d| v rd|_
        nd|_
        d| v sd| v rd|_        nd|_        d| v rt          ‚d| v rd|_        |j        |_        g |_        nd|_        g |_        g g g g g dœ}t          ¦   «         }	 d}t           j                             ¦   «         }|                     ¦   «         snü|                     dd¦  «        }|d                              ¦   «         }|j        rQ|dv rM|j                             t.          j                             |d         ¦  «        d         g¦  «         |dk    rd}n6|dk    r0t.          j                             |d         ¦  «        d         |_        ||v r!||                              |d         ¦  «         |r|                     |¦  «         �Œ1|d         s|                     d|j        › d�¦  «         |d         sV|j        st          d¦  «        ‚|                     d                     d                     |j        ¦  «        ¦  «        ¦  «         |d         s*|                     dt=          j        ¦   «         › d�¦  «         |                     |¦  «         |j        r5|j        D ]-}	 |j         	                    |¦  «         Œ# t@          $ r Y Œ*w xY w| !                    dd¦  «         t          | "                    ¦   «         t           j         #                    ¦   «         z   ¦  «        |_$        |S ) Nc                 ó<   — g | ]}|                      d ¦  «        °|‘ŒS )ú-)Ú
startswith)Ú.0Úes     r   ú
<listcomp>z parseOptions.<locals>.<listcomp>D   s)   € Ð5Ð5Ð5�! 1§<¢<°Ñ#4Ô#4Ð5ˆAÐ5Ð5Ð5r   z	--versionzmailmail version:z-bpz-bsz-Fé   z-iz-oiz-odbTFz-odfz-oepz-epz-omz-t)ÚfromÚtoÚccÚbccÚdatez: r   )r$   r%   r&   r&   r#   zFrom: z
r$   zNo recipients specified.zTo: {}
z, r'   zDate: )%r   r$   r   ÚsenderÚprintr   Ú
SystemExitÚ_unsupportedOptionÚindexÚremoveÚ
backgroundÚprintErrorsÚrecipientsFromHeadersÚexcludeAddressesÚexludeAddressesr   ÚsysÚstdinÚreadlineÚstripÚsplitÚlowerÚextendÚemailÚutilsÚ	parseaddrÚappendÚwriteÚformatÚjoinr	   Ú
rfc822dater   ÚseekÚgetvalueÚreadÚbody)	ÚargvÚoÚrequiredHeadersÚbufferr>   ÚlineÚhdrsÚhdrÚas	            r   ÚparseOptionsrN   B   s  € Ý‰	Œ	€AØ5Ð5�tÐ5Ñ5Ô5€A„DÝ‰zŒz€A„Hð �dÐÐÝÐ!¥7Ñ+Ô+Ð+Ý‰lŒlÐð �€}€}Ý Ð ð �€}€}Ý Ð ð ˆt€|€|Ø˜Ÿ
š
 4Ñ(Ô(¨1Ñ,Ô-ˆŒØ	Œ�Š�A”HÑÔÐð 	�ˆˆ˜% 4˜-˜-Ý Ð ð �€~€~ØˆŒˆàˆŒð �€~€~ØˆŒˆàˆŒð 	�$ˆˆ˜E T˜M˜MØˆŒˆàˆŒð �€}€}Ý Ð ð
 ˆt€|€|Ø"&ˆÔØœTˆÔØˆŒˆà"'ˆÔØˆÔð ØØØØðð €Oõ ‰ZŒZ€FðØˆÝŒy×!Ò!Ñ#Ô#ˆØ�zŠz‰|Œ|ð 	Øà�zŠz˜$ Ñ"Ô"ˆà�1Œg�mŠm‰oŒoˆØÔ"ð 	9 sÐ.AÐ'AÐ'AØŒD�KŠK�œ×.Ò.¨t°A¬wÑ7Ô7¸Ô:Ð;Ñ<Ô<Ð<Ø�eŠ|ˆ|Ø�øØ�FŠ]ˆ]Ý”{×,Ò,¨T°!¬WÑ5Ô5°aÔ8ˆAŒHà�/Ð!Ð!Ø˜CÔ ×'Ò'¨¨Q¬Ñ0Ô0Ð0àð 	Ø�LŠL˜ÑÔÐñ)ð, ˜6Ô"ð .Ø�ŠÐ,˜aœhÐ,Ð,Ð,Ñ-Ô-Ð-Ø˜4Ô ð ;ØŒtð 	9ÝÐ7Ñ8Ô8Ð8Ø�Š�\×(Ò(¨¯ª°1´4©¬Ñ9Ô9Ñ:Ô:Ð:Ø˜6Ô"ð 7Ø�ŠÐ5�dœoÑ/Ô/Ð5Ð5Ð5Ñ6Ô6Ð6à
‡L‚L�ÑÔÐàÔð ØÔ#ð 	ð 	ˆAðØ”—’˜A‘”��øÝ ð ð ð Ø�ðøøøð ‡K‚K��1ÑÔÐÝ�f—o’oÑ'Ô'­#¬)¯.ª.Ñ*:Ô*:Ñ:Ñ;Ô;€A„FØ€Hs   ÍM9Í9
NÎNc                   ó   — e Zd ZdZd„ ZdS )ÚConfigurationaí  

    @ivar allowUIDs: A list of UIDs which are allowed to send mail.
    @ivar allowGIDs: A list of GIDs which are allowed to send mail.
    @ivar denyUIDs: A list of UIDs which are not allowed to send mail.
    @ivar denyGIDs: A list of GIDs which are not allowed to send mail.

    @type defaultAccess: L{bool}
    @ivar defaultAccess: L{True} if access will be allowed when no other access
    control rule matches or L{False} if it will be denied in that case.

    @ivar useraccess: Either C{'allow'} to check C{allowUID} first
    or C{'deny'} to check C{denyUID} first.

    @ivar groupaccess: Either C{'allow'} to check C{allowGID} first or
    C{'deny'} to check C{denyGID} first.

    @ivar identities: A L{dict} mapping hostnames to credentials to use when
    sending mail to that host.

    @ivar smarthost: L{None} or a hostname through which all outgoing mail will
    be sent.

    @ivar domain: L{None} or the hostname with which to identify ourselves when
    connecting to an MTA.
    c                 ó’   — g | _         g | _        g | _        g | _        d| _        d| _        i | _        d | _        d | _        d| _	        d S )NÚdenyT)
Ú	allowUIDsÚdenyUIDsÚ	allowGIDsÚdenyGIDsÚ
useraccessÚgroupaccessÚ
identitiesÚ	smarthostÚdomainÚdefaultAccess)Úselfs    r   Ú__init__zConfiguration.__init__Ø   sP   € ØˆŒØˆŒØˆŒØˆŒØ ˆŒØ!ˆÔàˆŒØˆŒØˆŒà!ˆÔÐÐr   N)r   r   r   r   r^   r   r   r   rP   rP   ¼   s-   € € € € € ðð ð6"ð "ð "ð "ð "r   rP   c           
      ó¢  — t          ¦   «         }t          j        | t          j        ¦  «        s|S t	          ¦   «         }|                     | ¦  «         |j        }|j        }|j        }|j	        }d||fd||ffD �]]\  }}}	| 
                    |¦  «        �r@d|fd|	ffD ]È\  }
}|                     ||
¦  «        r­|                     ||
¦  «        r—|                     ||
¦  «                             d¦  «        D ]m}	 t          |¦  «        }|                     |¦  «         Œ(# t           $ r9 t"                               d|d                              ¦   «         ||¬¦  «         Y Œjw xY wŒÉ|                     |d	¦  «        }d
„ d„ |                     d¦  «        D ¦   «         D ¦   «         }|d         dk    rt)          ||d¦  «         �ŒLt)          ||d¦  «         �Œ_| 
                    d¦  «        rk|                     d¦  «        D ]U\  }}|                     dd¦  «        }t-          |¦  «        dk    rt"                               d|¬¦  «         ŒK||j        |<   ŒV| 
                    d¦  «        rb|                     dd¦  «        r|                     dd¦  «        |_        |                     dd¦  «        r|                     dd¦  «        |_        |S )NrW   rX   ÚallowrR   ú,z6Illegal {prefix}ID in [{section}] section: {sectionID}r   )ÚprefixÚsectionÚ	sectionIDÚorderc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r   )r7   ©r   Úss     r   r!   zloadConfig.<locals>.<listcomp>  s    € ÐNÐNÐN 1�Q—W’W‘Y”YÐNÐNÐNr   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r   )r8   rg   s     r   r!   zloadConfig.<locals>.<listcomp>  s    € Ð(MÐ(MÐ(M°q¨¯ª©¬Ð(MÐ(MÐ(Mr   Úidentityú:r"   é   z.Illegal entry in [identity] section: {section})rc   Ú	addressesrZ   Údefault_domain)rP   r   ÚaccessÚR_OKr   rD   rS   rT   rU   rV   Úhas_sectionÚ
has_optionÚgetr7   Úintr=   Ú
ValueErrorÚ_logÚerrorÚupperÚsetattrÚitemsÚlenrY   rZ   r[   )ÚpathÚcÚpÚauÚduÚagÚdgrc   rM   ÚdÚmodeÚLrd   re   ÚhostÚupÚpartss                    r   Ú
loadConfigr‰   ç   s  € õ  	‰Œ€AåŒ9�T�2œ7Ñ#Ô#ð Øˆå‰Œ€AØ‡F‚Fˆ4�L„L€Là	
Œ€BØ	
Œ€BØ	
Œ€BØ	
Œ€BØ'¨¨RÐ0°=À"ÀbÐ2IÐJð ,ñ ,‰ˆ��AØ�=Š=˜Ñ!Ô!ñ 	,Ø$ a˜L¨6°1¨+Ð6ð 0ð 0‘��aØ—<’< ¨Ñ.Ô.ð 0°1·5²5¸À$Ñ3GÔ3Gð 0Ø%&§U¢U¨7°DÑ%9Ô%9×%?Ò%?ÀÑ%DÔ%Dð 0ð 0˜	ð0Ý(+¨I©¬˜Ið ŸHšH YÑ/Ô/Ð/Ð/øõ  *ð ð ð Ý ŸJšJð!Cà'.¨q¤z×'7Ò'7Ñ'9Ô'9Ø(/Ø*3ð 'ñ ô ð ð ð ðøøøøð —E’E˜' 7Ñ+Ô+ˆEØNÐNÐ(MÐ(M¸E¿KºKÈÑ<LÔ<LÐ(MÑ(MÔ(MÐNÑNÔNˆEØ�QŒx˜7Ò"Ð"Ý˜˜7 GÑ,Ô,Ð,Ñ,å˜˜7 FÑ+Ô+Ð+ùà‡}‚}�ZÑ Ô ð 'ØŸš 
Ñ+Ô+ð 	'ð 	'‰HˆD�"Ø—H’H˜S !Ñ$Ô$ˆEÝ�5‰zŒz˜QŠˆÝ—
’
ÐKÐUW�
ÑXÔXÐXØØ!&ˆAŒL˜ÑÐà‡}‚}�[Ñ!Ô!ð <Ø�<Š<˜ [Ñ1Ô1ð 	:ØŸ%š% ¨[Ñ9Ô9ˆAŒKØ�<Š<˜Ð%5Ñ6Ô6ð 	<Ø—u’u˜[Ð*:Ñ;Ô;ˆAŒHà€Hs   Ã;D Ä A E#	Å"E#	c                 ó,   — t          j        ¦   «          d S r   ©r   Ústop)Úresults    r   ÚsuccessrŽ   ,  s   € Ý„L�N„N€N€N€Nr   c                 ó0   — t          j        ¦   «          | ad S r   )r   rŒ   Úfailed)Úfs    r   Úfailurer’   3  s   € å„L�N„N€NØ€F€F€Fr   c                 ó¸   — t          j        | |j        |j        |j        ¦  «        }|                     t          t          ¦  «         t          j	        ¦   «          d S r   )
r	   Úsendmailr(   r$   rE   ÚaddCallbacksrŽ   r’   r   Úrun)r†   ÚoptionsÚidentrƒ   s       r   r”   r”   9  s@   € ÝŒ�d˜GœN¨G¬J¸¼ÑEÔE€AØ‡N‚N•7�GÑ$Ô$Ð$Ý„K�M„M€M€M€Mr   c                 ó�  — |j         g}d                     t          j        d         t          j                             d¦  «        ¦  «        }t          ¦   «         }|                      |¬¦  «         t          t          | 
                    ¦   «         z  ¦  «        }t	          j        d|||¦  «        }|                     d„ ¦  «         d S )Nz2"Internally Generated Message ({})"<postmaster@{}>r   Úascii©ÚfileÚ	localhostc                 ó(   — t          j        ¦   «         S r   r‹   )Ú_s    r   ú<lambda>zsenderror.<locals>.<lambda>H  s   € �œ™œ€ r   )r(   r?   r3   rF   r	   ÚDNSNAMEÚdecoder   ÚprintTracebackÚ	ERROR_FMTrC   r”   ÚaddBoth)r’   r—   Ú	recipientr(   rw   rE   rƒ   s          r   Ú	senderrorr§   ?  s«   € Ø”Ð €IØA×HÒHÝŒ�Œ•T”\×(Ò(¨Ñ1Ô1ñô €Fõ ‰JŒJ€EØ×Ò ÐÑ&Ô&Ð&Ý•I §¢Ñ 0Ô 0Ñ0Ñ1Ô1€DÝŒ�k 6¨9°dÑ;Ô;€AØ‡I‚IÐ&Ð&Ñ'Ô'Ð'Ð'Ð'r   c                 ó>  — t          j        ¦   «         }t          j        ¦   «         }| j        dk    r|| j        v rdS || j        v rdS n|| j        v rdS || j        v rdS | j        dk    r|| j        v rdS || j        v rdS n|| j        v rdS || j        v rdS | j	         S )NrR   TF)
r   ÚgetuidÚgetgidrW   rT   rS   rX   rV   rU   r\   )ÚconfÚuidÚgids      r   rR   rR   K  sÝ   € Ý
Œ)‰+Œ+€CÝ
Œ)‰+Œ+€Cà„˜&Ò Ð Ø�$”-ÐÐØ�4Ø�$”.Ð Ð Ø�5ð !ð �$”.Ð Ð Ø�5Ø�$”-ÐÐØ�4àÔ˜6Ò!Ð!Ø�$”-ÐÐØ�4Ø�$”.Ð Ð Ø�5ð !ð �$”.Ð Ð Ø�5Ø�$”-ÐÐØ�4àÔ!Ð!Ð!r   c                  óÒ  — t          t          j        dd …         ¦  «        } t          t          ¦  «        }t          t
          ¦  «        }t          |¦  «        st          |¦  «        rt                               d¦  «         d S |j	        p|j	        pt          }|j                             ¦   «         }|                     |j        ¦  «         |j        r|j        t          _        n|j        r|j        t          _        t#          || |¦  «         t$          rR| j        r4t$                               t          j        ¬¦  «         t-          d¦  «        ‚t/          t$          | ¦  «         d S d S )Nr"   zPermission deniedr›   )rN   r3   rF   r‰   Ú
GLOBAL_CFGÚ	LOCAL_CFGrR   rv   rw   rZ   Ú	SMARTHOSTrY   ÚcopyÚupdater[   r	   r¡   r”   r�   r/   r£   Ústderrr*   r§   )rG   ÚgConfÚlConfr†   r˜   s        r   r–   r–   h  s3  € Ý•S”X˜a˜b˜b”\Ñ"Ô"€AÝ•zÑ"Ô"€EÝ•yÑ!Ô!€EåˆE�{„{ð •d˜5‘k”kð Ý�
Š
Ð&Ñ'Ô'Ð'ØˆàŒ?Ð:˜eœoÐ:µ€DàÔ×!Ò!Ñ#Ô#€EØ	‡L‚L�Ô!Ñ"Ô"Ð"à„|ð $Ø”|�ŒˆØ	Œð $Ø”|�ŒåˆT�1�eÑÔÐåð !ØŒ=ð 	!Ý×!Ò!¥s¤zÐ!Ñ2Ô2Ð2Ý˜Q‘-”-Ðå•f˜aÑ Ô Ð Ð Ð ð!ð !r   )*r   Úemail.utilsr:   r   r   r3   Úconfigparserr   Úior   Útwisted.copyrightr   Útwisted.internetr   Útwisted.loggerr   r   Útwisted.mailr	   r¯   r|   Ú
expanduserr°   r±   r¤   r´   Ú_logObserverrv   r   r   r*   r+   rN   rP   r‰   rŽ   r�   r’   r”   r§   rR   r–   r   r   r   ú<module>rÀ      sû  ðð
ð ð
 Ð Ð Ð Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð à %Ð %Ð %Ð %Ð %Ð %Ø $Ð $Ð $Ð $Ð $Ð $Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø Ð Ð Ð Ð Ð à€
ØŒG×ÒÐ4Ñ5Ô5€	Ø€	ð€	ð #Ð" 3¤:Ñ.Ô.€Ø€v�|Ð$Ñ$Ô$€ðð ð ð ð ñ ô ð ð !ð !ð !ð  �ZÐ 5Ñ6Ô6Ð ðwð wð wðt("ð ("ð ("ð ("ð ("ñ ("ô ("ð ("ðVBð Bð BðJð ð ð 
€ðð ð ðð ð ð	(ð 	(ð 	(ð"ð "ð "ð:!ð !ð !ð !ð !r   