Обрабатывать динамические адреса электронной почты с помощью Python - PullRequest
5 голосов
/ 29 марта 2011

Мне нужно сделать следующее, и мне было интересно, если кто-то сделал что-то подобное, и если так, что они сделали.

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

Что делает эту задачу более сложной, так это то, что адреса электронной почты не статичны, а динамичны.Например.Письма будут примерно такими.dynamic-email1@dynamic-subdomain1.domain.com.Письма сгруппированы по клиенту, используя динамический поддомен, в этом примере это будет «динамический поддомен1».У клиента будет свой собственный поддомен, который ему назначен.Каждый клиент может создать свой собственный адрес электронной почты под своим поддоменом и назначить событие для этого электронного письма.Эти адреса электронной почты и субдомены могут постоянно меняться, добавляются новые, удаляются старые и т. Д.

Так, например, если приходит электронное письмо для электронного письма 'dynamic-email1 @ dynamic-subdomain1.domain.com ' тогда мне нужно будет поискать в базе данных, чтобы выяснить, какому клиенту назначен поддомен ' dynamic-subdomain1 ', а затем посмотреть, какое событие сопоставляется с адресом электронной почты.«dynamic-email1», а затем выполните это событие.У меня уже есть обработка событий, я просто не уверен, как сопоставить адреса электронной почты с событием.

Поскольку адреса электронной почты динамические, было бы очень трудно справиться с этим с помощью файлов конфигурации на основе файлов.было бы неплохо искать в базе данных вместо этого.Я провел некоторое исследование и нашел несколько проектов, которые делают что-то похожее, но не совсем.Самым близким, что я нашел, является проект Ледсона Зеда Шоу: http://lamsonproject.org

Дополнительные сведения:

  • Я использую python, django, linux, mysql,memcached в настоящее время.

Вопросы:

  1. Кто-нибудь использовал Лэмсона, чтобы делать то, что я ищу, как вам понравилось?
  2. Есть ли другие проекты, которые делают что-то похожее, возможно, на другом языке, кроме python?
  3. Как мне настроить запись DNS MX для обработки чего-то подобного?

Спасибо за вашу помощь.

Обновление : я провел еще несколько исследований по предложению движка приложения Google, и это может сработать, но мне нужно будет изменить слишком много вещей, и это добавитслишком много движущихся частей.Мне также нужно было бы поймать всех почтовых экспедиторов, кто-нибудь знает какие-нибудь хорошие дешевые?Я предпочитаю развертывать в системе, которая обрабатывает всю электронную почту.Похоже, что люди использовали постфиксное прослушивание на порту 25 и пересылку запросов в lamson.Это кажется разумным, я собираюсь попробовать и посмотреть, как это происходит.Я обновлю свои результаты.

Обновление 2 : я провел еще несколько исследований и нашел несколько веб-сайтов, которые делают что-то подобное для меня, поэтому я собираюсь посмотретьу них следующие.

http://mailgun.net

http://www.emailyak.com

Ответы [ 2 ]

1 голос
/ 29 марта 2011

Я проделал некоторую работу над парой проектов, использующих динамические адреса электронной почты, но никогда с динамическими поддоменами одновременно.Мои мысли по вашим вопросам:

  1. Я никогда не использовал Лэмсона, поэтому я не могу комментировать это.

  2. Я обычно использую API App Engine для приема и обработки входящих сообщений, и это работает довольно хорошо.Вы можете легко превратить каждое полученное сообщение в простой запрос POST на своем собственном сервере, например, с полями To, From, Subject и Message, и обрабатывать их стандартным django.

    Одним из недостатков электронной почты GAE является необходимость использования *@yourappname.appspotmail.com, но вы можете обойти это, настроив универсальный сервер пересылки электронной почты для *@yourdomain.com, чтобы все перенаправлять на secretaddress@yourappname.appspotmail.com.Это позволило бы вам получать сообщения в пользовательском домене и обрабатывать их с помощью GAE.

    Другой проблемой / преимуществом GAE является использование серверов Google вместо ваших собственных (по крайней мере, для бита электронной почты).

  3. Для проблемы с поддоменом вы можете попробоватьустановка подстановочного знака DNS для записей MX, который (теоретически) будет направлять всю почту, отправленную на любой поддомен, на один и тот же сервер (ы).Это позволит вам получать электронную почту по всем поддоменам (к лучшему или к худшему - ищите спам!)

0 голосов
/ 25 сентября 2012

Для Лэмсона, вы пробовали что-то простое:

@route("(address)@(subdomain).(host)", address=".+", subdomain="[^\.]+")
def START(message, address=None, subdomain=None, host=None):
    ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...