Ich habe einen Python-SMTP-Server und -Client mit Twisted
implementiert. Wenn ich beide lokal teste, d. H. Mit localhost funktioniert alles perfekt. Ich möchte es jedoch in einer verteilten Umgebung überprüfen. So betreibe ich eine Amazon EC2-Instanz, auf dem ich meine SMTP-Server als Anwendung gestartet wird, wie untenSo senden Sie eine E-Mail an EC2-Instanzen mit Python & verdreht
factory = StdoutSMTPFactory("./tmp/mail")
tcp_server = internet.TCPServer(2500, factory)
application = service.Application("SMTPServer")
tcp_server.setServiceParent(application)
wo StdoutSMTPFactory
meine Implementierung einer Fabrik baut mein SMTP-Server. Mein SMTP-Client sieht wie folgt:
import sys
from email.mime.text import MIMEText
from twisted.internet import reactor
from twisted.mail.smtp import sendmail
from twisted.python import log
log.startLogging(sys.stdout)
host = "ec2-X-X-X-X.eu-west-1.compute.amazonaws.com"
sender = "[email protected]"
recipients = ["[email protected]"]
msg = MIMEText("""Test message
from SenderX
""")
msg["Subject"] = "Title"
msg["From"] = '"Secret Sender" <%s>' % (sender,)
msg["To"] = ", ".join(recipients)
deferred = sendmail(host, sender, recipients, msg.as_string(), port=2500)
deferred.addBoth(lambda result: reactor.stop())
reactor.run()
wo ec2-X-X-X-X.eu-west-1.compute.amazonaws.com
ist natürlich ein gültiger Hostname meiner EC2-Instanz, nur für den Posten verdeckt. Wenn ich versuche, eine E-Mail an meine Instanz senden ich erhalten die folgende:
[-] Log opened.
[-] Starting factory <twisted.mail.smtp.ESMTPSenderFactory instance at 0x10815d638>
[Uninitialized] SMTP Client retrying server. Retry: 5
[Uninitialized] SMTP Client retrying server. Retry: 4
[Uninitialized] SMTP Client retrying server. Retry: 3
[Uninitialized] SMTP Client retrying server. Retry: 2
[Uninitialized] SMTP Client retrying server. Retry: 1
[-] Stopping factory <twisted.mail.smtp.ESMTPSenderFactory instance at 0x10815d638>
[-] Main loop terminated.
Es gibt keine Fehler, weder auf dem Server oder Client-Seite. Es scheint nur, dass der Client keine Verbindung zum Server herstellen kann. Kann jemand vorschlagen, was ich falsch mache?