Quando estava configurando o servidor de arquivos da Lógica Digital, eu comecei pela configuração do RAID que inclusive, gerou uma série de cinco posts aqui no blog (Linux: RAID no Ubuntu Intrepid Ibex (Ubuntu 8.10)), me deparei com uma questão que aparentemente é simples, porém precisou de uma pesquisa sobre o assunto. A questão era: como enviar e-mail, da minha conta no Gmail, através de linha de comando no Linux?
Hm… por padrão o utilitário para RAID, o mdadm, já instala o Citadel ou o Postfix, porém a configuração e manutenção de um MTA (mail transfer agents), em cada servidor, passa a ser algo moroso e um tanto complexo, sem contar que muitos servidores de e-mail recusam mensagens de origem duvidosa, como por exemplo, meu-servidor@minha-empresa.local, então a idéia foi utilizar um MTA simples, leve e de fácil configuração e que utilizasse minha conta do Gmail para enviar e-mails.
A alternativa que encontrei foi o sSMTP. O sSMTP é uma forma fácil de enviar e-mails através de um servidor SMTP externo, por exemplo smtp.gmail.com, sem a necessidade de um serviço rodando no servidor ou grandes configurações. O pacote de instalação do sSMTP tem apenas 50,6 kb, já dá pra imaginar o quão pequeno ele é.
Antes de instalarmos o sSMTP no Ubuntu Jaunty (Ubuntu 9.04), vamos atualizar nossa lista de pacotes com o comando:
# apt-get update
Agora que já estamos com a lista atualizada e sincronizada, podemos instalar o sSMTP com o comando:
# apt-get install ssmtp
Agora que estamos com o sSMTP instalado, precisamos saber onde estão os arquivos de configurações e o programa em si. Os arquivos de configurações estão em /etc/ssmtp e o programa executável está em /usr/sbin/ssmtp.
O sSMTP tem apenas dois arquivos de configuração, um é o /etc/ssmtp/ssmtp.conf e o outro é o /etc/ssmtp/revaliases. O arquivo ssmtp.conf tem como função informar o endereço do servidor SMTP que será utilizado, se o servidor aceita endereço de e-mail inválido, como por exemplo meu-servidor@minha-empresa.local e também se a comunicação com o servidor é feita em um nível superior de segurança (SSL). Já o arquivo revaliases são apelidos das contas, abaixo vamos detalhar cada um dos arquivos.
Definindo o arquivo /etc/ssmtp/ssmtp.conf
Existem três itens chave neste arquivo, são eles Mailhub, FromLineOverride e UseTLS, vamos detalhar cada um deles:
- Mailhub – é o endereço do servidor de SMTP que será utilizado para enviar os e-mails. No caso do Gmail é smtp.gmail.com:465;
- FromLineOverride – tem como opções YES e NO e sua função é especificar se o servidor de SMTP aceita que seja enviado um e-mail com o remetente diferente do e-mail autenticado. Atualmente não conheço servidores de e-mail que autorizem esta função. Para a maioria dos casos o valor deve ser NO;
- UseTLS – tem como opções YES e NO e especifica se o servidor utiliza TLS (ou SSL) para “conversar” com o servidor SMTP. Atualmente, muitos servidores utilizam esta função, então deixe como YES.
Outros itens importantes, porém que não vamos utilizar, do arquivo ssmtp.conf:
- RewriteDomain – o domínio ao qual será exibido como de origem, por exemplo, como vamos utilizar o Gmail, podemos deixá-lo como gmail.com;
- Hostname – nome do servidor que está enviando o e-mail para o servidor SMTP, deve ser utilizado com um domínio válido;
- UseSTARTTLS – tem como opção YES e NO e especifica se deve ser enviado EHLO/STARTTLS para o servidor SMTP antes de começar a transferência de informações via SSL;
- AuthUser – nome de usuário do servidor SMTP, ou seja, neste caso é seu-email@gmail.com;
- AuthPass – senha do e-mail, ou seja, sua senha no Gmail;
- AuthMetod – tipo de autenticação, pode ser usado plain (texto puro) ou criptogrado.
Definindo o arquivo /etc/ssmtp/revaliases
Este arquivo, como explicado acima, possui os apelidos das contas no servidor (máquina) local, ou seja, se o e-mail será enviado através do usuário root, então devemos colocá-lo na configuração.
Configuração do sSMTP para Gmail
O arquivo /etc/ssmtp/ssmtp.conf deverá estar definido dessa forma:
FromLineOverride=NO
Mailhub=smtp.gmail.com:465
UseTLS=YES
Já o arquivo /etc/ssmtp/revaliases terá apenas uma linha de configuração:
root:seu-email@gmail.com:smtp.gmail.com:465
Enviando e-mail do terminal (via BASH) através da conta do Gmail
Vamos criar e editar o arquivo que conterá a mensagem a ser enviada. No meu caso, o arquivo se chama email.txt:
# vi email.txt
Insira o destinatário, o assunto e por fim a mensagem, por exemplo:
To: email-destino@dominio.com
Subject: Testando meu sSMTP
Agora podemos escrever a mensagem a ser enviada.
Este e-mail é teste! Ignore!
Agora salve o arquivo com o comando :wq! e vamos enviar o e-mail com o comando abaixo:
# ssmtp email-destino@dominio.com -auseu-email@gmail -apsua-senha < email.txt
A linha acima executa o sSMTP com os parâmetros:
- email-destino – substitua pelo e-mail do destinatário;
- -auseue-mail – substitua pelo seu e-mail do Gmail, porém não esqueça de colocar a opção -au antes;
- -apsua-senha – substitua pela sua senha do Gmail, porém sem esquecer de colocar -ap antes;
- < emai.txt – encaminha o conteúdo do arquivo email.txt, ou seja, sua mensagem para o programa sSMTP. Observação: Pule uma linha entre o assunto (subject) e a mensagem.
Pronto! Agora já é possível enviar e-mail através da sua conta do Gmail via terminal no Linux Ubuntu Jaunty.
Onde utilizar?
São várias as utilizações de um serviço de e-mail via terminal, mas o principal, sem dúvida alguma, é em scripts de monitoramento, seja ele para avisar que um disco está chegando ao limite, ou que existe um consumo excessivo de processamento, ou ainda, como utilizei no post sobre RAID, avisar caso ocorra algum problema nos discos do servidor de arquivos.
Fontes e Referências
- Ssmtp.conf(5): ssmtp config file;
- sSMTP: A simple alternative to Sendmail;
- SSMTP and SMTP without encryption;
- [Dicas-L] Mutt com imap e ssmtp;
- Sending Email From Your System with sSMTP.
77 comentários
Enviar um comentárioPergunata
?
Comentário
Parabéns
Espetacular
apenas desta forma funciona tambem
funciona tb
Usei a porta 587
Parabéns pela explicação
parabéns [wal]