最近問起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類中的方法不會失敗。
但是,我怎樣才能把這兩個工廠「結合在一起」呢?
感謝