2021-09-17 22:39:27 -04:00
|
|
|
import os
|
|
|
|
import time
|
|
|
|
|
2021-08-13 20:11:56 -04:00
|
|
|
from aiosmtpd.controller import Controller
|
|
|
|
|
|
|
|
|
|
|
|
class MockSMTPServer:
|
2021-08-20 14:17:00 -04:00
|
|
|
def __init__(self, hostname='127.0.0.1', port=8025):
|
2021-08-13 20:11:56 -04:00
|
|
|
self.messages = []
|
|
|
|
self.controller = Controller(MockHandler(self), hostname, port)
|
|
|
|
|
|
|
|
def start(self):
|
|
|
|
self.controller.start()
|
|
|
|
|
|
|
|
def stop(self):
|
|
|
|
self.controller.stop()
|
|
|
|
|
|
|
|
|
|
|
|
class MockHandler:
|
|
|
|
def __init__(self, mock_server):
|
|
|
|
self.mock_server = mock_server
|
|
|
|
|
|
|
|
async def handle_DATA(self, server, session, envelope):
|
|
|
|
msg = {
|
|
|
|
'from': envelope.mail_from,
|
|
|
|
'to': envelope.rcpt_tos[0],
|
|
|
|
'content': envelope.content.decode(),
|
|
|
|
}
|
|
|
|
self.mock_server.messages.append(msg)
|
|
|
|
return '250 Message accepted for delivery'
|
2021-09-17 22:39:27 -04:00
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
assert os.geteuid() == 0
|
|
|
|
server = MockSMTPServer('0.0.0.0', 25)
|
|
|
|
server.start()
|
|
|
|
time.sleep(1e6)
|