2011-01-19 45 views
13

¿Hay alguna forma de detectar (utilizando los encabezados RFC 2822) que un correo electrónico es un correo electrónico reenviado?Detección de correo electrónico reenviado

+0

¿Quiere decir "reenviado" como establecer una dirección de reenvío para que todo el correo sea redirigido automáticamente a un buzón diferente, o "reenviado" como haciendo clic en el botón "Reenviar" en su mailing e ingresando la dirección de correo electrónico del destinatario algún texto descriptivo? – dkarp

+0

Si es el primero, consulte también http://stackoverflow.com/questions/4742533/is-the-delivered-to-header-the-right-place-to- find-the-address-of-the-recipient-f y http://stackoverflow.com/questions/4739354/email-server-design-avoiding-loops – dkarp

+1

Quise decir el reenvío en un cliente de correo electrónico, como hacer clic en "Reenviar" – Timby

Respuesta

18

Hay dos cosas que normalmente se conocen como "reenvío".

Cuando configura el reenvío automático a nivel de cuenta a otra dirección de correo electrónico, su sistema de correo generalmente presentará un encabezado adicional para permitirle detectar y romper los bucles de correo. Lamentablemente, el nombre de este encabezado nunca se ha estandarizado. Some use Delivered-To, some use X-Loop, algunos usan X-Original-To, algunos usan un encabezado X propiedad de su software de correo. Pero no hay un solo campo de encabezado que esté presente en todos los casos.

Cuando reenvía manualmente un mensaje haciendo clic en el botón "Reenviar" en su correo e ingresando una dirección de correo electrónico del destinatario y un texto descriptivo, se genera un nuevo mensaje con un nuevo encabezado Message-ID. El conjunto de encabezados en este mensaje será indistinguible de una respuesta normal: In-Reply-To y References se configuran exactamente de la misma manera. La única diferencia es que el encabezado Subject va a generalmente comienza con "Fwd:" o termina con "(fwd)". ("Por lo general," debido a que algunos clientes formato como "[Fwd: <original subject>]" con corchetes en torno al nuevo tema, algunos clientes se localizan el prefijo Fwd: en su propio idioma, y ​​algunos usuarios editar manualmente el Subject antes de pulsar "enviar".)

Entonces, hay buenas sugerencias de que se reenvía un mensaje, pero no hay reglas fijas.

+0

Hacer 'In-Reply-To' y' Referencias 'aparece en (1) un mensaje de reenvío automático (2) un mensaje de respuesta automática? – rocketspacer

+0

¿Aparece 'Subject' en un mensaje de respuesta? Si no es así, podemos distinguir fácilmente un mensaje de respuesta de un mensaje de reenvío – rocketspacer

+0

Mensaje de respuesta, tendrá un asunto que comience con '" Re: "'. Estoy construyendo un extractor de correo electrónico personalizado para crear Jira Issue/Comment. Esto me ha reventado, ¿puedo distinguir con seguridad la base de correo electrónico Reenviar/Responder en el campo Asunto? – rocketspacer

3

Lectura de la spec, CTRL + F para "hacia adelante", da los siguientes campos de cabecera:

resent-date  =  "Resent-Date:" date-time CRLF 
resent-from  =  "Resent-From:" mailbox-list CRLF 
resent-sender =  "Resent-Sender:" mailbox CRLF 
resent-to  =  "Resent-To:" address-list CRLF 
resent-cc  =  "Resent-Cc:" address-list CRLF 
resent-bcc  =  "Resent-Bcc:" (address-list/[CFWS]) CRLF 
resent-msg-id =  "Resent-Message-ID:" msg-id CRLF 

No estoy seguro de si el software de correo principal utiliza estos sin embargo.

EDITAR

Leer la especificación de un poco demasiado rápido, también hay esta nota:

Nota: La reintroducción de un mensaje en el sistema de transporte y el uso de campos resienten es una operación diferente de "reenvío". "Reenvío" tiene dos significados: Un sentido de reenvío es que el usuario puede enviar un programa de lectura de correo a otra persona enviando una copia de un mensaje , haciendo que el mensaje reenviado sea el cuerpo del nuevo mensaje . Un mensaje reenviado en este sentido no parece tener proceden del remitente original, pero es un mensaje completamente nuevo desde el del reenviador del mensaje. Por otro lado, el reenvío también es cuando el programa de transporte de correo recibe un mensaje y lo reenvía a un destino diferente para la entrega final. Resent los campos de encabezado no están destinados para el uso con ningún tipo de reenvío .

No hay otros avisos de "reenvío", por lo que no hay campos de cabecera que se pueden utilizar para detectar el delantero, a excepción de la convención subject = "Fwd: <msg>".

Cuestiones relacionadas