quinta-feira, 10 de setembro de 2015

Enviando e-mail por linha de comando, em linux, usando ssmtp e mutt

    A algum tempo atrás eu estava trabalhando em uma pequena empresa de internet a rádio e um dos problemas que logo identifiquei foi que o programa que eles usavam para controle de usuários fazia backup somente localmente no servidor. Algo muito perigoso já que se o HD do servidor tivesse algum problema todos esses dados seriam perdidos.


    Me propus então a minimizar este problema usando uma maneira simples. Enviando estes arquivos para um endereço de e-mail da empresa. A solução então foi dada utilizando dois programas de linha de comando. Vou, então, falar um pouco de cada um e mostras as configurações feitas.

Ssmtp

    Para fazer a instalação do programa é simples. Abaixo está como é feite em distribuições derivadas do Debian. Abra o terminal, caso você esteja usando alguma distribuição com interface gráfica.

~$ sudo su
# apt-get update
# apt-get install ssmtp

     Agora que o programa está instalado devemos fazer sua configuração para podermos enviar e-mail. O arquivo de configuração está na pasta /etc/smtp/ssmtp.conf. Primeiro entre na pasta onde está o arquivo e faça um backup deste.

# cd /etc/ssmtp
/etc/ssmtp# cp ssmtp.conf ssmtp.conf.bak

Para editar o conteúdo do arquivo vou usar o nano, qualquer outro editor de texto pode ser utilizado.

/etc/ssmtp# nano ssmtp.conf

A configuração é bem simples, primeiro apague todo o conteúdo do arquivo e insira as seguintes linhas.

# Conta de e-mail utilizada para os envios
root=nome_de_usuario@hotmail.com

# Servidor de e-mail da sua conta seguido da porta
mailhub=smtp.live.com:587

# Domínio que será exibido
rewriteDomain=live.com

#
hostname=localhost

# Ativa protocolo de segurança para envio dos e-mails 
UseTLS=yes
UseSTARTTLS=yes

# Nome de usuário
AuthUser=nome_de_usuario@hotmail.com

# Senha do e-mail
AuthPass=senha_do_email

    Assim que terminar de digitar os dados é só salvar e fechar o arquivo. Existem duas formas de enviar um e-mail usando o ssmtp, o primeiro é pelo modo iterativo o segundo é através de um arquivo contendo os dados a serem enviados.

    No terminal digite ssmtp, agora que já está configurado não precisa ser como usuário root, e forneça como parâmetros -v (para mostrar mais detalhes durante a execução do comando ssmtp) e o endereço para o qual se quer mandar um e-mail e pressione enter.


    A tela então vai ficar assim pedido para ser inserido os dados para envio da mensagem.

 Os dados a serem digitados são o endereço para o qual se quer enviar a mensagem (o mesmo especificado na tela acima), o título da mensagem e a mensagem em si.


O comando To: é usado para especificar o e-mail de destino, Subject: como descrito é o título da mensagem e logo em seguida a mensagem a ser enviada. Para que continue com o envio é preciso pressionar Shift+d no teclado gerando assim uma saída parecida com a da imagem abaixo.





















    Assim se envia um e-mail no modo interativo.

    A segunda maneira de enviar é colocando os dados em um arquivo e passando este arquivo para o ssmtp na hora de enviar o e-mail.

    Edite um arquivo, no seu editor de texto favorito e coloque as seguintes informações seguindo o exemplo acima:

To: ninguem@gmail.com
Subject: titulo da mensagem
agora sim a mensagem a ser enviada.

    Salve o arquivo com o nome de e-mail.txt e então execute o comando a seguir

~$ ssmtp -v ninguem@gmail.com < e-mail.txt

    O resultado deste comando é o mesmo do explicado anteriormente no modo interativo.


Mutt

    Este é um cliente de e-mail que funciona também em linha de comandos. Configurando sua conta é possível ler seus e-mails por ele. Mas a intenção aqui é configuram o mutt para enviar e-mails utilizando o ssmtp, e com isso podendo anexar arquivos nas mensagens.

    A instalação também é simples bastando executar os seguintes comandos no shell como usuário root:

# apt-get install mutt

    Pronto! Programa instalado vamos as configurações.

    Bem, aqui é simples, como a única funcionalidade que queremos utilizar é usá-lo para enviar um e-mail com anexo temos que configuram somente o modo de envio, apenas uma linha.

    Primeiro, com seu editor de texto favorito, crie o arquivo “.muttrc” na raiz da pasta do seu usuário e coloque a seguinte linha

set sendmail=”/usr/sbin/ssmtp”

    Caso não tenha configurado usuário e senha no arquivo de configuração do ssmtp, na etapa anterior, você pode fazê-lo aqui colocando a seguinte linha no lugar da citada acima

set sendmail=”/usr/sbin/ssmtp -aunome_de_usuario@hotmail.com -apsenha_do_email”

    Pronto! Agora é só salvar o arquivo “.muttrc” e testar se está tudo funcionando corretamente com o seguinte comando a seguir no terminal.

~$ mutt -s “título da mensagem” ninguem@gmail.com -a arquivo_a_enviar < /dev/null

    No comando acima -s é usado para especificar o título da mensagem, vem em seguida o e-mail de destino. A opção -a é usado para anexar um arquivo, para cara arquivo a ser anexado um -a é usado.
    Para enviar automaticamente o e-mail, sem entrar no modo interativo, coloca-se < /dev/null no final do comando.

~$  echo “mensagem” | mutt -s “título da mensagem” ninguem@gmail.com -a arquivo_a_enviar < /dev/null 

    No comando acima a única modificação é o acréscimo do comando echo “mensagem” que é usado para adicionar uma mensagem ao corpo do e-mail.


    Para este tutorial é isso. Espero que gostem e qualquer dúvida ou sugestão é só deixar nos comentários.



Referencias 

https://manuallinux.wordpress.com/2010/10/06/email-com-ssmtp/
https://wiki.archlinux.org/index.php/SSMTP
http://www.marquesfab.com.br/2009/08/backup-incremental-com-o-mutt-ssmtp.html
http://prestrelocristiano.blogspot.com.br/2012/05/enviando-email-com-anexo-via.html

Nenhum comentário:

Postar um comentário