Как разработать систему электронной почты? - PullRequest
3 голосов
/ 24 апреля 2009

Я работаю в компании, которая оказывает поддержку своим клиентам. Я пытаюсь разработать систему, которая бы автоматически отправляла электронные письма клиентам, когда происходит какое-то событие. Система будет состоять из серверной части и части веб-интерфейса. Бэкэнд будет обрабатывать связь с веб-интерфейсом (который будет использоваться только для внутреннего использования для изменения шаблонов электронной почты), и что наиболее важно, он проверит некоторые таблицы базы данных и на основании этих результатов отправит электронные письма ... их много.

Теперь мне интересно, как это можно спроектировать, чтобы сделать его масштабируемым и обеспечить необходимую производительность, поскольку ему, вероятно, придется обрабатывать несколько тысяч электронных писем в час (это должно быть подсмотрено). Меня больше всего интересует вопрос о том, как следует думать об этом типе архитектуры, чтобы при необходимости ее можно было легко масштабировать в будущем.

Python будет использоваться в бэкэнде с Postgres, и, возможно, все, что будет первым, между веб-фреймворком Python и GWT на внешнем интерфейсе (что кажется самой простой задачей).

Ответы [ 5 ]

5 голосов
/ 24 апреля 2009

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

Если нет, то простой ответ -

$ mail address -s subject < file

один раз за почту.

Кстати, исследуйте политику тех, кто находится выше по течению от вас в сети. Некоторые интернет-провайдеры считают множество писем вероятным спамом и могут удивить вас, отключив или измерив доступ к Интернету.

3 голосов
/ 24 апреля 2009

Несколько тысяч электронных писем в час не так уж много, если ваш сервер исходящей почты готов принять их своевременно.

Я бы отправил их используя локальный mta, такой как postfix или exim (который затем отправил бы их через ваш исходящий ретранслятор, если это необходимо). Затем эта служба отвечает за почтовые очереди, повторные попытки, возвраты и т. Д. Если вы ищете дополнительные функции «списка рассылки», попробуйте добавить в список почтальона. Он написан на python, и вы, вероятно, видели его, так как он содержит тонны интернет-списков рассылки.

2 голосов
/ 24 апреля 2009

Возможно, вы захотите проверить Lamson , почтовый сервер на основе конечного автомата, написанный на Python, который должен уметь делать то, что вы описали. Это написано Зедом Шоу, и он недавно написал об этом в блоге здесь .

2 голосов
/ 24 апреля 2009

Это звучит для меня, что вы пытаетесь оптимизировать для пакетной обработки, когда нагрев происходит в веб-интерфейсе, но в бэкэнде. Это также звучит как работа для архитектуры очередей.

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

Шаблон с системами электронной почты должен быть асихонным, поэтому взгляните на другие асинхронные архикапы, если вам не нравятся очереди.

0 голосов
/ 24 апреля 2009

Возможно, вы захотите попробовать Twisted Mail для реализации собственного бэкэнда на чистом Python.

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