Задание.
Реализуйте программу, имитирующую работу почтовых серверов и клиентов.
Клиенты должны иметь возможность принимать и отправлять письма, которые хранятся на серверах.
Вам предстоит спроектировать программу самостоятельно. Чтобы задать направление мысли, давайте обсудим примерный интерфейс почтового клиента.
client = MailClient(server, user) — подключение к учётной записи пользователя user на сервере server.
client.receive_mail() — получение почты. Когда почта получена, она удаляется с сервера. Что конкретно возвращает этот метод, решите самостоятельно.
client.send_mail(server1, user1, message) — послать сообщение message пользователю user1 на сервере server1.
Ваша программа должна быть не просто набором классов, но и предоставлять готовый интерфейс, по которому преподаватель (а не автоматическая система тестирования) будет оценивать функциональность и корректность вашей программы.
Программа должна позволять из своего интерфейса определять список серверов, на которые можно отправлять письма. При попытке отправить письмо на сервер, которого нет в списке, программа должна сообщать пользователю, что не может этого сделать.