Servidor Att SMTP - O protocolo SMTP

O correio eletrónico já existia, de uma forma ou de outra, desde a década de 1960. As pessoas deixavam mensagens umas às outras utilizando uma série de métodos diferentes em computadores mainframe, mas só em agosto de 1982, quando o Information Sciences Institute publicou o Simple Mail Transfer Protocol (SMTP; RFC 821), é que foi proposto um método normalizado para enviar e receber correio eletrónico.

O SMTP rapidamente ganhou popularidade na ARPANET, substituindo métodos mais antigos e complexos utilizados para transferir correio eletrónico de um mainframe para outro, e foi suportado pela primeira vez no final de 1982 pelo Sendmail, um dos primeiros Agentes de Transferência de Correio, no BSD 4.1c.
Desde então, o protocolo tem sido revisto e alargado com bastante regularidade, mas o método fundamental para o envio de correio eletrónico permaneceu, em grande parte, inalterado.

O protocolo é um protocolo baseado em texto, que inicialmente não suportava a transmissão de dados binários. No entanto, o facto de ser baseado em texto tornou o protocolo fácil de implementar e manter. O MIME (Multipurpose Internet Mail Extensions) tornou-se popular no final dos anos 80 para codificar e enviar dados binários através do SMTP. Atualmente, o SMTP é o protocolo dominante para o envio e receção de e-mail na Internet, sendo o conhecimento aprofundado deste protocolo essencial para qualquer administrador de rede.

Como o SMTP é baseado em texto, aprender o protocolo é significativamente mais fácil do que muitos outros, e basta um programa capaz de enviar dados ASCII através da porta 25 do TCP/IP, como o Telnet, para comunicar diretamente com um servidor SMTP.

O correio eletrónico é enviado via SMTP numa transação; ou seja, se o envio da mensagem não for concluído na íntegra e sem gerar um erro, a mensagem é descartada. A RFC 821 descreve uma transação como tendo três fases: especificar um remetente, indicar um ou mais destinatários e, por fim, enviar a própria mensagem. No entanto, é mais fácil conceber uma transação SMTP como tendo 5 fases:

  • Aperto de mão
  • Enviar endereço de resposta
  • Enviar aos destinatários
  • Enviar dados da mensagem
  • Concluir transação

Aperto de mão

Ao estabelecer ligação a um servidor SMTP na porta 25, o remetente de uma mensagem deve aguardar que o destinatário aceite a ligação e se identifique no seguinte formato:

220 [domínio] [Informações sobre o serviço]
Exemplo: 220 example.com Serviço disponível

O remetente deve, em seguida, identificar-se junto do destinatário utilizando o comando HELO.

HELO [domínio]
Exemplo: HELO example.com

Os servidores de correio eletrónico esperam que cada um se identifique utilizando um nome de domínio que possa ser utilizado para verificar a identidade do servidor através de uma pesquisa do registo MX; no entanto, o servidor recetor não deve rejeitar a ligação nesta fase, mesmo que a identidade do remetente não possa ser verificada, devendo, por isso, responder com:

250 [Mensagem]
Exemplo: 250 example.com Olá, bob@example.com

O código de resposta 250 é a resposta genérica ‘OK’ enviada por um servidor SMTP para indicar que a última ação foi concluída com sucesso.

Endereço para resposta:

Assim que os dois servidores tiverem concluído o processo de estabelecimento de ligação, a transação SMTP terá início e poderemos começar a enviar comandos ao servidor. Se pretender ver os comandos suportados pelo servidor, envie o comando HELP e o servidor SMTP deverá responder com uma mensagem a indicar quais os comandos suportados.

No entanto, para enviarmos uma mensagem a um utilizador neste servidor, temos primeiro de definir um endereço de resposta. O endereço de resposta deve ser indicado primeiro para que, caso ocorram erros durante a transação SMTP, estes possam ser comunicados a esse endereço. Para tal, utilizamos o comando ‘MAIL FROM:’:

E-MAIL DE:
Exemplo: MAIL FROM:

Repare nos caracteres «Menor que» e «Maior que». A norma RFC 821 exige que estes caracteres façam parte do próprio endereço de e-mail. Se o endereço for aceite, o SMTP devolverá uma resposta 250 OK.

Enviar aos destinatários

Depois de definir um endereço de resposta, o SMTP permite-nos identificar os destinatários da mensagem. Para tal, utilizamos o comando ‘RCPT TO:’:

RCPT PARA:
Exemplo: RCPT PARA:

Para definir vários destinatários, basta repetir este comando para cada destinatário. Caso o destinatário aceite correio para este utilizador e possa aceitar a mensagem neste momento, deverá responder com um 250 OK. No entanto, se o correio não for aceite para este utilizador, será enviada uma resposta de falha 550 ou o código de erro apropriado. Caso recebamos uma resposta 250 OK, podemos prosseguir com o envio dos dados da mensagem.

Enviar dados da mensagem

O envio de dados via SMTP é bastante simples; no entanto, os formatos das mensagens podem ser bastante complexos, especialmente quando se enviam anexos binários. Para começar a enviar dados, devemos emitir o comando ‘DATA’, ao qual o servidor deve responder com a resposta intermédia 354. Ou seja:

354 Introduza a mensagem, terminando com “.” numa linha separada

A mensagem mais simples que podemos enviar é uma mensagem de texto simples, que não requer a utilização do formato de mensagem MIME multiparte. Todas as mensagens, sejam elas de texto simples ou não, terminam com o envio de uma linha que contém apenas um ponto. Além disso, antes de enviar uma mensagem, pode incluir algumas informações de cabeçalho, tais como Data, Assunto, Para, Cc e De.

Exemplo:

DADOS
354 Introduza a mensagem, terminando com “.” numa linha separada
Assunto: Esta é a linha de assunto da mensagem de texto do plano
E este é o corpo da mensagem em texto simples.

Se for aceite, o servidor SMTP devolverá uma resposta 250 OK ou um código de erro, caso a transação tenha falhado ou tenha ficado incompleta. Repare no ponto final no final da linha do corpo da mensagem; só quando for encontrado um ponto final sozinho numa linha é que o servidor deixará de aguardar dados. Caso o servidor remetente esteja a enviar uma mensagem que possa provocar o encerramento prematuro da sessão de dados — uma vez que a mensagem contém um único ponto numa linha —, deve adicionar um ponto adicional à linha.

Concluir a transação

Até este momento, tudo o que foi enviado para o servidor SMTP de destino é considerado descartável. Se o comando ‘QUIT’ não for enviado antes do encerramento da ligação, o servidor de destino limitar-se-á a eliminar quaisquer dados de mensagens que tenham sido armazenados. Originalmente utilizado como uma forma elegante de encerrar uma ligação, é hoje comummente utilizado para indicar que uma transação foi concluída, sendo que muitos servidores de correio aguardam o comando QUIT antes de colocarem o correio na fila para que o Agente de Transferência de Mensagens o encaminhe. Depois de enviar o comando «QUIT», o servidor de destino deve enviar uma resposta 221 para confirmar que a transação foi concluída e que a ligação está a ser encerrada.

Se estiver a aprender o protocolo SMTP, recomenda-se que leia as RFC 821, 2476 e 2554. Deve ter em conta, especialmente ao ler a RFC 821, que, desde 1982, os servidores de e-mail sofreram alterações significativas, em parte como resposta aos abusos cometidos pelos spammers.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Toda a gente sabe que ter um servidor SMTP fiável é a chave para que o seu correio eletrónico seja entregue corretamente. Também é bem sabido que já NINGUÉM oferece SMTP sem autenticação ou para retransmissão aberta. MAS AINDA PODE OBTER GRATUITAMENTE UM SERVIDOR SMTP DE ALTA QUALIDADE PARA SUA UTILIZAÇÃO!

Clique aqui para obter o seu SERVIDOR SMTP GRATUITO