Você está na página 1de 9

UNIVERSIDADE CATLICA DO SALVADOR TELEPROCESSAMENTO E REDES PROF.

: MARCO ANTNIO CMARA

23/04/2001

SIMPLE MAIL TRANSFER PROTOCOL (SMTP)

CARLOS EDUARDO TEIXEIRA CARVALHO

APRESENTAO
O objetivo principal deste trabalho fornecer, de forma simplificada, os aspectos bsicos do Simple Mail Transfer Protocol (SMTP), protocolo largamente usado para a transferncia de correios eletrnicos. Dentre estes aspectos bsicos que se quer mostrar, esto as descries do mecanismo de troca de mensagens e de alguns comandos que compem este protocolo. Para isto, foi necessria a compreenso do documento que torna pblico este protocolo, a Request for Comment (RFC) de nmero 821, elaborada por Jonathan B. Postel. O SMTP tem como objetivo transferir correios eletrnicos de forma confivel e eficiente, de maneira que tambm possa trabalhar de forma independente quanto ao servio de transporte implementado. Os servios de transporte utilizados pelo SMTP, definidos na RFC 821, so o TCP (na porta 25), o NCP (tambm na porta 25), o NITS e o X.25. Cada servio de transporte desse prov um ambiente de comunicao interprocessos (IPCE), o que indica que o SMTP tem a capacidade de transmitir mensagens eletrnicas atravs desses IPCEs e, por meio deles, estabelecer uma comunicao. No est no escopo deste trabalho a especificao detalhada dos cdigos de resposta deste protocolo. Os cdigos que aparecem sero devidamente explicados para que a compreenso se torne maior, porm o detalhamento deles omitido. Existem ainda algumas extenses deste protocolo, como o caso do ESMTP, que hoje vai tomando o lugar do SMTP, apresentando algumas variaes em seus comandos, mas conservando toda a sintaxe do SMTP.

O MODELO SMTP
Para que o protocolo SMTP possa ser til, necessrio que existam componentes bsicos que dele se utilizem. O modelo SMTP se resume em dois componentes bsicos: o remetente e destinatrio-SMTP. O remetente-SMTP aquele agente que vai enviar ao destinatrio-SMTP a mensagem como tal atravs de uma comunicao por comandos definidos pelo prprio SMTP. O destinatrio-SMTP cada agente final, no caso de ser o destino da mensagem de fato, ou cada agente intermedirio, que ir retransmitir a mensagem recebida para o prximo destino, fazendo o papel de remetente-SMTP, at que ela chegue ao seu destinatrio propriamente dito. O destinatrio-SMTP envia ao remetente respostas aos comandos que recebe deste, podendo ser respostas positivas ou negativas.

Tendo em vista que uma mensagem pode ser destinada a vrios endereos de e-mail, o remetente-SMTP, para fazer economia de conexes, tenta negociar com o primeiro destinatrio a que se conecta, a maior quantidade de endereos de destino possvel, agindo da mesma maneira com os prximos destinatriosSMTP a que se conectar. Isto faz com que haja uma melhor distribuio de processamento e, consequentemente, uma economia maior de tempo de conexo a outros hosts. Uma caracterstica interessante deste protocolo, conseqncia desta distribuio de processamento que feita, o fato de o destinatrio-SMTP (agente intermedirio), ao assumir o papel de remetente-SMTP para retransmitir a mensagem que recebeu, inserir um cabealho (Received) no incio da mensagem, informando de qual host recebeu esta mensagem que est para retransmitir. Isto faz com que seja identificada a rota pela qual a mensagem passou. Estes hosts intermedirios que compem a rota so extrados do argumento do comando RCPT e inseridos no argumento do comando MAIL, que sero vistos mais tarde. importante tambm lembrar que os comandos SMTP no so sensveis ao caso, ou seja, para o interpretador de comandos SMTP, os comandos Mail, mail, MAIL ou mAiL, por exemplo, devem ter o mesmo significado. Isto j no to verdadeiro para os nomes de endereos de e-mail e alguns hosts, que tratam, por exemplo, joao@brasil.br e JOAO@brasil.com, de forma distinta. Portanto, a implementao da aplicao SMTP deve estar atenta para a flexibilidade na formao lxica dos seus comandos e para a conservao das letras maisculas/minsculas nos nomes dos endereos de e-mail e hosts. A conversa entre dois agentes, atravs do SMTP, segue uma rgida sintaxe que deve ser feita por meio de comandos e respostas a esses comandos, onde cada comando seguido de uma resposta composta geralmente de apenas uma linha. As respostas so formadas de um cdigo numrico com trs algarismos, um espao e a mensagem propriamente dita. Quando a resposta composta por mais de uma linha, cada linha formada por um cdigo numrico seguido imediatamente de um hfen e da mensagem. Neste caso, a ltima linha da resposta identificada por ser semelhantemente formada como uma linha de resposta simples (cdigo numrico + espao + descrio da mensagem). A seguir ser feita uma descrio dos principais comandos do SMTP. 3

COMANDOS SMTP
Ao ser aberta, pelo remetente-SMTP, uma conexo com um servidor SMTP (neste caso um destinatrioSMTP), a forma de comunicao dever ser feita atravs de comandos SMTP. Sero apresentados todos os comandos do protocolo SMTP de acordo com a RFC 821, sendo apresentado um detalhamento maior somente para alguns deles pela importncia que eles tm em transaes comuns. importante se saber que todo comando feito no sentido remetente-destinatrio, ou seja, somente o remetente requer os comandos, enquanto o destinatrio os executa. Os comandos SMTP so compostos de caracteres do cdigo ASCII. Como o cdigo ASCII segue o padro 7-bit, quando o servio de transporte utilizado prov um canal baseado no padro 8-bit, necessria uma converso do formato 7-bit para o formato 8-bit. Neste caso, para o bit de mais alta ordem dado o valor zero (falso). Todos os comandos SMTP so orientados linha, ou seja, cada comando do protocolo SMTP terminado com dois caracteres de fim de linha (CR e LF, nesta ordem).

HELO Este o primeiro comando executado pelo remetente-SMTP depois de ter sido estabelecida uma conexo com o destinatrio-SMTP. Este comando usado pelo remetente para que possa identificar-se para o destinatrio. Sua sintaxe se constitui dos seguintes elementos: HELO <espao> <domnio-do-agente-remetente> <CRLF> importante ressaltar que o elemento <domnio-do-agente-remetente> representa exatamente o agente que est fazendo o papel de remetente para a transmisso em curso. Exemplo: Destinatrio (D) Remetente (R) D: 220 redes.com.br Simple Mail Transfer Service Ready R: HELO ucsal.br D: 250 redes.com.br Neste exemplo suposto que no host redes.com.br roda o servio SMTP, que est sendo acessado por um cliente, no caso, o host ucsal.br, que se identifica e recebe uma resposta positiva do destinatrio.

QUIT Este o comando utilizado para encerrar uma conexo j estabelecida entre dois agentes SMTP (remetente e destinatrio). Deve ser usado no fim de uma comunicao. Sua sintaxe se apresenta da seguinte forma: QUIT <CRLF> Exemplo: R: QUIT D: 221 redes.com.br Service closing transmission channel 4

MAIL Este comando SMTP serve basicamente para informar, ao agente destinatrio, o endereo de correio do remetente da mensagem. Alm disso, para casos onde a mensagem tem que passar por hosts intermedirios, ele informa tambm o caminho reverso por onde a mensagem j passou. No momento em que este comando executado, para o agente destinatrio, uma nova transao de correio est sendo iniciada. Desta forma, todos as tabelas de estado e os buffers so resetados, ou seja, se alguma transao havia sido iniciada e os buffers de dados e de destinatrios haviam sido preenchidos atravs de comandos DATA e RCPT, respectivamente, quando executado o comando MAIL novamente, estes buffers so apagados e uma nova transao imediatamente iniciada. A sintaxe para este comando a seguinte: MAIL <espao> FROM: <caminho-reverso> <CRLF> Exemplos: R: MAIL FROM:<aluno01@ucsal.br> D: 250 OK ou R: MAIL FROM:<@ucsal.br:joao@teleprocessamento.com.br> D: 250 OK Com relao formao do caminho reverso do segundo exemplo do comando MAIL, ser dada uma melhor explicao quando da apresentao do comando RCPT, a seguir.

RCPT O comando RCPT o responsvel pelo direcionamento da mensagem para um destinatrio. Este comando pode ser executado diversas vezes numa s transao, possibilitando a entrega de uma cpia da mensagem em questo para cada um dos destinatrios mencionados. Para cada comando RCPT executado, o agente destinatrio pode responder positivamente, no caso de aceitao daquele caminho informado, ou de forma negativa, no caso de no aceitao do caminho que foi informado. Sua sintaxe se baseia nos seguintes elementos ordenados desta forma: RCPT <espao> TO: <caminho> <CRLF> Tanto o elemento <caminho>, usado neste comando, como tambm o elemento <caminho-reverso>, usado no comando MAIL so formados por uma lista opcional de hosts e um endereo de correio, por exemplo: <@ucsal.br,@teleprocess.com.br,@informatica.eti.br:jose@redes.com.br> Caso este elemento seja considerado um caminho, simplesmente, os domnios que precedem o endereo de correio representam os hosts pelos quais a mensagem ter que passar, nesta mesma ordem, at chegar ao seu destinatrio final, propriamente dito, neste caso, jose@redes.com.br. Caso contrrio, sendo ele considerado um caminho reverso, usado no comando MAIL, os domnios que precedem o endereo de correio representam os hosts pelos quais a mensagem j passou, tomando o mais 5

a esquerda como sendo o ltimo host e o mais a direita como sendo o primeiro pela qual a mensagem passou. A medida em que a mensagem vai percorrendo a rota especificada pelo caminho apontado na primeira transmisso atravs do argumento <caminho> do comando RCPT, os primeiros domnios desta cadeia so da retirados e inseridos em ordem inversa no <caminho-reverso> do comando MAIL. Desta forma, aproveitando o exemplo anterior, teremos para a primeira transmisso os seguintes comandos: D: 220 alunos.com.br Simple Mail Transfer Service Ready R: HELO 200.188.18.128 D: 250 alunos.com.br R: MAIL FROM: <aluno01@alunos.com.br> D: 250 OK R: RCPT TO:<@ucsal.br,@teleprocess.com.br,@informatica.eti.br:jose@redes.com.br> D: 250 OK ... enquanto para a ltima transmisso a seguinte seqncia: D: 220 redes.com.br Simple Mail Transfer Service Ready R: HELO informatica.eti.br D: 250 redes.com.br R: MAIL FROM: <@informatica.eti.br,@teleprocess.com.br,@ucsal.br:aluno01@alunos.com.br> D: 250 OK R: RCPT TO:<jose@redes.com.br> D: 250 OK ... Alm desse fato, dois outros acontecem: a mensagem, a medida em que vai atravessando o caminho, vai sendo incrementada em seu incio do elemento de cabealho Received, como j foi dito na apresentao do Modelo SMTP. Geralmente o formato deste elemento de cabealho segue o padro do exemplo seguinte: Received: from ucsal.br by teleprocess.com.br ; 23 Apr 01 12:35:47 UT O outro fato que, quando a mensagem chega ao seu destinatrio final, incrementada de um elemento de cabealho Return-Path que , simplesmente, uma cpia do caminho reverso deste ltimo comando MAIL. Um exemplo: Return-Path: <@informatica.eti.br,@teleprocess.com.br,@ucsal.br:aluno01@alunos.com.br>

DATA Sendo aceitos os comandos RCPT, o agente remetente est livre para enviar o comando DATA que ir requerer a mensagem a ser transmitida. O comando DATA em si formado apenas pela string DATA e um elemento <CRLF>, porm, aps a execuo deste comando, o agente destinatrio requer do agente remetente, atravs de uma resposta intermediria (354), a mensagem que ser transmitida seguida imediatamente de um <CRLF> + . + <CRLF>, que indica o seu fim. Esta seqncia de passos possui o seguinte formato:

R: DATA D: 354 Start mail input; end with <CRLF>.<CRLF> R: Bla bla bla bla bla bla bla bla ... R: No no no no no no no no no no ... R: <CRLF>.<CRLF> D: 250 OK

SEND Este comando semelhante ao comando MAIL, sendo que ele feito para entregar mensagens a um ou mais terminais de usurio, caso eles estejam ativos. Caso contrrio retornada uma resposta de cdigo 450 para o comando RCPT correspondente. Exemplo de uso do comando: R: SEND FROM:<aluno01@alunos.com.br> D: 250 OK

SOML Tambm semelhante ao MAIL, este comando requer que o correio seja entregue a um ou mais terminais de usurio, caso este estejam ativos no host. Se no estiverem ativos ou no aceitarem mensagens de terminal, a mensagem , ento, entregue caixa de mensagens do usurio. Exemplo: R: SOML FROM:<aluno01@alunos.com.br> D: 250 OK

SAML Este comando, como os demais, alm de requerer que o correio seja entregue a um ou mais terminais de usurio, caso este estejam ativos no host, ele tambm exige que a mensagem seja entregue na caixa de mensagem de usurio. Independente de no estarem ativos ou no aceitarem mensagens de terminal, a mensagem tambm entregue caixa de mensagens do usurio. Exemplo: R: SAML FROM:<aluno01@alunos.com.br> D: 250 OK

RSET Este comando indica que a transao corrente est sendo abortada. Neste caso, todos os buffers e tabelas de estado so limpados e o agente destinatrio deve responder um OK.

VRFY Este comando pede ao agente destinatrio que confirme o argumento que est sendo passado que identifica um usurio. Se o argumento o nome do usurio, ento retornado o nome completo do usurio e sua completa caixa postal.

EXPN Parecido com o VRFY, o EXPN deve receber como argumento o nome de uma lista de e-mail (mailing list) e retornar, se for possvel, todos os nomes de usurio e suas caixas postais correspondentes.

HELP Este comando permite que o agente remetente receba algumas informaes de ajuda. Acompanhado de algum argumento, este comando pode devolver uma resposta mais especfica.

NOOP Este comando no tem nenhuma funcionalidade para o sistema. Significa no fazer operao alguma e sempre ter como resposta um OK.

TURN Este um interessante comando do SMTP que faz a troca das funes dos dois agentes que esto conectados, ou seja, quando o agente remetente envia este comando para o destinatrio e recebe uma resposta positiva, o remetente passa a ser o destinatrio e, da mesma forma, o destinatrio passa a ser o remetente de uma nova transao que , neste momento, iniciada.

REFERNCIA BIBLIOGRFICA
RFC 821 Postel, J., Simple Mail Transfer Protocol, RFC 821, University of Southern California, Agosto de 1982.

Você também pode gostar