2011-03-29 9 views
5

Necesito hacer lo siguiente y me preguntaba si alguien ha hecho algo similar, y si es así, qué hicieron.Procese direcciones de correo electrónico dinámicas usando python

Necesito escribir un programa que manejará los correos electrónicos entrantes para diferentes clientes, procesarlos y luego, dependiendo de la dirección de correo electrónico, hacer algo (agregar a la base de datos, responder, etc.).

Lo que hace que esto sea un poco más desafiante es que las direcciones de correo electrónico no son estáticas sino que son dinámicas. Por ejemplo. Los correos electrónicos serían algo como esto. [email protected]. Los correos electrónicos se agrupan por cliente usando un subdominio dinámico en este ejemplo sería 'dynamic-subdomain1'. Un cliente tendría su propio subdominio asignado. Cada cliente puede crear su propia dirección de correo electrónico bajo su subdominio y asignar un evento a ese correo electrónico. Estas direcciones de correo electrónico y subdominios pueden cambiar todo el tiempo, los nuevos añadidos, los antiguos eliminados, etc.

Así, por ejemplo, si un correo electrónico entra para el correo electrónico '[email protected] ' entonces necesitaría buscar en la base de datos para averiguar qué cliente tiene asignado el subdominio' 'dynamic-subomain1' y luego ver qué evento se asigna a la dirección de correo electrónico de 'dynamic-email1' y luego ejecutar ese evento. Ya tengo procesado el evento, no estoy seguro de cómo asignar las direcciones de correo electrónico al evento.

Dado que las direcciones de correo electrónico son dinámicas, sería un verdadero dolor manejar esto con archivos de configuración basados ​​en archivos, en su lugar sería bueno buscar en una base de datos. Investigué un poco y encontré algunos proyectos que hacen algo similar pero no exactamente. Lo más cerca que he encontrado es el proyecto Lamson de Zed Shaw: http://lamsonproject.org

Más de fondo:

  • estoy usando Python, Django, Linux, MySQL, memcached actualmente.

Preguntas:

  1. ¿Alguien utiliza Lamson a hacer lo que estoy tratando de hacer, ¿cómo te gustaría?
  2. ¿Hay algún otro proyecto que haga algo similar, tal vez en un idioma diferente al de python?
  3. ¿Cómo configuro mi registro MX de DNS para manejar algo como esto?

Gracias por su ayuda.

actualización: he hecho un poco más investigación sobre la sugerencia del motor y la aplicación de Google que podría funcionar, pero que tendría que cambiar demasiadas cosas y sería añadir demasiadas partes móviles. También necesitaría atrapar a todos los autocargadores de emailer, ¿alguien sabe de los buenos y baratos? Prefiero implementar en el sistema que maneja todo el correo electrónico. Parece que las personas han usado la escucha de postfix en el puerto 25 y las solicitudes de reenvío a lamson. Esto parece razonable, voy a probarlo y ver cómo va. Voy a actualizar con mis resultados.

Actualización 2: he hecho un poco más investigación y he encontrado un par de sitios web que hacen algo así por mí, así que voy a mirarlos siguiente.

http://mailgun.net

http://www.emailyak.com

Respuesta

1

que he hecho algún trabajo en un par de proyectos que utilizan direcciones de correo electrónico dinámicos, pero nunca con subdominios dinámicos al mismo tiempo. Mis pensamientos sobre sus preguntas:

  1. Nunca he usado Lamson, por lo que no puedo comentar sobre eso.

  2. Normalmente uso App Engine's API para recibir y manejar mensajes entrantes, y funciona bastante bien. Puede convertir fácilmente cada mensaje recibido en una solicitud básica POST en su propio servidor con, p. To, From, Subject y Message campos y manejar aquellos con django estándar.

    Una desventaja con el correo electrónico GAE es tener que utilizar *@yourappname.appspotmail.com, pero se puede conseguir alrededor de eso mediante la creación de un cajón de sastre promotor de correo electrónico para *@yourdomain.com para dirigir todo para [email protected]. Eso le permitiría recibir los mensajes en el dominio personalizado y manejarlos con GAE.

    El otro problema/beneficio con GAE es utilizar los servidores de Google en lugar del propio (al menos para el bit de correo electrónico).

  3. Para el problema del subdominio, puede intentar configurar wildcard DNS para los registros MX, lo que (en teoría) dirigiría todo el correo enviado a cualquier subdominio al mismo servidor (s). Esto le permitirá recibir correo electrónico en todos los subdominios (! Para mejor o peor - mirar hacia fuera en busca de spam)

+0

Gracias por la Sugerencia de App Engine, pensé en el motor de la aplicación, pero no estaba seguro de cómo hacerlo con la restricción de dirección de correo electrónico de appspotmail.com, tendré que probarlo para ver si funciona. El único problema es que mis correos electrónicos habituales [email protected] también irían a appengine. No parece que haya un límite de velocidad para el correo electrónico entrante, que también es bueno. –

+1

Sí, también pensé en el problema del correo electrónico "normal". Tal vez el registro del comodín podría apuntar subdominios a, p. 'app_mail.mydomain.com' con todo en eso (en lugar de en el dominio simple)? Si el problema del subdominio se vuelve demasiado complicado, podría valer la pena considerar una sintaxis alternativa, como 'user + command @ midominio.com' si eso facilita las cosas. –

+0

La forma en que funciona la aplicación ahora tiene un uso intensivo de subdominios, pero veré si puedo solucionarlo para probar su enfoque de [email protected], pero hace las cosas un poco más limpias, pero supongo Puede que tenga que hacer [email protected] o algo similar para que mis correos electrónicos regulares @ mydomain.com no se envíen al mismo servidor MX que los automáticos. Gracias por la sugerencia. –

0

Para lamson, ¿ha intentado algo tan simple como:

@route("(address)@(subdomain).(host)", address=".+", subdomain="[^\.]+") 
def START(message, address=None, subdomain=None, host=None): 
    .... 
Cuestiones relacionadas