Extensões do protocolo SMTP para Exchange Server 2007
Aplica-se a: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007
Tópico modificado em: 2009-09-17
O mecanismo SMTP (Simple Mail Transfer Protocol) é um importante distribuidor de eventos COM. O mecanismo básico do protocolo SMTP é responsável por toda a comunicação SMTP padrão e manipula a maioria das extensões de serviço SMTP padrão. Especificamente, o mecanismo SMTP básico manipula o padrão ESMTP (Extended Simple Mail Transfer Protocol) que é definido em Request for Comments (RFC) 821 e em RFC 1869. Eventos de protocolo podem ser usados para modificar o protocolo SMTP para adicionar novos comandos ESMTP ou mesmo para alterar a ação de comandos existentes. O Exchange Server 2007 usa esses eventos de protocolo para implementar comandos SMTP estendidos específicos do Exchange para se comunicar com outros servidores Exchange da organização de forma mais eficiente do que por SMTP padrão.
Você pode verificar que os comandos SMTP estendidos para Exchange Server 2007 são carregados usando o telnet para se conectar à porta TCP do servidor virtual SMTP. Quando você envia o comando EHLO para iniciar uma conexão ESMTP, a resposta do servidor indica os recursos aos quais o servidor virtual SMTP oferece suporte. Os comandos padrão são listados quando você envia um comando HELP.
A tabela a seguir explica os recursos SMTP aos quais o serviço SMTP estendido para Exchange oferece suporte.
Recursos SMTP que têm suporte no Exchange Server 2007
Resposta do servidor SMTP | Comentários |
---|---|
8BITMIME |
Indica que o servidor virtual SMTP local oferece suporte a mensagens MIME (Multipurpose Internet Mail Extensions) de 8 bits. |
AUTH, AUTH GSSAPI NTLM LOGIN e AUTH=LOGIN |
Sinaliza que o servidor virtual SMTP local oferece suporte à extensão do serviço de autenticação SMTP. As informações adicionais após a palavra-chave AUTH identificam os mecanismos de autenticação com suporte. |
BDAT, CHUNKING |
Uma alternativa ao comando DATA, para a qual são necessários dois argumentos. Quando um servidor virtual SMTP responde ao comando EHLO com a resposta CHUNKING, ele está indicando que oferece suporte ao comando BDAT e aceita mensagens em blocos. O primeiro argumento indica o comprimento do pacote de dados binários, para que o host SMTP não precise verificar continuamente o final dos dados. O servidor de destino conta os bytes da mensagem e, quando o tamanho da mensagem é igual ao valor enviado pelo comando BDAT, o servidor presume que recebeu todos os dados da mensagem. O segundo argumento indica se o pacote de dados é o último pacote da transmissão atual. O segundo argumento é opcional. |
BINARYMIME |
Indica que o servidor virtual SMTP aceita mensagens que contenham material binário sem codificação de transporte. Essas mensagens devem usar um parâmetro BODY que incua o valor BINARYMIME em conjunto com o comando MAIL. Quando o servidor SMTP aceita um comando MAIL com um parâmetro BODY de BINARYMIME, o servidor está concordando em preservar todos os bits de cada octeto passado com o comando BDAT. A extensão SMTP BINARYMIME só pode ser usada com CHUNKING. |
DATA |
Enviado por um host remoto para iniciar a transferência do conteúdo da mensagem. |
notificação de status de entrega |
Um comando ESMTP que habilita notificações de status de entrega como definido na RFC (Request for Comments) 1891. |
EHLO |
Enviado por um cliente para sinalizar o início de uma sessão ESMTP. O servidor pode identificar seu suporte para comandos ESMTP em sua resposta a EHLO. |
HELO |
Enviado por um cliente para identificar a si próprio, normalmente com um nome de domínio, e para sinalizar o início de uma sessão SMTP padrão. |
AJUDA |
Retorna uma lista de comandos SMTP com suporte no servidor virtual SMTP em sessões SMTP padrão (em oposição a sessões ESMTP). |
Identifica o início de uma transferência de mensagens identificando o remetente da mensagem; usado no formato MAIL FROM. |
|
PIPELINING |
Fornece a capacidade de enviar um fluxo de comandos sem precisar esperar por uma resposta após cada comando. |
QUIT |
Sinaliza o final de uma sessão SMTP padrão ou estendida. |
RCPT |
Identifica os destinatários da mensagem; usado na forma RCPT TO. |
RSET |
Anula toda a transação da mensagem e redefine o buffer. |
SIZE |
Fornece um mecanismo pelo qual o servidor virtual SMTP pode indicar o tamanho máximo de mensagem aceito. Servidores compatíveis devem fornecer extensões de tamanho para indicar o tamanho máximo de mensagem que pode ser aceito. Hosts remotos não devem enviar mensagens maiores do que o tamanho indicado pelo servidor. |
STARTTLS |
Indica que o servidor SMTP oferece suporte a SMTP por TLS (Transport Layer Security) seguro. A extensão do serviço SMTP para SMTP por TLS seguro é definida em RFC 2487. |
VRFY |
Verifica se há uma caixa de correio disponível para entrega de mensagens. Por exemplo, VRFY TED verifica se há uma caixa de correio para Ted no servidor local. Por padrão, esse comando está disponível no Exchange 2007, mas não verifica usuários. O servidor irá informar o host remoto de que, apesar de não ser possível verificar o usuário, as mensagens serão aceitas. A resposta do servidor tem o seguinte formato: 252 2.1.5 Não é possível VRFY usuário, mas a mensagem será entregue a Ted@wingtiptoys.com |
XEXCH50 |
Fornece a capacidade de enviar propriedades estendidas de envelope de transporte de mensagens no formato MDBEF (Message Database Encoding Format) durante uma comunicação de servidor para servidor do Exchange 2007. |
X-EXPS GSSAPI NTLM LOGIN, X-EXPS=LOGIN |
X-EXPS é um comando de propriedade do Exchange. É semelhante a AUTH porque indica os métodos que podem ser usados por servidores que estejam executando o Exchange 2007, o Exchange 2003 e o Exchange 2000 para autenticação, como a seguir: GSSAPI Um método que representa Interface de programação do aplicativo Serviços de Segurança Genéricos e habilita a autenticação por Kerberos. NTLM Um método que representa Windows NT e Gerenciador de LAN e habilita a autenticação usando o protocolo de desafio/resposta do Windows NT. LOGIN Um método que representa AUTH LOGIN, um método de autenticação de texto não criptografado usando um nome de usuário e senha codificados na base 64. |
X-LINK2STATE |
Adiciona suporte para a propagação do estado do link para o serviço SMTP. Para obter detalhes sobre o algoritmo de estado do link usado para propagar informações sobre o estado do link dentro de e entre grupos de roteamento, consulte Message Routing Architecture (página em inglês). |
Dica
Todos os comandos SMTP específicos do Exchange começam com "X-" (sem as aspas). Se esses comandos não estiverem listados na resposta EHLO do servidor virtual SMTP, o servidor está executando a versão baseada no Windows Server do serviço SMTP. Caso isso ocorra, será preciso reinstalar o Exchange Server 2007 e quaisquer service packs.
Categorias de Evento de Protocolo
O mecanismo do protocolo SMTP aciona eventos de protocolo para controlar a comunicação entre hosts. Há três tipos principais de eventos que podem ocorrer em uma comunicação desse tipo por SMTP:
O serviço SMTP recebe um comando SMTP
Esses eventos ocorrem quando um host ou cliente SMTP remoto se conecta ao serviço SMTP local e estabelece uma sessão enviando o comando HELO ou EHLO. Eventos dessa categoria são eventos OnInboundCommand de Protocolo SMTP em conexões de entrada.
O serviço SMTP recebe uma resposta SMTP
Esses eventos ocorrem quando o serviço SMTP local recebe respostas de um host ou cliente SMTP remoto para comandos SMTP de saída. Eventos dessa categoria são eventos OnServerResponse de protocolo SMTP em conexões de saída.
O serviço SMTP envia um comando SMTP
Esses eventos ocorrem quando o serviço SMTP local se conecta a um host SMTP remoto e estabelece uma sessão para transferir mensagens. Eventos dessa categoria são eventos OnSessionBegin, OnMessageStart, OnPerRecipient, OnBeforeData e OnSessionEnd de protocolo SMTP em conexões de saída.
A tabela a seguir resume o objetivo de cada evento de protocolo SMTP.
Eventos de protocolo no serviço SMTP
Evento | Comentários |
---|---|
OnInboundCommand |
Ocorre quando um comando SMTP é recebido pelo serviço de protocolo SMTP, que dá a um coletor de eventos uma oportunidade de resposta. |
OnServerResponse |
Ocorre quando o serviço SMTP recebe uma resposta SMTP a um comando SMTP enviado anteriormente. |
OnSessionBegin |
Ocorre antes do comando EHLO ser transmitido. |
OnMessageStart |
Ocorre antes do comando MAIL FROM ser transmitido. |
OnPerRecipient |
Ocorre antes do comando RCPT TO ser transmitido. |
OnBeforeData |
Ocorre antes do comando de protocolo DATA ser transmitido. |
OnSessionEnd |
Ocorre antes do comando QUIT ser transmitido. |
Extensões do protocolo SMTP específicas do Exchange
O programa de Instalação do Exchange Server 2007 registra extensões do protocolo SMTP específicas do Exchange para os recursos a seguir do protocolo SMTP.
XEXCH50
XEXCH50 é uma extensão do Exchange ESMTP usada para retransmitir determinadas propriedades da mensagem, como mensagem de envelope e propriedades do destinatário. O comando XEXCH50 é um comando curto. Um comando XEXCH50 que tenha recebido um tipo de resposta de êxito é seguido de um BLOB (grande objeto binário) de tamanho variável. (O tamanho corresponde ao primeiro argumento do comando XEXCH50.)
Esse recurso é implementado usando nove coletores de eventos para oferecer suporte a uma comunicação completa entra dois servidores que estejam executando o Exchange. A tabela a seguir mapeia os eventos de protocolo aos seus coletores de eventos XEXCH50. Todos os coletores XEXCH50 são implementados no Peexch50.dll, que reside no diretório Arquivos de Programas\Exchsrvr\bin.
Extensões de protocolo para o comando XEXCH50
Coletor de eventos | Evento de protocolo | Comentários |
---|---|---|
Coletor de Dados Anteriores XEXCH50 do Protocolo SMTP do Exchange |
OnBeforeData |
Notifica o coletor XEXCH50 de que o comando de protocolo DATA está prestes a ser transmitido. O coletor XEXCH50 agora tem a oportunidade de solicitar que o serviço SMTP envie um comando XEXCH50 em vez disso, para iniciar uma comunicação XEXCH50. |
Coletor EHLO de Entrada XEXCH50 do Protocolo SMTP do Exchange |
OnInboundCommand |
Notifica o coletor XEXCH50 de que um comando EHLO foi recebido. |
Coletor XEXCH50 de Entrada XEXCH50 do Protocolo SMTP do Exchange |
OnInboundCommand |
Implementa o comando XEXCH50 para iniciar uma conversa XEXCH50. |
Coletor MAIL de Entrada XEXCH50 do Protocolo SMTP do Exchange |
OnInboundCommand |
Implementa o comando MAIL em uma conversa XEXCH50. |
Coletor MAIL de Entrada XEXCH50 do Protocolo SMTP do Exchange |
OnInboundCommand |
Habilita o servidor virtual SMTP local para receber informações do destinatário em uma comunicação XEXCH50 de entrada. |
Coletor do XEXCH50 por eventos de destinatário do Protocolo SMTP do Exchange |
OnPerRecipient |
Habilita o servidor virtual SMTP local para enviar informações do destinatário em uma comunicação XEXCH50 de saída. |
Coletor de Resposta Ehlo XEXCH50 do Protocolo SMTP do Exchange |
OnServerResponse |
Habilita o servidor virtual SMTP local para receber uma resposta após o envio de um comando EHLO para o host remoto. A resposta do host remoto pode indicar suporte para comunicações XEXCH50. O Exchange inclui o XEXCH50 na lista de comandos com suporte que são retornados para o host de conexão. |
Coletor de Resposta XEXCH50 do Protocolo SMTP do Exchange |
OnServerResponse |
Habilita o servidor virtual SMTP para receber uma resposta para um comando XEXCH50 de saída emitido anteriormente. Por exemplo, se o serviço SMTP local emitir um comando XEXCH50 sem autenticação prévia, o servidor remoto responderá com: 504 É necessário autenticar antes. |
Coletor de Resposta RCPT XEXCH50 do Protocolo SMTP do Exchange |
OnServerResponse |
Habilita o servidor virtual SMTP local para receber informações de status do servidor Exchange remoto para cada destinatário indicado com um comando RCPT de saída. Um endereço de destinatário pode estar formatado incorretamente ou o servidor pode não ser capaz de retransmitir. Se as informações do destinatário estiverem corretas, o servidor virtual SMTP reflete o endereço de volta para o serviço SMTP local com informações de status, como: 250 2.1.5 administrador@tailspintoys.com. |
X-LINK2STATE
Comandos e respostas X-LINK2STATE são extensões específicas do SMTP. Esse comando é de propriedade do Exchange e foi projetado para intercambiar informações de topologia de roteamento entre servidores SMTP Exchange. O tamanho máximo possível de qualquer comando e resposta X-LINK2STATE é de 1,024 bytes. Esse tamanho é freqüentemente o tamanho real dos comandos e respostas X-LINK2STATE.
Esse recurso é implementado usando cinco coletores de eventos. Contudo, um coletor de eventos é usado para dois eventos separados, como indicado na tabela a seguir. Todos os coletores de eventos X-LINK2STATE são implementados em Xlsasink.dll no diretório \Arquivos de Programas\Exchsrvr\bin.
Extensões de protocolo para o comando X-LINK2STATE
Coletor de eventos | Evento de protocolo | Comentários |
---|---|---|
Coletor de Identificadores de Comandos de Entrada EHLO para XLSA |
OnInboundCommand |
Notifica os coletores de eventos X-LINK2STATE de que um comando de entrada EHLO foi recebido. |
Coletor de Identificadores de Comandos de Entrada X-LSA |
OnInboundCommand |
Notifica os coletores de eventos X-LINK2STATE de que um comando X-LINK2STATE de entrada foi recebido. |
Coletor X-SLA |
OnMessageStart, OnSessionEnd |
Sinaliza o início (comando MAIL) e o final (comando QUIT) de uma comunicação X-LINK2STATE de saída. Como o servidor virtual SMTP remoto é o destinatário final do pacote Orginfo que está sendo transmitido, não há necessidade de especificar destinatários em um comando RCPT de saída. Esse coletor de eventos transmite as informações sobre o estado do link. |
Coletor de Identificadores de Resposta X-LSA |
OnServerResponse |
Responde a um comando X-LINK2STATE com informações sobre como transmitir as informações sobre o estado do link. Um exemplo de resposta é: 200 LAST CHUNK={00000029} MULTI (5) ({00000010} DONE_RESPONSE), que indica o último bloco de dados enviado por este servidor virtual SMTP. |
Coletor de Identificadores de Resposta EHLO para X-LSA |
OnServerResponse |
Responde a um comando EHLO de entrada listando o comando X-LINK2STATE na resposta do servidor |
X-EXPS
X-EXPS é um verbo de propriedade do Exchange, apesar de ser semelhante a AUTH. Não há limite de tamanho máximo para os blocos de dados ou para o número de pacotes de dados intercambiados. A sintaxe dos comandos e respostas de dados depende do pacote AUTH selecionado, como LOGIN, NTLM, GSSAPI ou outros. Para obter mais informações, consulte o RFC AUTH.
Apesar de EXPS representar Segurança de Protocolo do Exchange, o único protocolo ao qual ele se refere é o SMTP. Alguns verbos usados no Exchange 2000 Server e no Exchange Server 2003 são de propriedade desses produtos e estão em conjunto com verbos ESMTP. Eles são conhecidos como verbos ESMTP X.
Esses recursos são implementados usando cinco coletores de eventos, como listado na tabela a seguir. Todas as extensões de segurança de protocolo são implementadas no Exps.dll no diretório Arquivos de Programas\Exchsrvr\bin.
Extensões de segurança de protocolo X-EXPS
Coletor de eventos | Evento de protocolo | Comentários |
---|---|---|
Coletor EXPS-EOD de Segurança do Protocolo SMTP do Exchange |
OnInboundCommand |
Sinaliza o final da transferência de dados ( _EOD). |
Coletor EXPS-Aux de Segurança do Protocolo SMTP do Exchange |
OnInboundCommand |
Sinaliza um comando AUTH de entrada. |
Coletor EHLO de Segurança do Protocolo SMTP do Exchange |
OnInboundCommand, OnServerResponse |
Sinaliza um comando EHLO de entrada e responde a EHLO listando o comando X-EXPS na resposta do servidor. |
Coletor de Correio de Segurança do Protocolo SMTP do Exchange |
OnInboundCommand, OnServerResponse, OnMessageStart |
Indica o início de uma transferência de dados. Esse coletor de eventos é implementado para todos os cenários relevantes do comando MAIL. Esse coletor de eventos processa eventos que sinalizam um comando MAIL de entrada, respondem a um comando MAIL de entrada e emitem um comando MAIL de saída. |
Coletor EXPS de Segurança do Protocolo SMTP do Exchange |
OnInboundCommand, OnServerResponse, OnSessionStart |
Indica o início de uma sessão X-EXPS. Esse coletor de eventos é implementado para todos os cenários relevantes do comando X-EXPS. Esse coletor de eventos processa eventos que sinalizam um comando X-EXPS de entrada, respondem a um comando X-EXPS de entrada e emitem um comando X-EXPS de saída. |
Controle de SPAM
Esse recurso é implementado usando três coletores de eventos que processam informações do remetente e do destinatário em conexões SMTP de entrada, como listado na tabela a seguir. Os coletores de eventos de controle de spam são implementados em Turflist.dll no diretório Arquivos de Programas\Exchsrvr\bin.
Extensões SMTP de controle de spam
Coletor de eventos | Evento de protocolo | Comentários |
---|---|---|
Coletor de Identificadores de Comandos de Entrada RCPT |
OnInboundCommand |
Sinaliza um comando RCPT de entrada com um endereço de destinatário que deve ser verificado. |
Coletor de Identificadores de Comandos de Entrada MAIL para TURF |
OnInboundCommand |
Sinaliza um comando MAIL de entrada com um endereço de remetente que deve ser verificado. |
Coletor de Identificadores de Comandos de Entrada EOD |
OnInboundCommand |
Sinaliza um comando _EOD de entrada. |
X-ANONYMOUSTLS
Esse parâmetro é novo para o Exchange 2007. Esse parâmetro habilita a seleção de um certificado TLS (Transport Layer Security) anônimo de entrada ou a seleção de um certificado TLS (Transport Layer Security) anônimo de saída. O Exchange consulta o serviço de diretório do Active Directory para recuperar a impressão digital do certificado no servidor. O atributo msExchServerInternalTLSCert no objeto de servidor armazena a impressão digital do certificado. Se o atributo msExchServerInternalTLSCert não puder ser lido ou se o valor for nulo, o Exchange não anunciará X-ANONYMOUSTLS na sessão SMTP e nenhum certificado será carregado.
XLONGADDR
Esse parâmetro é novo para o Exchange 2007. Esse parâmetro permite que o Conector de recebimento aceite endereços de email X.400 longos. Os endereços de email X.400 são encapsulados em endereços de email SMTP com o método de encapsulamento IMCEA (Endereço encapsulado do Conector de email da Internet).
Quando o valor desse parâmetro for $False, o comprimento máximo de um endereço de email SMTP completo será de 571 caracteres.
Quando o valor desse parâmetro for $True, serão executadas as seguintes alterações:
A palavra-chave XLONGADDR é anunciada na resposta de EHLO do Conector de recebimento.
O comprimento de linha aceito de uma sessão SMTP é aumentado em 8.000 caracteres.
Endereços longos válidos são aceitos pelo MAIL FROM: e RCPT TO: Comandos SMTP.
Portanto, os endereços de email X.400 podem ter até 1.860 caracteres de comprimento após o encapsulamento IMCEA.
O intervalo de entrada válido para esse parâmetro é $True ou $False. O valor padrão é $False. Só é possível modificar esse parâmetro em Conectores de recebimento que estejam configurados em servidores de Transporte de Hub.
XRDST
Esse parâmetro é novo para o Exchange 2007. Essa extensão de protocolo é usada para comunicar um destino de roteamento associado a uma mensagem ao servidor remoto. Se um servidor remoto não anunciar XRDST e se a mensagem a ser enviada exigir suporte a XRDST, o ID de evento 2021 do MSExchangeTransport é registrado no log de eventos. O nome simbólico desse evento é tuple_SmtpSendUnableToTransmitRDst. Esse evento indica que a mensagem não pode ser enviada.
EXPS EXCHANGEAUTH GSSAPI NTLM
Esse parâmetro é novo para o Exchange 2007. Essa é uma extensão dos serviços do conector de Recebimento Padrão anunciada após X-ANONYMOUSTLS.
X-EXCHANGEAUTH SHA256
Esse parâmetro é novo para o Exchange 2007. Essa é uma extensão dos serviços do conector de Recebimento Padrão anunciada após X-ANONYMOUSTLS.