/usr/lib/python3/dist-packages/twisted/mail/__pycache__
Edit: /usr/lib/python3/dist-packages/twisted/mail/__pycache__/relay.cpython-310.pyc (5881B)
o
b @ s d Z ddlZddlZddlmZ ddlmZ ddlmZ G dd dZ G dd d Z
G d
d de
ejZG dd
d
e
ej
ZdS )z
Support for relaying mail.
N)UNIXAddress)smtp)logc @ s2 e Zd ZdZdddZdd Zdd Zd d
ZdS )
DomainQueuerzM
An SMTP domain which add messages to a queue intended for relaying.
Fc C s || _ || _d S N)serviceauthed)selfr
authenticated r 4/usr/lib/python3/dist-packages/twisted/mail/relay.py__init__ s
zDomainQueuer.__init__c sp jjr3tdtjdd}tdtjdd}t|dkr3t|dkr3 fddS t )a
Check whether mail can be relayed to a user.
@type user: L{User}
@param user: A user.
@rtype: no-argument callable which returns L{IMessage
}
provider
@return: A function which takes no arguments and returns a message
receiver for the user.
@raise SMTPBadRcpt: When mail cannot be relayed to the user.
N@ c s
S r )startMessager r userr r - s
z%DomainQueuer.exists..)
willRelaydestprotocolfilterstrorigsplitlenr SMTPBadRcpt)r r r r r r r exists s
zDomainQueuer.existsc C s$ |j }| jpt|tp|jdkS )z
Check whether we agree to relay.
The default is to relay for all connections over UNIX
sockets and all connections from localhost.
z 127.0.0.1) transportgetPeerr
isinstancer host)r addressr peerr r r r 0 s
zDomainQueuer.willRelayc C s| | j j}| \}}|( tdt|jdt|j t t|jt|jg| W d |S 1 s7w Y |S )z
Create an envelope and a message receiver for the relay queue.
@type user: L{User}
@param user: A user.
@rtype: L{IMessage }
@return: A message receiver.
zQueueing mail z -> N)
r queuecreateNewMessager msgr r r pickledump)r r r% envelopeFilesmtpMessager r r r : s
"
zDomainQueuer.startMessageN)F)__name__
__module____qualname____doc__r
r r r r r r r r s
r c @ s4 e Zd Zdd Zdd Zdd Zdd Zd d
ZdS )RelayerMixinc C s g | _ g | _|D ]5}t|d d
}t|}W d n1 s!w Y t|d }|| | j | | j| qd S )N-Hrb-D)messagesnamesopenr( loadappend)r messagePathsmessagefpmessageContentsr r r loadMessagesR s
zRelayerMixin.loadMessagesc C s | j sd S | j d d S )Nr r4 r r r r getMailFrom] zRelayerMixin.getMailFromc C s | j sd S | j d d gS )Nr r r> r? r r r getMailTob s zRelayerMixin.getMailToc C s | j sd S | j d d S )Nr r r> r? r r r getMailDatag rA zRelayerMixin.getMailDatac C sF |t jv rt| jd d t| jd d | jd= | jd= dS )zSince we only use one recipient per envelope, this
will be called with 0 or 1 addresses. We probably want
to do something with the error message if we failed.
r r3 r1 N)r SUCCESSosremover5 r4 )r coderespnumOk addressesr r r r sentMaill s
zRelayerMixin.sentMailN)r, r- r. r= r@ rB rC rK r r r r r0 L s r0 c @ e Zd ZdZdd ZdS )SMTPRelayerz)
A base class for SMTP relayers.
c O ( t jj| g|R i | | | dS )a
@type messagePaths: L{list} of L{bytes}
@param messagePaths: The base filename for each message to be relayed.
@type args: 1-L{tuple} of (0) L{bytes} or 2-L{tuple} of
(0) L{bytes}, (1) L{int}
@param args: Positional arguments for L{SMTPClient.__init__}
@type kw: L{dict}
@param kw: Keyword arguments for L{SMTPClient.__init__}
N)r
SMTPClientr
r= r r9 argskwr r r r
~ s zSMTPRelayer.__init__Nr, r- r. r/ r
r r r r rM y rM c @ rL )ESMTPRelayerz*
A base class for ESMTP relayers.
c O rN )a
@type messagePaths: L{list} of L{bytes}
@param messagePaths: The base filename for each message to be relayed.
@type args: 3-L{tuple} of (0) L{bytes}, (1) L{None} or
L{ClientContextFactory
},
(2) L{bytes} or 4-L{tuple} of (0) L{bytes}, (1) L{None}
or L{ClientContextFactory
}, (2) L{bytes},
(3) L{int}
@param args: Positional arguments for L{ESMTPClient.__init__}
@type kw: L{dict}
@param kw: Keyword arguments for L{ESMTPClient.__init__}
N)r ESMTPClientr
r= rP r r r r
s zESMTPRelayer.__init__NrS r r r r rU rT rU )r/ rE r( twisted.internet.addressr twisted.mailr twisted.pythonr r r0 rO rM rV rU r r r r s ;-