Começarei minhas postagens neste blog por um assunto que me chamou atenção por algum tempo: enviar e-mail para servidores reais pela linha de comando.
Em meu curso estudei alguns protocolos de comunicação, entre eles os protocolos de e-mail: SMTP, IMAP e POP3. Vi os comandos que eram utilizados para se enviar e receber um e-mail, porém havia um problema: para testá-los tínhamos que instalar nosso próprio servidor de e-mail e configurá-lo para então por Telnet utilizar os comandos. Porém a idéia de testar os comandos apenas em laboratório não me agradava muito. Eu queria comunicar com servidores reais tal como Yahoo, Gmail e outros. Como minha conta de e-mail mais utilizada é a do Gmail resolvi começar a pesquisar como enviar um e-mail para os servidores de email da Google.
Caso precise de ajuda quanto aos comando do SMTP, IMAP ou do POP3:
http://pt.kioskea.net/contents/internet/smtp.php3
Para podermos receber qualquer e-mail por um cliente devemos também ajustar duas configurações na nossa conta de e-mail. Acessando minha conta do Gmail eu vou em Configurações → Encaminhamento e POP/IMAP, aqui ativamos o POP na opção Ativar POP para todos os e-mails e o IMAP na opção Ativar IMAP.
Para enviar e-mail para o Gmail precisamos primeiro saber qual é o seu servidor e qual a porta que deveremos acessar para enviar ou receber um e-mail. O proprio Gmail possui essas informações:
Servidor de entrada de e-mail (IMAP) - requer SSL | imap.gmail.com |
Servidor de entrada de e-mail (POP3) - requer SSL | pop.gmail.com |
Servidor de saída de e-mail (SMTP) - requer TLS | smtp.gmail.com(usa autenticação) |
Como a tabela acima indica podemos enviar o e-mail por SMTP para 2 portas diferentes: a 465 e a 587. Todas as duas exigem uma conexão criptografada, a diferença está que a 465 exige protocolo SSL de criptografia, já a porta 587 exige o protocolo TLS.
Para criar uma conexão criptografada utilizei o openssl que é uma ferramenta que implementa os protocolos SSL e TLS.
Para instalar basta o comando:
sudo apt-get install openssl
Agora com a ferramenta instalada vamos criar uma conexão. Porém como temos duas portas que esperam diferentes protocolos então temos também diferentes sintaxes para cada uma delas. Para conectar na porta 465 utilize o comando:
openssl s_client -crlf -connect smtp.gmail.com:465
Como a porta 587 utiliza TLS, para se conectar por ela devemos especificar ao openssl que utilize este tipo de criptografia, com isto o comando ficaria o seguinte:
openssl s_client -crlf -starttls smtp -connect smtp.gmail.com:587
Enviamos um helo para nos identificarmos:
HELO nome_qualquer
Agora temos que nos autenticar, a autenticação é feita da seguinte maneira:
AUTH PLAIN usuario_e_senha_criptografados_em_base_64
Para criarmos a chave com nosso usuario e senha criptografados em base 64 podemos utilizar um comando em Perl:
perl -MMIME::Base64 -e 'print encode_base64("\000usuario\@gmail.com\000senha")'
Agora informamos o remetente do email:
MAIL FROM: <usuario@gmail.com>
E o destinatário:
RCPT TO: <destino@gmail.com>
Informamos que a mensagem irá iniciar logo após o comando:
DATA
Agora podemos começar a digitar o email:
“ From: Remetente <remetente@gmail.com>
To: Destinatário <destinatario@dominio.com>
Subject: Assunto do Email
Conteúdo ”
Para finalizarmos o e-mail saltamos uma linha digitamos um ponto (.) e saltamos mais uma linha.
E pronto enviamos um e-mail sem utilizar nenhum cliente de e-mail.