Enviando e-mails pelo terminal
Automatizar tarefas em servidores faz parte do cotidiano de qualquer administrador de redes. Neste artigo descrevo como enviar e-mails pelo terminal utilizando o sendEmail. Mostro também vários exemplos práticos da ferramenta e uma implementação com o cron. Espero que gostem!
Parte 3: Usando o sendEmail e alguns exemplos
Usando o sendEmail
Abra o terminal e digite:sendEmail
Teremos a man page explicando todas as opções. Mas nada como alguns exemplos para você pegar o jeito, certo?! (-:
Vamos enviar agora um e-mail simples, com subject e um texto normal.
sendEmail -f meuemail@yahoo.com.br -t destinatario@gmail.com -u "Subject" -m "Mensagem aqui\!" -s smtp.mail.yahoo.com.br:25 -xu meuemail -xp 12345678
Explicando:
- -f → e-mail do remetente, ou seja, nosso e-mail que configuramos.
- -t → e-mail do destinatário, ou seja, o e-mail da pessoa que você irá enviar.
- -u → título do e-mail / subject.
- -m → mensagem em si.
- -s → endereço do servidor SMTP.
- -xu → nome de usuário
- -xp → senha do e-mail
Estes campos são obrigatórios para se enviar um e-mail pelo sendEmail.
Caso você tenha feito tudo certo, aparecerá uma mensagem mais ou menos igual a essa:
Aug 26 08:23:50 meunote sendEmail[6142]: Email was sent successfully!
Se apareceu, parabéns, você está no caminho! Se apareceu outra mensagem e não enviou, dê uma olhada nos passos anteriores e confira se escreveu tudo certo.
Alguns exemplos
Mandando mensagem com anexo:sendEmail -f meuemail@yahoo.com.br -t destinatario@gmail.com -u "Anexo" -m "Segue em anexo o arquivo resolv.conf" -a /etc/resolv.conf -s smtp.mail.yahoo.com.br:25 -xu meuemail -xp 12345678
Mensagem com conteúdo do arquivo como corpo da mensagem:
sendEmail -f meuemail@yahoo.com.br -t destinatario@gmail.com -u "Conteúdo passwd" -o message-file=/etc/passwd -s smtp.mail.yahoo.com.br:25 -xu meuemail -xp 12345678
Usando comandos do shell para personalizar o envio:
sendEmail -f meuemail@yahoo.com.br -t destinatario@gmail.com -u "`date`" -o message-file=<(ifconfig eth0) -s smtp.mail.yahoo.com.br:25 -xu meuemail -xp 12345678
Criando log do sendEmail com o conteúdo de todas as mensagens enviadas:
sendEmail -f meuemail@yahoo.com.br -t destinatario@gmail.com -u "`date`" -o message-file=<(ifconfig eth0) -a /etc/apt/sources.list -l /tmp/logsendemail -s smtp.mail.yahoo.com.br:25 -xu meuemail -xp 12345678
Define o timeout máximo, caso o seu SMTP não responda dentro deste tempo especificado o script é automaticamente encerrado:
sendEmail -f meuemail@yahoo.com.br -t destinatario@gmail.com -u "`date`" -o message-file=<(ifconfig eth0) -o timeout=1 -a /etc/apt/sources.list -l /tmp/logsendemail -s smtp.mail.yahoo.com.br:25 -xu meuemail -xp 12345678
Caso não consiga enviar no tempo de timeout aparecerá uma mensagem mais ou menos assim:
Aug 26 08:53:26 meunote sendEmail[7050]: ERROR => Timeout while connecting to smtp.mail.yahoo.com.br:25 There was no response after 1 seconds.
Lembre-se que o timeout é definido em segundos ok?!
Com isso é só usar a imaginação e acoplar o sendEmail em seus scripts. (-:
Agendando envio de e-mails
Para agendar o envio de e-mails é preciso usar o cron. Para isso entre no terminal e digite:crontab -e Ele pedirá para escolher qual editor de texto você quer utilizar. No meu caso escolhi o nano, digitando a opção 3.
Aparecerá o arquivo de agendamento. Basta adicionar o agendamento do jeito que melhor atender suas necessidades.
No meu caso utilizei esse jeito:
30 20 * * * sendEmail -f meuemail@yahoo.com.br -t destinatario@gmail.com -u "Anexo" -m "Segue em anexo o arquivo resolv.conf" -a /etc/resolv.conf -s smtp.mail.yahoo.com.br:25 -xu meuemail -xp 12345678
Ou seja, todos os dias do mês às 20:30h será enviado um e-mail para mim com as configurações que escolhi. Detalhes de como usar o cron não serão relatados neste artigo, pois não é o objetivo do mesmo.
Viva o Linux! (-:
Abraços a todos!