Compartilhar via


Exhange: Como funciona o envio e recebimento?

Neste post explicarei como funciona o envio e recebimento de e-mail e o serviço de transporte do Exchange.

 

Toda vez que enviamos ou recebemos um e-mail, acontecem uma série de procedimentos no Exchange, antes da mensagem chegar a sua caixa de correio. Estes procedimentos variam dependendo por onde o e-mail está sendo enviado. Para melhor esclarecer isto, basicamente temos 3 tipos de tráfego de e-mails possíveis, Externo -> Interno, Interno -> Interno e Interno -> Externo e cada um deles com seu fluxo de e-mail.

 

Abaixo temos um gráfico com o funcionamento do fluxo de e-mail, vou tentar dissecar cada parte para entendermos melhor e depois explicarei os tipos de tráfego.

http://msexperts.blog.br/wp-content/uploads/2017/01/MailFlow.pngOBS: Os retângulos verdes são a representação dos passos no recebimento. Os retângulos laranjas, são do envio.

 

Pipeline de Transporte

 

Front End Transport Service

 

Começamos pelo Front End Transport Service, este serviço roda apenas no CAS e faz parte do primeiro hop de entrada de um e-mail na organização.

 

Este serviço tem as seguintes características:

  • Faz parte do CAS e é responsável pelo recebimento e envio de e-mails (Envio é opcional: https://technet.microsoft.com/en-us/library/mt484155(v=exchg.160).aspx).
  • No recebimento, ele é o primeiro hop, no envio ele é o último hop.
  • Não possui uma base para armazenar os e-mails em uma fila.
  • Possui o Hub Selector que seleciona qual o Transport Service com menor números de hops até o destino final ele deve repassar a mensagem.
  • Importante citar que o Front End, não inspeciona conteúdo de e-mail e não se comunica diretamente com o Mailbox Transport Service.

 

Transport Service

 

O Transport Service é basicamente o coração no quesito transporte, ele é responsável por fazer o meio de campo entre o Mailbox Transport Service e o Front End, sempre escolhendo os melhores caminhos.

 

Continuando o fluxo de e-mail, após o Front End processar a mensagem, ele utiliza o Hub Selector para determinar qual Transport Service possui o menor número de hops até o destino final e repassa a mensagem para ele.

 

O Transport Service conta com um nível de complexidade bem maior, como podemos ver abaixo por suas características:

  • Ele lida com todo o fluxo de e-mail SMTP na organização.
  • Faz parte do Mailbox Server.
  • Executa a categorização das mensagens (Mais sobre categorização abaixo no post).
  • Executa inspeção de conteúdo.

 

Mailbox Transport Service

 

Como podemos ver no gráfico, este serviço é divido em dois, o Mailbox Transport Submission e o Mailbox Transport Delivery. De uma forma bem simplista, o Submission faz parte do fluxo de envio e o Delivery de recebimento.

Importante citar que o Mailbox Transport Service é o único que tem acesso a Database.

 

Vamos as características deste serviço:

 

  • O Delivery recebe mensagens SMTP do Transport Service de algum Mailbox Server na organização.
  • O Submission depois de captar uma mensagem para envio, entrega esta para o Transport Service.
  • Assim como o Front End, o Mailbox Transport não possui uma fila.
  • Ambos o Delivery e Submission acessam a caixa do usuário via RPC.

 

O envio

 

Agora que expliquei cada serviço e sua responsabilidade, vamos para um exemplo mais aprofundado e com passo a passo:

 

  1. Algum usuário fora da sua organização (user@maildomain.test) envia um e-mail para dentro da sua organização (marchese@blog.br)

  2. Esta mensagem é recebida pelo Front End Service pela porta 25.

  3. Ele utiliza o Hub Selector para determinar qual o melhor Transport Service para repassar a mensagem.

  4. O Front End efetua uma conexão na porta 25 ou 2525 do Transport Service e repassa a mensagem para ele.

  5. Transport Service inicia seu fluxo inserindo a mensagem na fila de Submission para categorização.

  6. A categorização inicia, caso no e-mail possua uma distribution list, ela efetuará a expansão desta distribution list para verificar cada um dos destinatários e efetuará a bifurcação, que é dividir a mensagem para cada um dos Mailbox Server aonde o destinatário se encontra.Uma imagem vale mais que mil palavras:http://msexperts.blog.br/wp-content/uploads/2017/01/Bifurcation.png

    Após a expansão, a categorização determinar as rotas para repassar a mensagem.

  7. Depois de efetuada a categorização, a mensagem é repassada para a Delivery Queue para ser repassada ao Mailbox Transport Service aonde estão os destinatários. Note que a mensagem pode ser processada em qualquer Transport Service, pois este consegue se conectar com qualquer Mailbox Transport na organização.

  8. Assim que a mensagem é recebida (Via SMTP pela porta 475) pelo serviço de Mailbox Transport, este efetua uma conexão direta com o Store Drive da database e via RPC entrega a mensagem ao usuário.

 

O recebimento

 

O recebimento possui algumas diferenças, vamos verificar:

 

  1. O usuário marchese@blog.br do nosso exemplo anterior recebeu o e-mail do user@maildomain.test e decidiu respondê-lo, assim que ele clicar no enviar o Maibox Transport Submission pegará a mensagem do Store Driver, executará o Hub Selector para determinar qual o melhor Transport Service para utilizar (Podendo ser o seu local ou algum outro na organização.).
  2. Escolhido o melhor Transport Service, o Mailbox Transport Submission repassará a mensagem para ele.
  3. No Transport Service, assim como no envio, o primeiro a receber a mensagem é a fila de Submission, esta categorizará o e-mail (verificará os destinatários, se são internos, externos ou externos e internos) e determinará a melhor rota.
  4. No nosso caso, o envio é para um destinatário externo, então o Transport Service utilizará o correto conector de envio e enviará a mensagem diretamente para a internet.

 

Como podem perceber, o envio e recebimento é um processo bem complexo e olha que nem falamos sobre alta disponibilidade de e-mail (Safety Net, Shadow Queue). Espero que com este post fique mais fácil de entender como funciona.

Links úteis: