Telnet, ou Teletype Network Protocol, é um protocolo de aplicação cliente/servidor. Ele permite que usuários se conectem diretamente aos servidores de email através da linha de comando de seus computadores.
O principal objetivo do Telnet é estabelecer uma conexão padronizada entre dispositivos e processos orientados a terminal (RFC 854).
Ele também pode ser usado para enviar emails e, nesse processo, testar a conexão do Simple Mail Transfer Protocol (SMTP). No entanto, existem limitações específicas que impedem seu uso real para envio de emails em produção, e discutiremos isso em detalhe.
Vejamos a seguir como enviar emails usando o Telnet nos sistemas operacionais Windows e Linux.
Enviar emails via Telnet no Windows
Pré-requisitos
- Acesso de administrador ou equivalente
- Servidor SMTP configurado
- Telnet habilitado no computador ou máquina do host
- Conhecimento básico do PowerShell e de comandos do prompt de comando
Instalando o cliente Telnet
A maioria das versões do sistema operacional Windows não tem o Telnet habilitado por padrão. Então, para começar, primeiro precisamos instalar o cliente Telnet. O processo de instalação será um pouco diferente dependendo da versão do Windows que você está usando. Geralmente, temos três opções principais:
- Instalação usando a linha de comando;
- Instalação usando o PowerShell;
- Instalação pelo Painel de Controle.
Instalação usando a linha de comando
Pressione a tecla Windows ou clique no botão Iniciar. Localize a caixa de Pesquisar, digite cmd e pressione Enter. Clique com o botão direito em Prompt de Comando e selecione Executar como administrador. Dessa forma, você terá os direitos necessários para completar a instalação. O próximo passo é digitar um comando específico na linha de comando.
Para Windows 7, Windows Server 2008 R2, Windows Server 2008, ou Windows Vista, digite o seguinte comando e pressione Enter:
pkgmgr /iu:"TelnetClient"
Para Windows 8 e versões superiores, digite este comando e pressione Enter:
dism /online /Enable-Feature /FeatureName:TelnetClient
Aguarde a conclusão da instalação. Nas versões mais recentes do Windows, você deve receber uma mensagem de confirmação.
Instalação usando PowerShell
Outra opção é usar o PowerShell para instalar o cliente Telnet. No entanto, ela só é aplicável ao Windows 8.1, Windows 10, Windows Server 2012 R2 ou posterior.
Abra a janela de administrador do PowerShell, digite o seguinte comando e pressione Enter.
Enable-WindowsOptionalFeature -Online -FeatureName TelnetClient
Aguarde até que a instalação seja concluída.
Instalação usando o Painel de Controle
Por fim, você pode instalar o cliente Telnet pelo Painel de Controle. Para isso, localize Programas (ou Programas e Recursos) e abra-o. Localize Ativar ou desativar recursos do Windows e clique nele. Você verá uma caixa de Recursos do Windows. Encontre Cliente Telnet e marque a caixa de seleção. Em seguida, pressione OK. Aguarde a conclusão da instalação e reinicie o computador para aplicar as alterações.
Para outras opções de instalação, consulte a documentação da Microsoft.
Enviar os emails
O processo de envio de email segue a lógica e ordem da transmissão SMTP: handshake, transmissão e encerramento da sessão. Ele usa comandos SMTP e se conecta ao servidor através de uma porta TCP. Confira este post do blog para encontrar mais informações sobre a operação SMTP.
Nota: Telnet não é uma forma segura de enviar email. Ele estabelece uma conexão não criptografada, pois não suporta SSL ou TLS. Isso significa que qualquer pessoa com acesso à sua rede pode interceptar a transmissão e acessar o conteúdo da sua mensagem.
Você também não pode se conectar a servidores SMTP com autenticação, já que a maioria deles exige criptografia TLS ou SSL antes de permitir métodos de autenticação LOGIN e PLAIN (autenticação sem TLS é permitida apenas em servidores SMTP de teste). Você deve usar OpenSSL em vez de Telnet para se conectar a servidores SMTP com criptografia. Falaremos sobre OpenSSL mais adiante.
Devido a tudo isso, vamos na verdade demonstrar o “envio de emails” para o sandbox do Mailtrap, que é um SMTP falso usado para fins de teste.
Para iniciar uma sessão SMTP, você precisará do nome de domínio completo ou do endereço IP do servidor SMTP ao qual está tentando se conectar. Como mencionado, usaremos o Email Testing do Mailtrap e digitaremos: sandbox.smtp.mailtrap.io.
Você também precisará identificar a porta, que pode ser 25, 587 ou 2525. O número da porta depende das configurações do servidor SMTP ao qual você está tentando se conectar. A maioria dos servidores SMTP bloqueia transmissões através da porta 25. As portas 587 e 2525 devem ser usadas com criptografia TLS.
Digite o comando:
telnet sandbox.smtp.mailtrap.io 2525
Nota: O Email Testing do Mailtrap não aceitará conexões Telnet através da porta 25. Você precisará usar a porta 2525.
Você verá a resposta começando com o código 220 se a conexão for bem-sucedida. Por exemplo,
220 sandbox.smtp.mailtrap.io ESMTP server ready
O próximo passo é se identificar para o host SMTP.
EHLO example.com or HELO example.com
Nota: O comando HELO iniciará uma conexão SMTP sem extensões de serviço. Portanto, os comandos ESMTP correspondentes (como STARTTLS, por exemplo) não serão suportados.
Todas as extensões SMTP suportadas serão listadas na resposta. Cada linha começará com 250, indicando uma conexão bem-sucedida.
250-sandbox.smtp.mailtrap.io
250-PIPELINING
250-SIZE 10485760
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
Em seguida, você pode transferir os campos de email necessários de acordo com a especificação SMTP. Primeiro, digite MAIL FROM
, depois RCPT TO
, e então digite DATA
.
MAIL FROM: <remetente@exemplo.com>
250 2.1.0 Sender OK
RCPT TO: <destinatario@exemplo.com>
250 2.1.5 Recipient OK
DATA
354 Start mail input; end with <CRLF>.<CRLF>
From: remetente@exemplo.com
To: destinatario@exemplo.com
Subject: Email de teste via Telnet
Esta é minha primeira mensagem de teste enviada usando o cliente Telnet no Windows
.
250 2.0.0 Ok: queued as ABC123456789
Para encerrar a sessão, você deve digitar o comando QUIT
. O servidor responderá com 221 2.0.0 Service closing transmission channel
, e a conexão será encerrada.
Um exemplo completo se parecerá com isso:
telnet sandbox.smtp.mailtrap.io 2525
220 sandbox.smtp.mailtrap.io ESMTP server ready
EHLO exemplo.com
250-sandbox.smtp.mailtrap.io Hello
250-SIZE 37748736
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-X-ANONYMOUSTLS
250-AUTH NTLM
250-X-EXPS GSSAPI NTLM
250-8BITMIME
250-BINARYMIME
250-CHUNKING
250 XRDST
MAIL FROM: <remetente@exemplo.com>
250 2.1.0 Sender OK
RCPT TO: <destinatario@exemplo.com>
250 2.1.5 Recipient OK
DATA
354 Start mail input; end with <CRLF>.<CRLF>
From: remetente@exemplo.com
To: destinatario@exemplo.com
Subject: mail de teste via Telnet
Esta é minha primeira mensagem de teste enviada usando o cliente Telnet no Windows
.
250 2.0.0 Ok: queued as ABC123456789
QUIT
221 2.0.0 Service closing transmission channel
Para aprender como enviar emails de teste com Telnet no Windows, assista nosso tutorial dedicado:
Enviar emails usando Telnet no Linux
Enviar emails usando Telnet em um console Linux é bastante similar ao Windows. A diferença está apenas no processo de instalação.
Pré-requisitos
- Qualquer versão da distribuição Linux
- Acesso de administrador via usuário root ou comando sudo
- Telnet
- Servidor de email funcional
Instalando o cliente Telnet
Se o cliente Telnet não estiver instalado em sua máquina, você pode instalá-lo pelo seu gerenciador de pacotes. Os comandos específicos serão diferentes dependendo da distribuição Linux que você está usando.
Para Arch Linux e Manjaro, digite o seguinte comando na janela do terminal e pressione Enter:
$ sudo pacman -S inetutils
Para Ubuntu, Kali Linux, Debian e Linux Mint:
$ sudo apt install telnet
Para Red Hat, Fedora e Centos:
$ sudo dnf install telnet
Você será solicitado a inserir sua senha de administrador. Digite-a e pressione Enter novamente. Aguarde a conclusão da instalação.
Enviando os emails
Para começar a enviar emails (novamente, iremos enviar para o sandbox do Email Testing do Mailtrap), inicie a sessão Telnet digitando este comando:
$ telnet sandbox.smtp.mailtrap.io 25
Em seguida, prossiga da mesma forma que descrevemos acima. Não se esqueça de seguir a ordem exata dos comandos SMTP, caso contrário, a transmissão não será bem-sucedida. Se você digitar incorretamente algum dos comandos, não poderá fazer correções com a tecla “apagar” (backspace). É recomendado pressionar Enter, aguardar a mensagem de erro e enviar o comando correto em seguida.
Para aprender como enviar emails de teste com Telnet no Linux, assista nosso tutorial dedicado:
Enviar mensagens de email com corpo HTML e anexos para múltiplos destinatários
Também é possível enviar emails HTML com Telnet. Para isso, você precisará definir o Content-Type
como text/html ou multipart/alternative. Esta parte deve ser inserida em seu email após o comando DATA
.
DATA
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="peaches";
--peaches
Content-Type: text/plain
Esta é uma mensagem em texto simples enviada usando Telnet
--peaches
Content-Type: text/html
<h1>Esta é uma mensagem HTML enviada usando Telnet</h1>
--peaches--
.
250 2.0.0 Ok: queued as ABC123456789
QUIT
221 2.0.0 Service closing transmission channel
Agora, vamos enviar um email com anexo. Para completar essa tarefa, precisaremos formatar a mensagem com MIME. O Content-Type
deve ser definido como multipart/mixed para informar ao servidor de email que o email conterá múltiplas partes, incluindo um anexo. O cabeçalho Content-Disposition
incluirá o próprio anexo.
DATA
From: remetente@exemplo.com
To: destinatario@exemplo.com
Subject: Email via Telnet com anexos
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=boundary_9876
--boundary_9876
Content-Type: text/plain
Este é o corpo da mensagem de email.
--boundary_9876
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="meugatolindo.jpg"
Este é o conteúdo do anexo.
--boundary_9876--
.
QUIT
Finalmente, vamos enviar emails para múltiplos destinatários. Esta é a parte mais fácil de todas. Só precisamos enviar o comando RCPT TO
várias vezes e incluir os endereços dos destinatários no campo to após o comando DATA
. Por exemplo:
MAIL FROM: <remetente@exemplo.com>
250 2.1.0 Sender OK
RCPT TO: <destinatario1@exemplo.com>
250 2.1.5 Recipient OK
RCPT TO: <destinatario2@exemplo.com>
250 2.1.5 Recipient OK
RCPT TO: <destinatario3@exemplo.com>
250 2.1.5 Recipient OK
DATA
354 Start mail input; end with <CRLF>.<CRLF>
From: remetente@exemplo.com
To: destinatario1@exemplo.com, destinatario2@exemplo.com, destinatario3@exemplo.com
Subject: Email via Telnet para múltiplos destinatários
É possível enviar emails com Telnet usando servidores SMTP gratuitos?
Sim e não.
Você não conseguirá enviar emails com o console Telnet para servidores SMTP gratuitos usando a porta 25. Como mencionado acima, ela está bloqueada pela maioria dos provedores de email. Então, se você tentar enviar um email para Gmail, Yahoo ou Microsoft Outlook, precisará usar a porta 587.
Mesmo assim, a conexão só pode ser usada para testar uma porta específica ou uma parte da conexão. O Telnet não suporta criptografia SSL ou TLS, então é provável que você não consiga enviar emails com sucesso. Nós não conseguimos enviar emails conectando aos servidores SMTP do Gmail, Outlook e Yahoo.
Para testar a conexão em diferentes portas, você pode simplesmente usar os comandos telnet smtp.gmail.com 587
ou telnet smtp-mail.outlook.com 587
. Se a resposta for 220, isso indica que não há problemas com as portas fornecidas.
Solucionando erros comuns do Telnet
Quando algo dá errado em sua sessão SMTP, você receberá mensagens de erro. Ao interpretá-las, você poderá entender qual é o problema com a conexão ou com o servidor SMTP.
Aqui está uma lista dos erros mais comuns e como corrigi-los:
- 550 Invalid recipient – geralmente ocorre quando o endereço de email do destinatário está incorreto ou não existe. A solução é verificar se há erros de digitação ou usar outro endereço para contatá-los;
- 535 Authentication failed – você verá este erro se o servidor SMTP não conseguir autenticar o cliente Telnet. As causas comuns incluem nomes de usuário ou senhas incorretos e métodos de autenticação inválidos. Certifique-se de estar usando as credenciais corretas. Além disso, verifique a lista dos comandos suportados ao escolher entre os métodos de autenticação LOGIN e PLAIN.
- Connection closed or timed out – você verá esses erros quando o cliente Telnet falhar ao estabelecer uma conexão com o servidor SMTP. Normalmente, isso ocorre devido a um problema de rede, um número de porta incorreto ou um firewall bloqueando a conexão. As soluções incluem tentar portas diferentes, verificar sua conectividade de rede, verificar a configuração SMTP e desabilitar o firewall em seu host.
- 502 Unrecognized command – ocorre quando um comando incorreto é usado. Para resolver o problema, verifique novamente os comandos que você está usando. Pressione Enter para digitar um novo comando. Lembre-se, “Backspace” e “Delete” não funcionarão uma vez que a conexão estiver estabelecida.
- 421 Service not available – este erro geralmente acontece quando o servidor SMTP está indisponível ou incapaz de processar a solicitação. Isso pode ocorrer devido a uma interrupção na rede ou quando o servidor está passando por manutenção. Para solucionar, você pode esperar e tentar novamente, verificar sua conexão de rede ou verificar a configuração SMTP.
Existe uma alternativa para enviar emails usando Telnet?
Como mencionamos acima, o Telnet é uma forma não segura de enviar emails. Mesmo que seu servidor SMTP escolhido permita usar SMTP AUTH
sem SSL/TLS (muito provavelmente, nenhum dos servidores SMTP em produção permitirá isso), suas credenciais ainda ficarão visíveis para qualquer pessoa conectada à mesma rede.
Além disso, suas credenciais serão criptografadas apenas com Base64, que é bastante simples de decifrar. Isso o deixará vulnerável a ataques. Se suas credenciais forem comprometidas, será fácil para os atacantes enviarem emails falsos ou lerem o conteúdo de suas mensagens.
Ainda, para usar o comando SMTP AUTH no Windows, você precisa de autenticação básica. Infelizmente, a Microsoft descontinuou a autenticação básica para novos locatários, o que significa que você não poderá realizar a autenticação SMTP em versões mais recentes do Windows. Isso forçará você a completar a sessão sem SMTP AUTH
.
É por isso que o Telnet é geralmente usado para enviar emails de teste, depurar conexões SMTP ou verificar se o servidor SMTP ou Exchange Server está acessível através da porta 25. Você nunca deve usar Telnet para enviar emails em produção. E mesmo que você queira apenas testar servidores de email, existem melhores alternativas no mercado, como OpenSSL e Mailtrap.
OpenSSL – alternativa ao Telnet para envio de emails criptografado
OpenSSL é uma ferramenta open-source de linha de comando que suporta criptografia SSL/TLS. Para instruções de instalação no Windows, Linux e outros sistemas operacionais, consulte a documentação oficial. No Windows, você também pode baixar o instalador. No Linux, você pode usar repositórios base e instalar o OpenSSL usando os seguintes comandos:
- Ubuntu, Debian, Kali Linux, Linux Mint:
sudo apt-get install openssl
- Red Hat, Fedora, Centos:
sudo dnf install openssl
- Arch Linux, Manjaro:
sudo pacman -Sy openssl
Uma vez que a instalação esteja concluída, use a linha abaixo para conectar ao servidor SMTP:
openssl.exe s_client -starttls smtp -connect sandbox.smtp.mailtrap.io:25
Em seguida, você pode cumprimentar o servidor e se identificar com EHLO
como fizemos com o Telnet. Continue com o comando STARTTLS
e se autentique usando os comandos AUTH LOGIN
ou AUTH PLAIN
.
O OpenSSL pode ser usado tanto em ambientes de teste quanto de produção. No entanto, o OpenSSL não é recomendado para enviar grandes volumes de emails.
Mailtrap – alternativa ao Telnet para testar e enviar grandes volumes de emails
O Mailtrap é uma plataforma para testar, enviar e controlar o desempenho de sua infraestrutura. Ela possui duas soluções: Email Testing e Email API/SMTP.
O Email Testing do Mailtrap é um Email Sandbox que permite que você inspecione seus emails com segurança em ambiente de teste sem enviar spam para os destinatários.
Com o Email Testing, você pode testar um relay SMTP ou servidor SMTP enviando um email para uma caixa de entrada virtual. Você só precisará inserir o Endereço de Email da Inbox (Inbox Email Address) como seu destinatário e facilmente solucionar problemas de envio.
Além disso, o Email Testing fornece as credenciais do servidor SMTP falso, permitindo que você o integre facilmente com seu aplicativo. Para maior flexibilidade e testes automatizados, você pode usar SDKs ou snippets de código pré-feitos.
Uma vez que o Email Testing esteja integrado, você poderá verificar o HTML/CSS, pré-visualizar seus emails, verificar as informações técnicas para validar cabeçalhos e inspecionar a pontuação de spam. Tudo isso está disponível sem os problemas de segurança que o Telnet possui.
Quando todos os testes estiverem concluídos, você pode enviar grandes volumes de emails em produção com o Email API/SMTP do Mailtrap – uma infraestrutura desenvolvida para providenciar altas taxas de entregabilidade. Ela pode ser integrada ao seu aplicativo usando serviço SMTP ou API RESTful, permitindo uma configuração fácil e sem obstáculos.
Após enviar os emails, você pode monitorar seu desempenho com o recurso Actionable Analytics do Email API/SMTP. Você pode rastrear métricas essenciais de email ou solucionar quaisquer problemas de envio inesperados, caso ocorram.
Conclusão
E é isso! Agora você sabe como enviar emails usando Telnet no Windows e Linux. Você pode enviar mensagens simples de email ou adicionar um corpo HTML e até anexos.
Lembre-se, você deve evitar enviar emails usando Telnet em produção para prevenir problemas de segurança e vulnerabilidades. Usar outras ferramentas como a Plataforma de Email Delivery do Mailtrap é muito mais sensato. Se você gosta dos nossos tutoriais, confira nossos guias sobre envio de emails com PowerShell ou envio de emails com SMTP.