new: Add support for starttls

tests
Raphaël Vinot 2018-05-07 10:54:09 +02:00
parent 48f3f9eea0
commit 942bffd93a
1 changed files with 20 additions and 2 deletions

View File

@ -1,9 +1,21 @@
#!/usr/bin/env python #!/usr/bin/env python
import sys import sys
import ssl
from pathlib import Path from pathlib import Path
import importlib import importlib
from subprocess import run, PIPE from subprocess import run, PIPE
import aiosmtpd.controller from aiosmtpd.controller import Controller
from aiosmtpd.smtp import SMTP
import subprocess
key_path = Path('certs', 'key.pem')
cert_path = Path('certs', 'cert.pem')
# Pass SSL context to aiosmtpd
class ControllerStarttls(Controller):
def factory(self):
return SMTP(self.handler, require_starttls=False, tls_context=context)
class CustomSMTPHandler: class CustomSMTPHandler:
@ -29,10 +41,16 @@ if __name__ == '__main__':
smtp_port = config.smtp_port smtp_port = config.smtp_port
binpath = config.binpath binpath = config.binpath
if not cert_path.exists() and not key_path.exists():
subprocess.call(f'openssl req -x509 -newkey rsa:4096 -keyout {key_path.as_posix()} -out {cert_path.as_posix()} -days 365 -nodes -subj "/CN=localhost"', shell=True)
context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
context.load_cert_chain(cert_path.as_posix(), key_path.as_posix())
print("Starting Fake-SMTP-to-MISP server") print("Starting Fake-SMTP-to-MISP server")
handler = CustomSMTPHandler() handler = CustomSMTPHandler()
server = aiosmtpd.controller.Controller(handler, hostname=smtp_addr, port=smtp_port) server = ControllerStarttls(handler, hostname=smtp_addr, port=smtp_port)
server.start() server.start()
input("Server started. Press Return to quit.") input("Server started. Press Return to quit.")
server.stop() server.stop()