Juliana Jenny Kolb
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 só 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
- Redes de Computadores (+)
- Modelo OSI (+)
- Modelo TCP/IP (+)
- Protocolos POP e IMAP (+)
- Protocolo DNS (+)
- Protocolo TCP (+)
- Telnet (+)
- SSL (+)
Site de Referência
https://notloaded.wordpress.com