J'ai implémenté un serveur et un client SMTP python, en utilisant Twisted
. Lorsque je les teste tous les deux localement, c'est-à-dire que j'utilise localhost, tout fonctionne parfaitement. Cependant, je veux le vérifier dans un environnement distribué. Ainsi, je lance une instance EC2 d'Amazon, sur lequel j'ai commencé mon serveur SMTP comme une application, comme le montre ci-dessousComment envoyer un email à des instances EC2 en utilisant python & twisted
factory = StdoutSMTPFactory("./tmp/mail")
tcp_server = internet.TCPServer(2500, factory)
application = service.Application("SMTPServer")
tcp_server.setServiceParent(application)
où StdoutSMTPFactory
est ma mise en œuvre d'une usine de construction de mon serveur SMTP. Mon client SMTP se présente comme ci-dessous:
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()
où ec2-X-X-X-X.eu-west-1.compute.amazonaws.com
est, bien sûr, un nom d'hôte valide de mon instance EC2, juste obscurci pour le poste. Lorsque je tente d'envoyer un e-mail à mon exemple, j'obtenir:
[-] 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.
Il n'y a pas d'erreur, ni du côté serveur ou client. Juste il semble que le client ne peut pas se connecter au serveur. Quelqu'un peut-il suggérer ce que je fais mal?