| Index: third_party/twisted_8_1/twisted/mail/relay.py
|
| diff --git a/third_party/twisted_8_1/twisted/mail/relay.py b/third_party/twisted_8_1/twisted/mail/relay.py
|
| deleted file mode 100644
|
| index 5fbf48f4ddf2a164797e6eb35ea5fe332cbfd949..0000000000000000000000000000000000000000
|
| --- a/third_party/twisted_8_1/twisted/mail/relay.py
|
| +++ /dev/null
|
| @@ -1,114 +0,0 @@
|
| -# -*- test-case-name: twisted.mail.test.test_mail -*-
|
| -# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
|
| -# See LICENSE for details.
|
| -
|
| -
|
| -"""Support for relaying mail for twisted.mail"""
|
| -
|
| -from twisted.mail import smtp
|
| -from twisted.python import log
|
| -from twisted.internet.address import UNIXAddress
|
| -
|
| -import os
|
| -
|
| -try:
|
| - import cPickle as pickle
|
| -except ImportError:
|
| - import pickle
|
| -
|
| -class DomainQueuer:
|
| - """An SMTP domain which add messages to a queue intended for relaying."""
|
| -
|
| - def __init__(self, service, authenticated=False):
|
| - self.service = service
|
| - self.authed = authenticated
|
| -
|
| - def exists(self, user):
|
| - """Check whether we will relay
|
| -
|
| - Call overridable willRelay method
|
| - """
|
| - if self.willRelay(user.dest, user.protocol):
|
| - # The most cursor form of verification of the addresses
|
| - orig = filter(None, str(user.orig).split('@', 1))
|
| - dest = filter(None, str(user.dest).split('@', 1))
|
| - if len(orig) == 2 and len(dest) == 2:
|
| - return lambda: self.startMessage(user)
|
| - raise smtp.SMTPBadRcpt(user)
|
| -
|
| - def willRelay(self, address, protocol):
|
| - """Check whether we agree to relay
|
| -
|
| - The default is to relay for all connections over UNIX
|
| - sockets and all connections from localhost.
|
| - """
|
| - peer = protocol.transport.getPeer()
|
| - return self.authed or isinstance(peer, UNIXAddress) or peer.host == '127.0.0.1'
|
| -
|
| - def startMessage(self, user):
|
| - """Add envelope to queue and returns ISMTPMessage."""
|
| - queue = self.service.queue
|
| - envelopeFile, smtpMessage = queue.createNewMessage()
|
| - try:
|
| - log.msg('Queueing mail %r -> %r' % (str(user.orig), str(user.dest)))
|
| - pickle.dump([str(user.orig), str(user.dest)], envelopeFile)
|
| - finally:
|
| - envelopeFile.close()
|
| - return smtpMessage
|
| -
|
| -class RelayerMixin:
|
| -
|
| - # XXX - This is -totally- bogus
|
| - # It opens about a -hundred- -billion- files
|
| - # and -leaves- them open!
|
| -
|
| - def loadMessages(self, messagePaths):
|
| - self.messages = []
|
| - self.names = []
|
| - for message in messagePaths:
|
| - fp = open(message+'-H')
|
| - try:
|
| - messageContents = pickle.load(fp)
|
| - finally:
|
| - fp.close()
|
| - fp = open(message+'-D')
|
| - messageContents.append(fp)
|
| - self.messages.append(messageContents)
|
| - self.names.append(message)
|
| -
|
| - def getMailFrom(self):
|
| - if not self.messages:
|
| - return None
|
| - return self.messages[0][0]
|
| -
|
| - def getMailTo(self):
|
| - if not self.messages:
|
| - return None
|
| - return [self.messages[0][1]]
|
| -
|
| - def getMailData(self):
|
| - if not self.messages:
|
| - return None
|
| - return self.messages[0][2]
|
| -
|
| - def sentMail(self, code, resp, numOk, addresses, log):
|
| - """Since 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.
|
| - """
|
| - if code in smtp.SUCCESS:
|
| - # At least one, i.e. all, recipients successfully delivered
|
| - os.remove(self.names[0]+'-D')
|
| - os.remove(self.names[0]+'-H')
|
| - del self.messages[0]
|
| - del self.names[0]
|
| -
|
| -class SMTPRelayer(RelayerMixin, smtp.SMTPClient):
|
| - def __init__(self, messagePaths, *args, **kw):
|
| - smtp.SMTPClient.__init__(self, *args, **kw)
|
| - self.loadMessages(messagePaths)
|
| -
|
| -class ESMTPRelayer(RelayerMixin, smtp.ESMTPClient):
|
| - def __init__(self, messagePaths, *args, **kw):
|
| - smtp.ESMTPClient.__init__(self, *args, **kw)
|
| - self.loadMessages(messagePaths)
|
|
|