Marcelo Wzorek Marcos Roda Anderson Silva Simple Mail Transfer Protocol (SMTP) Trabalho referente a disciplinade Redes e sistemas distribuídos do 3º ano do Curso de Sistemas de Informação da Fundação de estudos sociais do Paraná,orientado pelo professor Airton Kuada Curitiba, 28 de março de 2006 Sumário 1. 2. 3. 4. 5. 6. Introdução........................................................................................................03 Implementação.................................................................................................04 Segurança e spamming.....................................................................................07 Exemplos de utilização.....................................................................................07 Conclusão.........................................................................................................08 Referências Bibliográficas................................................................................09 2 Introdução O trabalho aborda o tema SMTP (Simple Mail Transfer Protocol), este é um protocolo de envio de emails bastante simples baseado em texto simples. A utilização em massa deste protocolo iniciou na decada de 80. Na especificação inicial o protocolo era contemplado apenas texto ASCII (7 bits) o que impossibilitava a transmissão de arquivos, posteriormente foram definidos alguns padrões de formato para esta transmissão, o mais conhecido e utilizado é o MIME (Multipurpose Internet Mail Extensions), o SMTP contempla apenas a transmissão de mensagens para a recepção, outros protocolos como POP3 ou IMAP devem ser utilizados. 3 Implementação O SMTP foi desenhado para trafegar independente do meio de transporte, ou seja, pode trafegar em qualquer modelo de rede com uma camada de transporte confiável. Aqui será descrito como este protocolo é implementado em uma rede TCP/IP, que é o modelo mais utilizado hoje em dia, o SMTP trafega permanentemente na porta TCP 25. O protocolo é definido como “lock-step” ,ou seja, o emissor e o receptor esperam uma resposta para continuar transmitindo, o modelo da arquitetura pode ser definido como uma máquina de estado finita: Abaixo seguem os comandos básicos utilizados para comunicação através do protocolo SMTP, existem vários outros comandos opcionais, porém estes são os principais: HELO: MAIL: RCPT: DATA: RSET: NOOP: QUIT: Estado de identificação inicial. Caminho (trajeto) reverso do emissor Receptor envia o caminho (trajeto) Estado de mensagem de texto Aborta a transação e limpa os buffers Nenhuma operação Finaliza mensagem e fecha o canal Os comandos podem ter zero ou mais parametros, estes comandos e seus parametros são emitidos como linhas de texto no formato ASCII, os comandos não medem linhas e o fim é identificado com um retorno de carro <CRLF>. O reconhecimento da mensagem é formado por três digitos, seguido por um texto opcional, estes digítos representam sucesso ou erro no comando, note que para o reconhecimento de mensagem apenas os três primeiros digítos são relevantes o texto é apenas para compreensão humana, mnsagens iniciadas com o dígito “2” informam sucesso e com o dígito “3” significa erro, 4 normalmente para cada mensagem transmitida será enviada uma resposta, porém o protocolo não proíbe que mais de uma mensagem de reconhecimento seja transmitida. Uma sessão típica de SMTP pode ser representada pela figura abaixo: O emissor abre um canal de comunicação com o receptor, o receptor pode tanto ser o destino final como um nó intermediário (isto estará descrito explicitamente no destino da mensagem ou implicitamente nas rotas de rede), no momento da conexão, ambos, emissor e receptor, estarão no estado inicial. O receptor manda uma mensagem de reconhecimento informando que o canal está aberto, o emissor envia uma mensagem HELO identificando-se para o receptor (está autenticação não é obrigatória), novamente o receptor transmite uma mensagem de erro ou sucesso possivelmente negando acesso ao emissor, caso a mensagem de HELO seja bem sucessida ambos estarão no estado de enviar/responder comando. O emissor envia uma mensagem MAIL descrevendo o caminho (trajeto) reverso para o receptor. O receptor irá reconhecer o trajeto e limpar todos os buffers de transação, o emissor irá enviar uma ou mais mensagens RCPT descrevendo o trajeto dos demais recepientes (um por linha), o receptor irá aceitar ou rejeitar cada endereço enviado pela mensagem RCPT. O emissor envia um comando DATA instruindo o receptor que a mensagem corrente é a mensagem de email propriamente, colocando a transação no modo de envio (send), a transmissão só é finalizada quando o comando de fim da mensagem (EOM end-of-message) é enviado este comando é representado por <CRLF>.<CRLF> que parece com um ponto sozinho em uma linha, porém o receptor também deve tratar a mensagem pois se ela ocasionalmente 5 conter o comando EOM a transmissão será feita incorretamente. Finalmente o emissor envia uma mensagem QUIT colocando a transação no modo de finalização, o receptor reconhece esta mensagem e fecha o canal de comunicação. 6 Segurança e spamming Uma das limitações da especificação SMTP inicial é que não existe método de autenticação dos emissores. Como tal, foi-lhe adicionada a extensão SMTP-AUTH Apesar disso, o spamming continuava a ser um problema. Alterar o SMTP extensivamente ou substituí-lo completamente não se torna prático, devido à forte utilização do SMTP e aos efeitos que daí podiam advir. O Internet Mail 2000é uma proposta nesse sentido. É por esta razão que existem várias propostas para protocolos alternativos que iriam assistir a operação SMTP. O grupo de pesquisa anti-spam do IRTF está estudando várias propostas para se suportar a autenticação do emissor de uma forma flexível, leve e escalável. A proposta aparentemente mais sólida parece ser o protocolo Sender Policy Framework (sistema de diretivas do remetente) que é uma extensão de segurança do protocolo SMTP que impede que o domínio remetente de email seja forjado. O conceito do SPF foi desenvolvido originalmente por um grupo liderado por Meng Weng Wong. Exemplos de utilização O Sendmail foi um dos primeiros (se não o primeiro) agente de transporte de email a implementar SMTP. Em 2001 existiam, pelo menos, uns 50 programas que implementam SMTP como cliente (emissor) ou servidor (receptor). Outros servidores SMTP muito conhecidos são: Exim, Postfix, Qmail, e Microsoft Exchange Sever. 7 Conclusão Por padrão, o protocolo SMTP não é seguro, o que permite que um usuário envie mensagens, fazendo-se passar por outro usuário, prática conhecida como "forjar os cabeçalhos das mensagens". Geralmente, quem utiliza-se dessa prática são usuários mal intencionados, os quais pretendem burlar sistemas de segurança para fazer com que suas mensagens cheguem ao seu destino como se fossem originadas em uma fonte confiável. Um exemplo de quem utiliza-se de tal recurso são os praticantes de SPAM (envio de mala direta comercial não solicitada através de correio eletrônico). 8 Referências Bibliográficas http://pt.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol http://www.mactech.com/articles/mactech/Vol.12/12.11/PPSMTPClient/index.html 9