def _createCalculator(self):
     """
     Return a L{relaymanager.MXCalculator} which can be used to look up
     the mail exchange for a domain.
     """
     resolver = client.Resolver(resolv='/etc/resolv.conf')
     return relaymanager.MXCalculator(resolver)
Exemple #2
0
    def getMailExchange(self, host):
        mxc = relaymanager.MXCalculator()

        def cbMX(mxRecord):
            return str(mxRecord.name)

        return mxc.getMX(host).addCallback(cbMX)
Exemple #3
0
def getMX():
    """
    Retrieve the single MXCalculator instance, creating it first if
    necessary.
    """
    global _theMX
    if _theMX is None:
        _theMX = relaymanager.MXCalculator()
    return _theMX
Exemple #4
0
	def getMailExchange(self, recipientDomain):
		resolver = client.Resolver(servers=[('127.0.0.1', 53)])
		mxc = relaymanager.MXCalculator(resolver)
		d = mxc.getMX(recipientDomain)
		def gotMX(mx):
			print 'Got mx'
			resolver.protocol.transport.stopListening()
			return mx
		d.addCallback(gotMX)
		return d
Exemple #5
0
def send_mail(fromaddr, toaddr, subject, body, on_success=sendComplete, on_failure=handleError):
    try:
        recpt_domain = toaddr.split('@')[1]
    except (ValueError, IndexError):
        raise ValueError, "mal-formed destination address"
    message = buildMessage(fromaddr, toaddr, subject, body)
    messageData = message.as_string(unixfrom=False)

    def on_found_record(mx_rec):
        smtp_server = str(mx_rec.name)
        sending = smtp.sendmail(smtp_server, fromaddr, [toaddr], messageData)
        sending.addCallback(on_success).addErrback(on_failure)
        
    relaymanager.MXCalculator().getMX(recpt_domain).addCallback(on_found_record)
Exemple #6
0
def startMailer(session):
    if config.plugins.crashlogautosubmit.sendmail.value == "send_never":
        print("[CrashlogAutoSubmit] - not starting CrashlogAutoSubmit")
        return False

    def gotMXServer(mx):
        print("[CrashlogAutoSubmit] gotMXServer: ", mx.name)
        mxServerFound(mx.name, session)

    def handleMXError(error):
        print("[CrashlogAutoSubmit] - MX resolve ERROR:",
              error.getErrorMessage())

    if not config.misc.firstrun.value:
        relaymanager.MXCalculator().getMX(
            'crashlog.dream-multimedia-tv.de').addCallback(
                gotMXServer).addErrback(handleMXError)
Exemple #7
0
def getMailExchange(host):
    print "[CrashlogAutoSubmit] - getMailExchange"
    return relaymanager.MXCalculator().getMX(host).addCallback(_gotMXRecord)
Exemple #8
0
 def get_mx(self, host):
     on_found_record = lambda rec: str(rec.name)
     # return a deffered that will call on_found_record when it's done.
     # on_found_record's return value gets passed to exchange_mail
     return relaymanager.MXCalculator().getMX(host).addCallback(on_found_record)
Exemple #9
0
def getMailExchange(H):
    def cbMX(mxRecord):
        return str(mxRecord.name)
    return relaymanager.MXCalculator().getMX(H).addCallback(cbMX)
from twisted.mail import relaymanager

mxCalc = relaymanager.MXCalculator()


def getSMTPServer(emailAddress):
    username, domain = emailAddress.split("@")
    return mxCalc.getMX(domain).addCallback(__gotMXRecord)


def __gotMXRecord(mxRecord):
    return mxRecord.exchange


if __name__ == "__main__":
    from twisted.internet import reactor
    import sys
    address = sys.argv[1]

    def printServer(server):
        print server
        reactor.stop()

    def handleError(error):
        print >> sys.stderr, error.getErrorMessage()
        reactor.stop()

    getSMTPServer(address).addCallback(printServer).addErrback(handleError)
    reactor.run()