Pergunta sobre registros MX e entrega de emails?

2

Digamos que temos vários servidores de e-mail nos registros DNS. Se alguém estiver enviando um e-mail, o servidor de e-mail de saída verificará o MX e contatará o primeiro servidor com o menor custo.

Se este servidor não tiver o endereço de e-mail solicitado, o que acontece então? O servidor de envio de saída envia a mensagem para o segundo servidor de email no registro MX? Ou isso depende da mensagem de erro do primeiro servidor de email?

Como as mensagens para "endereços desconhecidos" são tratadas? Pelo primeiro servidor tentando entregá-los ao servidor de e-mail MX apropriado, ou o servidor de e-mail MX tenta resolver isso?

    
por slm 14.09.2013 / 14:03

1 resposta

5

O SMTP e o ESMTP (os protocolos subjacentes) que lidam com a entrega de mensagens têm RFCs extensos (o RFC821 original e a atualização mais moderna RFC2821 e um protocolo de rastreamento de padrões da Internet no RFC5321).

Como os servidores de email lidam com erros durante a entrega varia de servidor de email para servidor de email. Além da complicação, muitos deles são configuráveis e fáceis de alterar o comportamento padrão descrito nos RFCs.

A regra geral, dadas as advertências acima, é:

Escolha o registro MX de maior preferência, ou um aleatório, se existirem vários registros da mesma preferência (algumas vezes, o comportamento aleatório é, em vez disso, um algoritmo round-robin). Se o host escolhido for "inacessível" (sem rota para hospedar, conexão recusada ou similar), tente o próximo registro MX de mesma preferência ou menor. Como msw mencionou, estes são alguns que contra-intuitivo - a maior preferência é 0 e os registros de um número maior são considerados menos preferenciais.

Isso é repetido até que uma conexão seja estabelecida OU todos os hosts não respondam. Nesse caso, o email é enfileirado novamente para uma tentativa posterior de reenvio. A maioria dos servidores de email tentará isso por um determinado período de tempo (geralmente algo como 1 a 2 dias), antes de desistir e retornar o email em uma notificação de falha na entrega (NDR).

Se a conexão for bem-sucedida, as várias etapas do protocolo RFC determinam o comportamento geral de conectar MTAs. Do banner inicial enviado pelo servidor de correio remoto a cada um dos vários comandos emitidos para ele (de EHLO / HELO , até MAIL FROM , RCPT TO e DATA declarações), a regra geral é é:

erro transiente de 4xx, tente novamente mais tarde

Com este código, o email é re-enfileirado pelo servidor de correio local e a entrega tentada mais tarde (configurado nas configurações desse servidor de correio local)

5xx erro fatal, e-mail não entregue

Com esse código, o email é considerado não entregue e o servidor de email de envio local gerará um NDR (Non-delivery Report).

Em termos de sua pergunta "Se esse servidor não tiver o endereço de email solicitado", no RCPT TO stage, a maioria dos servidores responderia com um código 5xx e seu servidor de email local geraria um NDR.

Nem todos os servidores de e-mail são criados iguais

Existem algumas ressalvas para isso. MS Exchange por mais tempo, aceitaria TODOS os emails, independentemente de destinatários incorretos, domínios não rotuáveis e assim por diante, e geraria uma notificação de falha na entrega após o fato. Determinados ISPs devido a problemas com spam e fenômeno conhecidos como Dispersão de volta , nem sequer gera notificações de falha na entrega e seu email "falha silenciosamente" (você nunca recebe nenhuma notificação de falha na entrega).

Você também deve levar em consideração que o MTA (Mail Transport Agent ou servidor de email) nem sempre é o ponto final de entrega e MDAs (agentes de entrega de mensagens - como procmail) e MUAs (Mail User Agents) ou "clientes de e-mail", como o thunderbird / outlook, etc., podem ser configurados para "retornar" esses e-mails com suas próprias respostas semelhantes a NDR. Existem também mecanismos como .forward files que podem fazer com que o MTA redirecione o email para outro endereço após a aceitação do email. Certos servidores de email (eu sei que este é o caso do Exim), tentarão expandir o .forward no ponto do estágio RCPT TO da conversa SMTP e se isso se expandir para uma resposta de endereço não rotuável com a série 5xx dos códigos de erro mencionados acima.

Para uma explicação muito mais precisa e aprofundada, leia as RFCs mencionadas acima e a documentação do MTA que você está usando (lembrando que como ele está configurado pode desempenhar um papel em seu comportamento).

    
por 14.09.2013 / 14:05

Tags