Нужен пример сервера POP3 или IMAP, написанный на Python - PullRequest
7 голосов
/ 18 ноября 2010

Эксперименты с приложениями обмена сообщениями по электронной почте для приложений.Я уже создал свой SMTP-сервер, но теперь отсутствует механизм централизованной доставки.Я могу очень легко создать правильный механизм доставки, но я пытаюсь использовать стандарты протокола.Я не заинтересован в HTTP, FTP или SOAP, а только в почтовых протоколах.

Я искал в интернете примеры Python, но пока не повезло.Я не хочу тратить на это слишком много времени и усилий, поскольку на данный момент это всего лишь практическое исследование, чтобы выяснить, является ли асинхронная доставка по системе электронной почты жизнеспособным подходом к взаимодействию между приложениями.Я знаю о решениях sendmail, и меня это не интересует, так как решение должно быть полнофункциональным на Python, с использованием «батарей», где это возможно, или, может быть, Twisted, если у меня тоже есть.

Только дваДо сих пор я изучал стандарты IMAP и POP.Я до сих пор не могу поверить, что в наше время нам требуются два протокола для отправки и доставки почты, если есть что-то, что делает два в одном (то есть протокол), я был бы очень рад изучить его.

После дальнейших исследований, я думаю, что единственный жизнеспособный вариант будет искажен, любая помощь с этим будет отличной

update Оставил наСервер POP / IMAP, все это слишком много работы для очень небольшого вознаграждения.Тем не менее, я использовал «готовое» серверное решение, которое подает электронную почту как IMAP4 и отправляет как SMTP.Теперь, когда я нашел это, я продолжу свое расследование Служб приложений по электронной почте.До настоящего времени создано приложение, которое загружает RSS-каналы и отправляет их по электронной почте в формате html.Письма фильтруются по содержанию, которое меня интересует, с помощью серверного приложения, написанного на Python.Следующим этапом является язык DSL для связи с сервером, немного похожий на telnet по электронной почте.Должно быть весело.После этого RPC по электронной почте между несколькими приложениями.

Ответы [ 4 ]

5 голосов
/ 18 ноября 2010

Edit: Простой пример POP3-сервера можно найти здесь: http://code.activestate.com/recipes/534131-pypopper-python-pop3-server/ Вам придется заменить механизм обслуживания сообщений, но вам все равно придется это сделать. Для реализации сервера IMAP с использованием Twisted см. https://github.com/davglass/twimapd.

Если вам нужна электронная почта, вы смотрите SMTP, POP и IMAP. Вот что такое электронная почта по определению.

На самом деле для доставки достаточно SMTP; POP / IMAP предназначен для поиска и не очень полезен, если ваши приложения всегда могут напрямую соединяться друг с другом.

Если вам не нужно специально использовать электронную почту, возможно, вы захотите изучить альтернативные протоколы, такие как XMPP (Jabber): http://en.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol

2 голосов
/ 06 января 2011

Я написал простую почтовую очередь сообщений для связи приложения с приложением.Вы можете найти подробности здесь http://blog.bootstraptoday.com/2010/11/28/really-simple-python-message-queue/

Основная идея - 1. Извлечь класс из smtpd.SMTPServer.2. Переопределите метод 'process_message'.3. В 'process_message' запустите поток.4. Внутри функции потока прочитайте содержимое сообщения и выполните задание.5. Содержимое сообщения - это простые объекты JSON.6. Код клиента прост.Клиенту просто нужно отправить «электронное письмо» на этот локальный SMTP-сервер.Отправьте параметры задачи в формате JSON как содержимое этого письма.Таким образом, клиент может быть простым сценарием оболочки.

Всего было около 40-50 строк кода Python.

Несколько похожая идея, но гораздо более сложная проверка реализации Лэмсон: ОтложеноОбработка в очереди

1 голос
/ 01 января 2012

Похоже, что вы хотите играть с Lamson и поддержать его с Postfix (+ Cyrus , опционально).

1 голос
/ 19 ноября 2010

Коэффициент - это сервер обмена сообщениями, который включает поддержку электронной почты на основе Twisted.Несколько лет назад началась разработка нового уровня базы данных, и последняя версия поддерживает SMTP и POP3 .Более старая версия имеет поддержку IMAP4 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...