Protocolo SMTP

Juliana Jenny Kolb

teste seu conhecimento

Home > Redes de Computadores > Modelos de Arquitetura de Redes > Modelo OSI

Protocolo SMTP

O SMTP (Protocolo Simples de Transferência de Mensagem) atua na camada de Aplicação tando do Modelo OSI quanto do Modelo TCP/IP e é o único Protocolo padronizado e instituído pela ISO para envio de mensagem (e-mail), o qual é configurado nos servidores de saída/servidores de envio.

Os protocolos POP e IMAP (+) são responsáveis pelo recebimento de mensagens(e-mail).

A resolução DNS de um servidor SMTP de um dado domínio é possibilitada por sua entrada MX (Mail eXchange) (+).

Com o SMTP, o desempenho aumenta se as máquinas envolvidas, emissor e receptor, se ligadas permanentemente.

O Sendmail foi um dos primeiros (se não o primeiro) agente de transporte de email a implementar SMTP. Outros servidores SMTP muito conhecidos são: exim, Postfix, Qmail, Microsoft Exchange Server.

A especificação inicial, que contemplava apenas texto ASCII de 7 bits. Alguns padrões foram desenvolvidos para permitir a transferência de arquivos em formato binário através de texto simples, como o caso do MIME. Hoje em dia quase todos os servidores SMTP suportam a extensão 8BIT MIME. Uma forma de conversão usada com MIME é o padrão UUENCODE. Depois surgiram os padrões: BinHex (Macintosh), MIME GIF, MIME JPEG, MIME PostScript, MIME audio, MIME MPEG, entre outros.

Arquitetura

  • Cliente Servidor.

Portas de Comunicação

  • TCP 25 – Primogênita.
  • TCP 465.
  • TCP 587 – Recomendada (mais segura).

Entidades do SMTP

O SMTP possui basicamente três entidades:

  • Agente do Usuário.
  • Emissor-SMTP.
  • Receptor-SMTP.

Relay SMTP

Relay é o nome dado a operação de um servidor reenviar um e-mail para outro servidor. O relay nos servidores deve ser restrito as classes de endereços IP necessárias e/ou  poder ser liberado sob autenticação de usuários ou servidores.

Segurança no SMTP

Uma das limitações da especificação SMTP inicial é que não existe método de autenticação dos emissores. Qualquer pessoa pode identificar-se como bem quiser.

Como forma de melhorar a segurança pode-se usar o S/MIME (RFCs 3369,3370,3850,3851), padrão para criptografia de chave pública e assinatura de dados MIME que utiliza o padrão de mensagem PKCS#7.

O servidor SMTP pode ser configurado para recusar conexões de hosts sem DNS reverso configurado.

Pode se usar o SMTPS (TCP 465 (mais usada mas não mais recomendada) ou 587) que fornece segurança através do TLS (Transport Layer Security). Com isso, pode se obter confidencialidade, integridade e autenticação.

Comandos SMTP

  • HELO <SP> <domain> <CRLF>  (obrigatório)

Identifica o Emissor da mensagem para o Receptor.

  • MAIL <SP> FROM:<reverse-path> <CRLF> (obrigatório)

Inicializa uma transação de mail na qual uma mensagem é enviada a uma ou mais caixa de mensagens (mailbox).

  • RCPT <SP> TO:<forward-path> <CRLF>  (obrigatório)

Identifica o destinatário da mensagem; múltiplos destinatários são definidos por múltiplos usos desse comando.

  • DATA <CRLF>  (obrigatório)

Inicializa a transmissão da mensagem, após seu uso é transmitido o conteúdo da mensagem, que pode conter qualquer um dos 128 caracteres ASCII. O seu término é especificado por uma sequência “<CRLF>.<CRLF>”.

  • RSET <CRLF> (obrigatório)

Determina que a operação atual de mail deverá ser abortada. Todos os dados referentes são descartados.

  • SEND <SP> FROM:<reverse-path> <CRLF>

Usado para inicializar uma transação de mail na qual uma mensagem é enviada para um ou mais terminais onde estejam os destinatários e não para os seus mailboxes. É um comando alternativo ao comando MAIL.

  • SOML <SP> FROM:<reverse-path> <CRLF>

Usado para inicializar uma transação de mail na qual uma mensagem é enviada para um ou mais terminais onde estejam os destinatários ou a seus mailboxes. A mensagem é direcionada aos terminais dos destinatários ativos no momento (e aceitando mensagens) caso contrário é direcionada aos seus mailboxes. É alternativo ao comando MAIL.

  • SAML <SP> FROM:<reverse-path> <CRLF>

Usado para inicializar uma transação de mail na qual uma mensagem é enviada para um ou mais terminais dos destinatários e aos seus mailboxes. A mensagem é direcionada aos terminais dos destinatários ativos no momento (e aceitando mensagens) e a todos os mailboxes.

  • VRFY <SP> <string> <CRLF>

Solicita ao Receptor-SMTP a confirmação de que o argumento identifica um usuário conhecido. Se for identificado é retornado o nome completo do usuário (se este possuir) e seu mailbox completo.

  • EXPN <SP> <string> <CRLF>

Solicita ao Receptor-SMTP a confirmação de que o argumento identifica uma lista de usuários de mail (mailing list). Se for identificada serão retornados os membros desta lista no mesmo formato retornado pelo comando VRFY.

  • HELP [<SP> <string>] <CRLF>

Faz com que o Receptor-SMTP envie informação de ajuda ao Emissor-SMTP.

  • NOOP <CRLF>  (obrigatório)

Não possui efeitos nem parâmetros. Apenas faz com que o receptor envie um OK.

  • QUIT <CRLF>  (obrigatório)

Determina que o Receptor-SMTP envie um OK e então feche o canal de comunicação com o Emissor-SMTP.

  • TURN <CRLF>

Faz com que o Receptor e o Emissor troquem de papéis, o Receptor fica como Emissor e o Emissor como Receptor.

Exemplo de uma sessão SMTP

Após o estabelecimento de uma conexão entre emissor (cliente) e receptor (servidor), o exemplo seguinte ilustra uma sessão SMTP entre um cliente (C) e o servidor (S). Na maioria dos computadores uma conexão pode ser estabelecida usando o comando telnet no emissor, por exemplo:

*Em uma transferência, a conexão TCP é ativada pela máquina que quer enviar o arquivo.

telnet http://www.example.com 25

que irá abrir uma ligação SMTP entre a máquina cliente (emissor) e o servidor http://www.example.com.

S: 220 http://www.example.com ESMTP Postfix
C: HELO mydomain.com
S: 250 Hello mydomain.com
C: MAIL FROM: sender@mydomain.com
S: 250 Ok
C: RCPT TO: friend@example.com
S: 250 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: Subject: test message
C: From: sender@mydomain.com
C: To: friend@example.com
C:
C: Hello,
C: This is a test.
C: Goodbye.
C: .
S: 250 Ok: queued as 12345
C: quit
S: 221 Bye

Embora opcional, praticamente todos os clientes questionam o servidor sobre quais as extensões SMTP que este suporta, utilizando o comando EHLO (em oposição ao HELO ilustrado acima), e o corpo da mensagem (depois de DATA) segue tipicamente em formato MIME. Este primeiro comando é seguido de um espaço e o nome de domínio da sua máquina.

O segundo comando é “MAIL FROM” seguido do endereço de correio eletrônico do remetente. O comando seguinte é “RCPT TO:” seguido do endereço de correio eletrônico do destinatário.

Se um comando é aceito, o servidor devolve a mensagem “250 OK”

O comando DATA é a terceira etapa do envio. Anuncia o início do corpo da mensagem. Se o comando for aceito, o servidor envia uma mensagem intermediaria numerada, que indica que o envio do corpo do mail pode começar e considera o conjunto das linhas seguintes até que se use um ponto em uma linha para indicar o fim da mensagem.

O corpo do mail contém eventualmente alguns dos seguintes cabeçalhos:

  • Date
  • Subject
  • Cc
  • Bcc
  • From

Além desses comandos o QUIT é usado para se desconectar do servidor SMTP e HELP para exibir a lista dos comandos suportados pelo servidor.

* para testar um servidor SMTP, com relativa facilidade, pode-se utilizar o protocolo Telnet.

 

Artigos Relacionados

 

Site de Referência

https://notloaded.wordpress.com

 

Deixe uma resposta