Enviando e-mail na linha de comando do Linux pelo GMail.

Muitas vezes é interessante enviar um e-mail através no BASH no Linux, seja para enviar relatórios ou avisos para o administrador. Entretanto, instalar um servidor SMTP completo apenas para essa função não é o ideal. Por que não utilizar um serviço confiável já existente? Vamos a seguir explicar como utilizar o GMail para envio de mensagens no BASH. Sem muito esforço, é possível adaptar essa solução para outros serviços de e-mail. Essa solução foi testada no Ubuntu 12.04 LTS.

O aplicativo que vamos utilizar é o MSMTP. A instalação dos pacotes necessários pode ser feita com o comando abaixo:

:~$ sudo apt-get install msmtp openssl ca-certificates

Com os pacotes instalados, devemos criar um arquivo de configuração para o MSMTP. Coloque o conteúdo abaixo no arquivo ~/.msmtprc:

account default
host smtp.gmail.com
port 587
from SEUUSUARIO@gmail.com
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
auth on
user SEUUSUARIO@gmail.com
password SUASENHA
logfile ~/.msmtp

Como esse arquivo contém sua senha, o ideal é impedir que os outros usuários possam lê-lo. Execute o comando abaixo para restringir as permissões:

:~$ chmod u+rw,g-rw,o-r ~/.msmtprc

Agora vamos criar um arquivo de e-mail. O arquivo deve possuir os campos From:, To: e Subject: (remetente, destinatário e assunto). Lembre de casar as informações do e-mail com o que você colocou no arquivo ~/.msmtprc. Veja um exemplo, salvo no arquivo email.txt:

To: larrypage@gmail.com
From: SEUUSUARIO@gmail.com
Subject: Teste de envio de e-mail pelo BASH.

Olá Larry,

Isto é um teste.

[]'s

Agora basta executar o comando abaixo e pronto, um e-mail será enviado:

:~$ msmtp -t < email.txt
Anúncios
Etiquetado , ,

4 pensamentos sobre “Enviando e-mail na linha de comando do Linux pelo GMail.

  1. root@epvhost:/# msmtp -t < email.txt
    msmtp: authentication failed (method PLAIN)
    msmtp: server message: 534-5.7.14 Please log in via your web browser and then try again.
    msmtp: server message: 534-5.7.14 Learn more at https://support.google.com/mail/bin/answer.py?answer=787
    msmtp: server message: 534 5.7.14 54 xi5sm19411367vdc.11 – gsmtp
    msmtp: could not send mail (account default from /root/.msmtprc)
    root@epvhost:/#

    • jmhal disse:

      Olá Nelson,

      Você ativou as opções de TLS no seu arquivo .msmtprc? Por alguma razão, está tentando a autenticação sem TLS (method PLAIN). De fato, o GMAIL não aceita isso.

  2. Antonio Jose disse:

    Funcionou 100%! seria possível alguma dica com threads?

    • jmhal disse:

      Bem, threads em si não são o forte de bash. Mas você poderia colocar o comando do msmtp em um laço e executá-lo a cada iteração com o & no final. Mas acho que nesse caso, o que limita a execução do script não é o código em si, mas a rede.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: