Qual é a diferença de comportamento entre caminho de retorno, resposta de e para?

162

Em nosso aplicativo de correspondência, estamos enviando e-mails com o seguinte cabeçalho:

FROM: [email protected]
TO: [email protected]
Return-PATH: [email protected]

O problema que estamos enfrentando é que alguns servidores de email retornam uma mensagem imediatamente e usam o caminho from ou reverse ([email protected]) em vez de nosso servidor de rejeição mgmt. Queremos saber se modificamos no cabeçalho a resposta a ser a mesma do caminho de retorno, se conseguirmos capturar todas as devoluções.

Quaisquer outras idéias são bem-vindas?

Estamos usando os seguintes documentos como referência: VERP RFC Bounce Messages

Análise de Log SMTP para Obter Devoluções

EDIT 1: Mais algumas informações para ver se conseguimos essa resolução.

Queremos saber em que momento o servidor de email que retransmitir a mensagem escolherá o caminho de resposta versus o caminho de retorno. Percebemos que, quando o primeiro servidor smtp retransmitindo a mensagem é rejeitado, ele a envia para a resposta, mas quando ocorre após um salto, a envia para o caminho de retorno.

Geo
fonte
1
E quanto a especificar os campos Remetente: e Precedência:? Gostaria de saber mais sobre como eles afetam diferentes servidores de correio quando se trata de devoluções e respostas automáticas fora do escritório. Qualquer pessoa?
PapaFreud

Respostas:

257

Vamos começar com um exemplo simples. Digamos que você tenha uma lista de e-mails que enviará o seguinte conteúdo RFC2822 .

From: <[email protected]>
To: <[email protected]>
Subject: Super simple email
Reply-To: <[email protected]>

This is a very simple body.

Agora, digamos que você o envie a partir de uma lista de correspondência, que implementa o VERP (ou algum outro mecanismo de rastreamento de rejeição que usa um caminho de retorno diferente). Vamos dizer que ele terá um caminho de retorno de [email protected]. A sessão SMTP pode parecer com:

{S}220 workstation1 Microsoft ESMTP MAIL Service
{C}HELO workstation1
{S}250 workstation1 Hello [127.0.0.1]
{C}MAIL FROM:<[email protected]>
{S}250 2.1.0 [email protected] OK
{C}RCPT TO:<[email protected]>
{S}250 2.1.5 [email protected] 
{C}DATA
{S}354 Start mail input; end with <CRLF>.<CRLF>
{C}From: <[email protected]>
To: <[email protected]>
Subject: Super simple email
Reply-To: <[email protected]>

This is a very simple body.
.

{S}250 Queued mail for delivery
{C}QUIT
{S}221 Service closing transmission channel

Onde {C} e {S} representam comandos de Cliente e Servidor, respectivamente.

O e-mail do destinatário seria semelhante a:

Return-Path: [email protected]
From: <[email protected]>
To: <[email protected]>
Subject: Super simple email
Reply-To: <[email protected]>

This is a very simple body.

Agora, vamos descrever os diferentes "FROM" s.

  1. O caminho de retorno (às vezes chamado de caminho reverso, remetente do envelope ou envelope de - todos esses termos podem ser usados ​​de forma intercambiável) é o valor usado na sessão SMTP no MAIL FROMcomando. Como você pode ver, isso não precisa ser o mesmo valor encontrado nos cabeçalhos da mensagem. Somente o servidor de email do destinatário deve adicionar um cabeçalho Return-Path na parte superior do email. Isso registra o remetente do caminho de retorno real durante a sessão SMTP. Se um cabeçalho Return-Path já existir na mensagem, esse cabeçalho será removido e substituído pelo servidor de email do destinatário.

Todas as devoluções que ocorrem durante a sessão SMTP devem retornar ao endereço do caminho de retorno. Alguns servidores podem aceitar todos os emails e enfileirá-los localmente, até que haja um encadeamento gratuito para entregá-lo na caixa de correio do destinatário. Se o destinatário não existir, retorne ao valor do caminho de retorno registrado.

Observe que nem todos os servidores de email obedecem a essa regra; Alguns servidores de correio retornam para o endereço FROM.

  1. O endereço FROM é o valor encontrado no cabeçalho FROM. É suposto ser de quem é a mensagem. Isso é o que você vê como "DE" na maioria dos clientes de email. Se um email não tiver um cabeçalho de resposta, todas as respostas humanas (cliente de email) deverão retornar ao endereço FROM.

  2. O cabeçalho Responder para é adicionado pelo remetente (ou pelo software do remetente). É onde todas as respostas humanas devem ser abordadas também. Basicamente, quando o usuário clica em "responder", o valor Responder a deve ser o valor usado como o destinatário do email recém-composto. O valor Responder para não deve ser usado por nenhum servidor. Destina-se apenas ao uso do cliente (MUA).

No entanto, como você pode perceber, nem todos os servidores de email obedecem aos padrões ou recomendações da RFC.

Espero que isso ajude a esclarecer as coisas. No entanto, se eu perdi alguma coisa, me avise e tentarei responder.

Dave Wanta
fonte
Isso é muito útil. Obrigado pelo seu tempo. Uma questão. Será que algumas rejeições estão indo para o caminho de resposta em vez do caminho de retorno?
Geo
5
bem, tecnicamente você pode (mas não deve) adicionar um cabeçalho de caminho de retorno; no entanto, se existir um cabeçalho de caminho de retorno, ele deverá ser substituído pelo servidor smtp receptor. Se não existir, ele deve ser adicionado na parte superior dos cabeçalhos.
Dave wanta
7
Eu sou um pouco incerto sobre como return-pathé usado. Se return-pathé para ser um endereço de retorno, por que o servidor de email do destinatário preenche esse campo em vez do remetente? Como o servidor do destinatário sabe o que colocar lá? Isso não parece ao contrário?
greatwolf
6
O servidor de email do destinatário insere o cabeçalho Return-Path na mensagem, copiando o valor fornecido pelo servidor de email do remetente no comando "MAIL FROM" do SMTP. Imagine um funcionário da sala de correio abrindo correspondência - eles olham para o endereço de retorno no envelope e o escrevem na parte superior da carta (e jogam o envelope fora).
precisa saber é o seguinte
5
E como o Sender:cabeçalho se encaixa em tudo isso?
Simon East
150

Outra maneira de pensar sobre o Return-Pathvs Reply-Toé compará-lo com o correio tradicional.

Ao enviar um envelope pelo correio, você especifica um endereço de retorno . Se o destinatário não existir ou recusar seu e-mail, o postmaster retornará o envelope para o endereço de retorno. Para email, o endereço de retorno é o Return-Path.

Dentro do envelope pode haver uma carta e, dentro da carta, ele pode direcionar o destinatário para "Enviar correspondência para o endereço de exemplo ". Para email, o endereço de exemplo é o Reply-To.

Em essência, um endereço de remessa postal é comparável ao Return-Pathcabeçalho do SMTP e o Reply-Tocabeçalho do SMTP é semelhante às instruções de resposta contidas em uma carta.

Jesse Hobart
fonte
14
Essa é uma boa analogia.
Lukasz Korzybski
2
@ Jesse Hobart +1, para uma boa explicação, fiquei mais confuso, obrigado por tornar mais fácil me entender.
Abhishek 31/01
26
Eu apontaria que o conceito principal não capturado nesta analogia é que o Return-Pathcabeçalho seja adicionado pelo servidor de recebimento e não pelo remetente . Portanto, é mais ou menos assim: você pode escrever o endereço que quiser dentro do envelope, mas para entregá-lo, você deve levá-lo aos correios e mostrar sua carteira de motorista (ou outro ID) e eles colocam esse endereço no envelope antes de enviá-lo. Em outras palavras, o Return-Pathcabeçalho é tão confiável quanto as verificações realizadas pelo servidor SMTP receptor, onde os outros podem ser facilmente falsificados.
cdhowie
5

para quem chegou aqui porque o título da pergunta:

Eu uso o Reply-To:endereço com webforms. quando alguém preenche o formulário, a página da web envia um email automático ao proprietário da página. o From:é o endereço do remetente de correio automático, para que o proprietário saiba que é do formulário da web. mas o Reply-To:endereço é o preenchido pelo usuário pelo formulário, para que o proprietário possa clicar em responder para entrar em contato com ele.

robotik
fonte
1

Eu tive que adicionar um cabeçalho Return-Path nos emails enviados por uma instância do Redmine. Concordo com o bisavô, apenas o remetente pode determinar um caminho de retorno correto (não padrão). O caso é o seguinte: Os emails são enviados com o endereço de email padrão: [email protected] Mas queremos que o usuário real que inicia a ação receba os emails de devolução, porque será ele quem saberá corrigir os emails dos destinatários errados (e não os administradores de aplicativos que têm outros gatos para chicotear :-)). Usamos isso e ele funciona perfeitamente com o exim no servidor de aplicativos e o zimbra como o servidor de correio final da empresa.

Sorriso
fonte