2009-12-04 13 views
6

Según this question me preguntó previamente en Google App Engine, si tengo acceso a toda la información en un correo electrónico estándar, no sólo los From, To, Subject, Body campos, sino también a todas las cabeceras e información MIME, ¿cómo puedo Verifique que dos correos electrónicos entrantes con la misma dirección From sean del mismo remitente.¿Cómo verificar la dirección del remitente del correo electrónico no se ha falsificado?

Lo que yo he considerado hasta ahora:

  • Comprobar la dirección IP del servidor de envío del correo electrónico
  • Comprobar los registros DNS del servidor de envío del correo electrónico
  • Verificar el agente de envío del correo electrónico (es decir, la interfaz web, Outlook, Thunderbird, etc)
  • Comprobar el campo responder a
  • etc.

Me doy cuenta de que esta es una pregunta complicada (estoy seguro de que las empresas como Posterous han invertido mucho tiempo en este problema). Solo estoy buscando algunos criterios para comenzar de manera preliminar. ¡Gracias!

Actualización:

Las respuestas hasta el momento son realmente ayudando, pero sólo para ayudar a cabo, el contexto de mi proyecto es que iba a ser recibir toneladas y toneladas de correo electrónico como una aplicación web desde mis usuarios. Utilizarían su correo electrónico como la forma principal de ingresar datos en mi sistema. Este es el motivo por el que hice la analogía de Posterous. El caso de uso es muy similar.

+1

Una cosa a tener en cuenta: utilizo una computadora portátil y envío un correo electrónico desde diferentes direcciones IP y servidores SMTP durante el día. –

+0

Sí, gracias, Scott, lo consideré, y es por eso que estoy interesado en ver otros enfoques. – daveslab

+1

Acabo de tropezar con esta pregunta y estoy intentando algo similar. ¿Puedes compartir lo que terminaste haciendo? –

Respuesta

3

Tiene razón en que todos los encabezados juntos, y el correo "conocido bueno" para comparar puede ayudar a identificar probablemente correos electrónicos falsificados.

Lo que está desarrollando probablemente sea, en el mejor de los casos, una heurística en lugar de un algoritmo.

me gustaría considerar la ponderación de los campos de la hora del día y qué tan cerca de 'buenos conocidos' e-mails de tiempo de día ...

Además, si los mensajes de correo electrónico conocidos 'buenas' se estructuran de manera diferente que el sospechoso; es decir, imágenes en línea, html, url acortadas, etc.

2

¿Por qué no ejecuta los correos electrónicos a través de spamassassin o algún filtro que adjunte un puntaje de bayes? A continuación, puede leer ese puntaje. Te salvará reinventando la rueda.

Puede marcar el correo contra una base de datos de todos los correos electrónicos anteriores del individuo.

También está buscando el remitente permitido Framework y DomainKeys, que SpamAssassin puede hacer por usted.

2

Sólo para complementar mis hermanos publicación anterior:

Sin saber el contexto en el que se desea analizar esto, y siendo muy general que sugeriría su primer puerto de escala es SPF o DomainKeys con el fin de limitar la posibilidad de correo electrónico procedente de una fuente no autorizada aceptada. También recomendaría usar solo un servidor SMTP con seguridad SSL.Hago esto y viajo por todo el mundo. Raramente he estado en una situación en la que no podía enviar correos y en esos casos, lo único que funcionaba era el correo web (no seguro local SMTP).

Además de eso: si está verificando que el correo proviene realmente de usted, entonces también podría usar las herramientas de PGP para firmar su correo al enviar y luego filtrar cualquier correo que no tenga una firma válida. Enigmail en Thunderbird es una buena fuente de firma automática y también hay complementos para Outlook.

Después de eso, si realmente quiere hacer un trabajo más forense en un correo electrónico, entonces podría usar un Spam Bayes para calificar el correo electrónico con una base de datos de correos electrónicos anteriores. Construiría una base de datos de tokens alrededor de los datos no únicos (sin incluir entradas como "Para:") y luego calificaría el correo electrónico con la probabilidad de que sea como los correos electrónicos anteriores. En teoría, debe obtener una puntuación muy alta para cualquier correo.

Obviamente no conozco su situación, pero creo que hay muchas técnicas, pero a veces es más fácil ir a la raíz del problema que tratar de solucionarlo en el futuro.

actualización

Basado en el contexto suministrado:

Me gustaría considerar el uso de "Extensiones de dirección" aquí es donde el usuario puede enviar correo a una dirección que contiene una referencia mediante la dirección de correo electrónico: Nombrecorreoelectrónico [email protected] GMail y muchos otros servidores admiten la entrega de correo electrónico con una + extensión @ a la dirección de correo electrónico [email protected] sin hi-jinx. Podrías conseguir que el usuario entregue el correo con una identificación única como extensión y de esa forma sabrías que proviene de ellos y se sentirán más especiales. Obviamente, alguien podría robar su código único olfateando su correo saliente o entrante, pero eso siempre es posible y, si alguien puede hacerlo, probablemente también pueda enviar correo.

Si realmente solo quiere ir por la ruta de análisis, le sugiero que simplemente use el reverso de una coincidencia de Bayes por usuario de SpamAssassin. Donde compara cada correo a una base de datos de correos de un remitente (en lugar de la correspondencia tradicional de los correos "a" una cuenta). Recordando que una vez que su base de datos está contaminada con un falso positivo, tendrá que eliminar el falso positivo o arriesgar la integridad de la coincidencia para ese remitente.

2

Probablemente no es práctico, pero algo que funcione:

Cuando llega un correo de entrada, tienen una función "responder al remitente" y simplemente preguntar si lo enviaron. Esto podría ser en forma de un enlace de confirmación que se genera automáticamente o algo así.

Pero dado que no conozco los detalles del proyecto, esto puede no ser práctico ... como si tuviera que hacer esto varias veces para cada usuario, nadie lo toleraría.

2

Tal vez considere usar Sender Policy Framework. Puede que no sea exactamente lo que estás buscando, pero podría ser útil.

En pocas palabras, la intención de diseño del registro SPF es permitir que un MTA receptor (agente de transferencia de mensajes) interrogue al servidor de nombres del dominio que aparece en el correo electrónico (el remitente) y determinar si la dirección IP de origen del correo (la fuente) está autorizada para enviar correo para el dominio del remitente.

rasgado de Wikipedia:

Sender Policy Framework (SPF), como define en el RFC 4408, es un sistema validación de correo electrónico diseñado para evitar el spam correo electrónico dirigiéndose por vulnerabilidad común , dirección de origen suplantación. SPF permite a los administradores de correo electrónico la capacidad de especificar qué hosts de Internet pueden enviar un reclamo por correo electrónico que se origina en ese dominio al crear un DNS específico registro SPF en el registro DNS público. Los intercambiadores de correo utilizan el registro DNS para verificar la identidad del remitente en la lista publicada por el administrador de correo electrónico .

Cuestiones relacionadas