Configure um sistema de alertas que vai enviar e-mails automáticos sob quaisquer condições: Alerta de login, monitor de temperatura, etc!
| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. Mais detalhes clicando aqui.
LEIA ANTES DE TUDO:
Se você pretende utilizar este tutorial pra enviar muitos e-mails de automação de processos, não o faça!
Fui banido de uma conta do Google por enviar 3 emails diários de servidores meus pra 1 e-mail destinatário tambem meu, porque isso infringe as políticas do Google… E de vários outros, como o gmx.com e etc.
Portanto cuidado, o ban ocorre e você nem ficará sabendo do motivo! NUNCA use seu e-mail pessoal, crie uma conta totalmente nova pra fazer esse tipo de configuração.
Recado dado, vamos ao post!
1. Introdução
Um sistema automático de alerta de e-mails não é algo tão usual para os usuários domésticos. É mais comum ser instalado e configurado num Servidor Linux que precisa ser monitorado com maior cuidado.
De fato algumas utilidades poderiam ser:
- Alerta quando o computador é compartilhado e ele está sendo usado por outra pessoa naquele momento
- Monitorar o tempo de uso do computador.
- Monitorar a saúde do computador.
Não vou entrar em detalhes dos scripts que podem ser usados e aplicados, o objetivo hoje é configurar um sistema funciona de e-mails!
1.1 Modus Operandi
Criar um emissor de e-mails não é uma tarefa simples, requer criar uma configuração SSL, com um domínio, abrir portas no seu Modem…… enfim, não funciona bem na prática e sua empresa de telefonia/internet vai bloquear seu IP para disparo de e-mails!
Para resolver isso usaremos a forma mais simples: Um cliente de e-mails.
Semelhante ao que você faz com o GMail Web, Thunderbird, Evolution, você fará login na conta dentro desse cliente e usar ele para enviar um e-mail. Por sua vez esse e-mail costuma ser legítimo e não cai nas caixas de Spam..
No caso, usaremos o cliente de e-mails “mutt” via terminal, fazer login num serviço de e-mails por ele. E aí, usar um comando para disparar e-mails pelo Mutt de forma automática. Na verdade o Mutt é uma ponte, quem de fato fará o disparo da mensagem é uma conta do GMail que estará sendo gerenciada pelo Mutt.
Por que GMail?
É flexível o suficiente pra funcionar com o objetivo citado, simples de configurar e gratuito.
Se quiser tentar com Outlook ou outro provedor de e-mails fique por sua conta e risco!
O tutorial abaixo foi testado somente com configurações do GMail.
2. Materiais
Você vai precisar de:
- Um computador com Linux
Tudo será Shell script, portanto não temos uma preferência por distros. - Uma conta do GMail.
Você pode usar sua conta pessoal, mas atento, precisaremos da Autenticação em Dois Fatores habilitada.
Se não desejar habilitar em sua conta pessoal, crie um novo e-mail somente para este propósito do tutorial! - Instalar o pacote Mutt
Ele é o cliente de e-mails via terminal que se conectará ao GMail. - Um celular
Você vai precisar, se já não tiver o feito, ativar a autenticação de 2 Fatores pra acessar a conta.
Assim os alertas não cairão no Spam do destinatário, seja lá quem for!
Com tudo reunido, vamos ás configurações!
3. Configurando
Primeiro, instale o MUTT no sistema.
Para instalá-lo em Debian/Ubuntu/LinuxMint use:
$ sudo apt install mutt
Para instalá-lo no Fedora/CentOS/RedHatEL:
$ sudo yum install mutt
O MUTT requer configurações adicionais mas serão realizados depois.
Crie uma conta no GMail ou tenha o seu Login em mãos!
- Entre na sua conta.
- No painel de navegação, selecione na lateral esquerda a aba Segurança.
- Vá até a sessão “Iniciar Sessão do Google” rolando a tela.
- Selecione Validação em dois passos (ou Verificação de duas etapas).
- Siga as instruções na tela.
Com a “validação em dois passos ativa”, você pode voltar ao menu segurança e, na sessão “Iniciar Sessão do Google” observe que o menu ficou um pouco diferente:
Clique agora no menu “Senhas do App”. Vamos gerar uma senha especial para aplicativos!
Em “selecionar app”, escolha a opção “e-mail” e em “selecionar dispositivo” vá na última opção “Outro (nome personalizado)”.
Eu chamei o meu de “Servidor Linux”, você pode usar o nome que quiser.
Clique em GERAR. O Google vai te dar um código único, anote-o!
Ele é uma senha alternativa para login na conta sob o qual o Mutt fará o login para disparar e-mails.
3.1 MUTT
Voltando ao MUTT, vamos terminar de configurá-lo.
Primeiro faça este comando para criar as pastas e arquivos necessários:
$ mkdir -p ~/.mutt/cache/headers && mkdir ~/.mutt/cache/bodies && touch ~/.mutt/certificates && touch ~/.mutt/muttrc
Agora, edite o arquivo ~/.mutt/muttrc com seu editor de textos favorito, pode ser o Pluma, Gedit, NANO, VI, VIM, etc.
O arquivo está vazio. Você vai inserir este código dentro dele:
# O código começa aqui!
set from = ‘seu-email@gmail.com’
set realname = ‘Ryz3n‘
set imap_user = ‘seu-email@gmail.com’
set imap_pass = ‘CÓDIGO‘
set smtp_url = ‘smtps://seu-email@smtp.gmail.com:465‘
set smtp_pass = ‘CÓDIGO‘
set folder = ‘imaps://imap.gmail.com/’
set spoolfile = ‘+INBOX’
set postponed = ‘+[Gmail]/Drafts’
#set record = ‘+[Gmail]/Sent Mail’
set trash = ‘+[Gmail]/Trash’
# O código termina aqui!
Atento e trocando o que está em negrito acima!
- Ryz3n: Nome do computador para ser identificado como remetente. Eu usei o meu de exemplo.
- CÓDIGO: O código único gerado pelo Google na etapa “Senhas do App”
- seu-email: troque conforme o e-mail criado ou o e-mail que você vai utilizar!
- #: Remova este # se você deseja que uma cópia do e-mail fique no seu-email@gmail.com
Do jeito que está, somente o destinatário terá uma cópia do e-mail. Além disso por padrão o MUTT deixa uma cópia do e-mail no arquivo “sent” em /home/usuário/. - A porta 465 funcionou pra mim, se houver algum erro ou a configuração do seu GMail estiver diferente, troque a porta aqui.
Salve e feche.
Se fez tudo corretamente, já está funcional!
4. Testando
Para enviar um e-mail de testes, no terminal a sintaxe do comando é:
$ echo “Corpo do Texto do E-mail” | mutt -s “Cabeçalho da Mensagem” destinatário@e-mail.com
O Destinatário pode ser qualquer outro serviço de e-mail, será sua conta do GMail enviando um e-mail para este destinatário.
Não vou me aprofundar em código shell, mas de forma simples você pode criar um script shell que insira uma informação no e-mail. Por exemplo, crie um script em um arquivo de texto chamado email.sh (aplique permissão de execução):
#!/bin/bash
var1=”Hello World!
”
var2=$(uname -a)
echo “$var1 $var2” | mutt -s “Cabeçalho da Mensagem” destinatário@e-mail.com
# Fim do Código
OBS: Sim, o var1 tem uma quebra de linha e a aspas dupla vai para a linha de baixo, assim você cria um “Enter” no corpo do texto e ele ficará com um espaço como resultado! Quanto mais “quebras de linha” der dentro das aspas, mais elas serão replicadas no e-mail depois.
Qualquer comando inserido dentro de $( ) vai ser executado antes de ser transformado na variável var2.
Esse comando pode ser trocar por:
- df -Th
Exibe o consumo dos armazenamentos em HDDs ou SSDs. - sensors
Se você tem o pacote lm-sensors instalado, ele exibirá um resumo das temperaturas. - uptime
Você saberá a quanto tempo esse computador está ligado. - w
O comando “w” exibe os usuários logados naquele momento. - last
Já o comando “last” exibe a lista dos últimos logins bem sucedidos ao computador. - free -h
Exibe a quantidade de memória RAM naquele momento. - Entre outros…
Execute esse script no terminal como:
$ ./email.sh
Esse código vai criar um e-mail cujo corpo da mensagem começa com um “Hello World!” e depois vai trazer uma longa linha de código gerada pelo comando “uname -a” que resume informações do sistema operacional. O resultado no Thunderbird:
5. Automatizando
Para automatizar esse script email.sh, você pode usar o Cron.
Já fizemos uma publicação aqui no site mostrando como configurar o Cron para rodar tarefas automáticas!
Se quiser que o script execute 1x, apenas durante o login, use o seguinte:
Edite o arquivo ~/.bashrc e no final dele adicione numa nova linha:
/caminho/completo/até/email.sh
Isso fará o código ser executado sempre que você fizer login, ou seja, esse usuário logado agora!
Se deseja que todos no sistema sejam afetados, incluindo o root, edite o arquivo /etc/bash.bashrc como Root e adicione a mesma linha ao final. Agora todos os usuários registrados farão o sistema enviar um e-mail sempre que fizerem login.
Lembrando que você pode esconder o arquivo email.sh com um . no começo: .email.sh
O caminho também muda: /caminho/completo/até/.email.sh
Assim ele não ficará visível nas pastas dos usuários a menos que o usuário exiba os arquivos ocultos!
5. Conclusão
É relativamente simples enviar um e-mail pelo terminal quando se associa diversas ferramentas como o GMail + Mutt + Cron.
Você automatiza um processo relativamente complexo de gerar relatórios do sistema e permite um melhor gerenciamento dos eventos do sistema, sejam quaisquer que você programar dentro desse código!
O limite é seu conhecimento em shell script, mas o que vale aqui, vale pra basicamente qualquer sistema Linux, com interface ou não, Raspberry Pi, etc.
#UrbanCompassPony
Arte de chamada: Penso
Autodidata, me aprofundei em sistemas operacionais baseados em UNIX®, principalmente Linux. Também procuro trazer assuntos correlacionados direta ou indiretamente, como automação, robótica e embarcados.
Muito útil, obrigado!