最近问起Twisted mail server with TLS - no portal?看来我在咆哮一个错误的树 - 所以现在看起来相当恰当的问一个新的,修正的问题。扭曲的SMTP服务器,添加SSL支持,2工厂?
所以我试图扩展在http://twistedmatrix.com/documents/current/_downloads/emailserver.tac发现的基本SMTP服务器样本以支持SSL连接。我可以如下(从我以前的努力解除代码创建一个ssl上下文工厂:
caCertFile = open("/opt/tesa/etc/certs/CA/cacert.pem","r")
certFile = open("/opt/tesa/etc/certs/server/server.crt","r")
keyFile = open("/opt/tesa/etc/certs/server/server.key","r")
caCertData = caCertFile.read()
pKeyData = keyFile.read()
certData = certFile.read()
caCert = ssl.Certificate.loadPEM(caCertData)
cert = load_certificate(FILETYPE_PEM, certData)
pKey = load_privatekey(FILETYPE_PEM, pKeyData)
sslCtxFactory = ssl.CertificateOptions(privateKey=pKey, certificate=cert, trustRoot=caCert)
所以现在我有SMTP厂从emailserver.tac,以上我sslCtxFactory在我的旧代码,我创建了一个对象类ESMTP如下:
myESMTP = ESMTP(contextFactory=sslCtxFactory)
factory = protocol.Factory.forProtocol(lambda: mySMTP(contextFactory=sslCtxFactory))
endpoint = endpoints.TCP4ServerEndpoint(reactor, 8001)
endpoint.listen(factory)
但是,由于该代码不使用门户等,那么一些方法/在类定义为ESMTP功能失效由于没有被定义的各种属性(例如自我。 delivery,self.portal)。
所以我试图了解如何在mailserver.tac代码中实现我的sslCtxFactory - 同时仍按照mailserver.tac使用门户/领域,以确保twisted的ESMTP类中的方法不会失败。
但是,我怎样才能把这两个工厂“结合在一起”呢?
感谢