Em algum momento você pode precisar fazer envios de e-mails a partir do seu servidor, para notificar algum acontecimento, um backup finalizado com falha ou sucesso, por exemplo.
Uma configuração simples que vai ajudar na hora de enviar essa notificação, vamos tomar como exemplo, a utilização do GMail como servidor SMTP.
Em ambiente utilizando Debian e variantes, instale os seguintes serviços:
sudo apt update
sudo apt install msmtp msmtp-mta mailutils -y
Utilize o editor de sua preferência, nano, vi ou aquele que te deixar mais confortável para execução.
No seu diretório home crie o arquivo:
nano ~/.msmtprc ou vi ~/.msmtprc
Insira as informações conforme descrito nesses passos
# Configuração global
defaults
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile ~/.msmtp.log
# Conta do Gmail (Exemplo)
account gmail
host smtp.gmail.com port 587
from seu_email@gmail.com
user seu_email@gmail.com
password sua_senha_de_app
# Definir a conta padrão
account default : gmail
Salve o arquivo
Por questões de segurança, o msmtp exige que apenas o seu usuário consiga ler o arquivo de configuração (já que ele contém a sua senha em texto puro):
chmod 600 ~/.msmtprc
Agora é só enviar o seu primeiro email de teste para validar se está tudo certo
echo “Este é um e-mail de teste usando mailutils + msmtp” | mail -s “Teste de Envio” destino@email.com (lembre se de alterar para o e-mail do destinatário)
Podemos utilizar o mailx para enviar emails com arquivos anexados.
echo “Segue arquivo em anexo” | mail -s “Relatório” -A /caminho/do/relatorio.pdf destino@email.com (lembre se de alterar para o e-mail do destinatário)
## Uma observação, se você estiver copiando este conteúdo e colando na direto na linha de comando, fique atento com as ” aspas “, pois na internet elas se torna, citações e o shell não sabe interpretar, ao copiar e colar, onde encontrar as ” aspas ” troque para as aspas digitadas pelo seu teclado ##
Se algum erro for apresentado na tela, consulte o arquivo:
cat ~/.msmtp.log
Podemos ainda automatizar esse envio utilizando o agendador de tarefas crontab
* * * * * comando_a_executar
│ │ │ │ │
│ │ │ │ └──────── Dia da semana (0 – 6) (Domingo = 0 ou 7)
│ │ │ └───────── Mês (1 – 12)
│ │ └────────── Dia do mês (1 – 31)
│ └─────────── Hora (0 – 23)
└──────────── Minuto (0 – 59)
crontab -e
# Enviar todos os dias às 09h da manhã a disponibilidade de espaço em disco
0 9 * * * df -h | mail -s “Status Diário de Disco – Servidor Web” admin@empresa.com
# Roda o script relatorio.sh e envia as métricas todo dia 1o às 02h da manhã
0 2 1 * * /home/usuario/scripts/relatorio.sh | mail -s “Métricas de Acesso” analitico@empresa.com