# Simple Mail Transfer Protocol

Protocolo de Transferência de Correio Simples (do inglês: Simple Mail Transfer Protocol, abreviado SMTP) é o protocolo padrão de envio de mensagens de correio eletrônico através da Internet entre dois dispositivos computacionais (emissor e receptor), definido na RFC 821.
É um protocolo simples, em texto plano, de somente de envio (semelhante a um carteiro), onde um ou vários destinatários de uma mensagem são especificados (e, na maioria dos casos, validados) sendo, depois, a mensagem transferida, por padrão via porta TCP 25 (ou 465 para conexão criptografada com SSL), podendo usar a porta alternativa 587.
O SMTP por ter a função somente de envio, isto é, não permite que um usuário descarregue/solicite as mensagens de um servidor. Assim para a leitura é necessário o uso de um software cliente de e-mail com suporte ao protocolo de leitura POP ou IMAP.
A gestão de nomes DNS de um servidor SMTP de um certo domínio, é possibilitada por sua entrada MX (Mail eXchange), que aponta para os servidores determinados que deverão receber as mensagens de e-mail.

## História

A utilização em massa do SMTP remonta aos anos 1980. Na altura, era um complemento ao UUCP, que era mais adequado para transferências de correio eletrônico entre máquinas sem ligação permanente. Por outro lado, o desempenho do SMTP aumenta se as máquinas envolvidas, emissor e receptor, se encontrarem ligadas permanentemente.
O Sendmail foi um dos primeiros (se não o primeiro) agente de transporte de email a implementar SMTP. Em 2001, havia, pelo menos, cerca de 50 programas que implementavam SMTP como cliente (emissor) ou servidor (receptor). Outros servidores SMTP muito conhecidos são: exim, Postfix, Qmail, Microsoft Exchange Server e o Mail da Apple, disponível apenas para usuários do Mac OS ou do iOS para dispositivos móveis da Apple.
Dada a especificação inicial, que contemplava apenas texto ASCII, este protocolo não é ideal para a transferência de arquivos (também chamados de ficheiros). Alguns standards foram desenvolvidos para permitir a transferência de ficheiros 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 8BITMIME.
Para testar um servidor SMTP, com relativa facilidade, pode-se utilizar o protocolo Telnet.

## 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 essa razão que existem várias propostas para protocolos alternativos que iriam assistir a operação SMTP. O Grupo de Pesquisa Anti-Spam do Internet Research Task Force encontra-se a estudar 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.

## Exemplo

Após o estabelecimento de uma conexão entre emissor (cliente) e receptor (servidor), o exemplo seguinte ilustra uma sessão SMTP. Na conversação seguinte, "C:" designa as mensagens do cliente, e "S:" as mensagens do servidor. Na maioria dos computadores, uma conexão pode ser estabelecida usando o comando telnet no emissor, por exemplo:
C: MAIL FROM:<Smith@Alpha.ARPA> S: 250 OK C: RCPT TO:<Jones@Beta.ARPA> S: 250 OK C: RCPT TO:<Green@Beta.ARPA> S: 550 No such user here C: RCPT TO:<Brown@Beta.ARPA> S: 250 OK C: DATA S: 354 Start mail input; end with <CRLF>.<CRLF> C: Blah blah blah... C: ...etc. etc. etc. C: <CRLF>.<CRLF> S: 250 OK
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.

## Comandos do protocolo SMTP

O funcionamento de um servidor SMTP pode ser dividido em duas etapas. A primeira inclui a concessão de permissão para o processo e a verificação da configuração do computador por meio do qual um e-mail é enviado. Na segunda, ele envia a mensagem e segue a entrega bem-sucedida do e-mail. Se, por algum motivo, o e-mail não for entregue, ele será devolvido ao remetente. O servidor SMTP entende comandos simples de texto. Os mais comuns são:
* HELO: apresenta-se;
* EHLO: apresenta-se e solicita o modo estendido;
* RCPT TO: especifica o destinatário;
* MAIL FROM: especifica o remetente;
* DATA: especifica o corpo do e-mail.

## Como conhecer o seu servidor SMTP?

Você pode verificar o servidor SMTP utilizado executando algumas etapas no prompt de comando do Windows.
* Pressione a tecla “Windows”;
* Digite “cmd” na caixa de pesquisa;
* Abra o aplicativo “Prompt de Comando” e digite um dos dois comandos a seguir: ping SMTP.mysite.com e ping mail.mysite.com;
* O nome do seu servidor SMTP será exibido logo após a palavra “Pinging”.

## A importância do protocolo SMTP

Conforme mencionado anteriormente, o servidor SMTP é usado para entregar e-mails transacionais e em massa de forma confiável e segura. Existem muitos provedores de serviço SMTP no mercado. Algumas das vantagens são:
* Ambiente seguro para envio de e-mails
* integração rápida e personalizavel de e-mail
* software amigável
* Analise em tempo real para controlar seus e-mails