Linux: Mandar e-mail via linha de comando
Todo mundo fica dizendo que e-mail é coisa do passado e que o futuro mesmo é utilizar as redes sociais e a Web 2.0 (lol) para se comunicar. Mas a verdade é que o e-mail é ainda muito útil e acredito que vai demorar bastante tempo para que isso mude. No pior dos casos, e-mail ainda continua sendo uma boa forma de registro e notificação.
E no caso da notificação, enviar e-mail via linha de comando do Linux é bastante útil. Terminou uma tarefa no crontab? Envia um e-mail com o resultado. Caiu um servidor? Envia um e-mail para alguém notificando. Ou então querer apenas testar um servidor de e-mail local? É só usar a imaginação.
Como todos sabemos, o Linux conta com o recurso de shell, que por sua vez permite criar poderosos programas que são chamados de shell-scripts. Vejamos aqui esta pequena dica de como enviar e-mail via linha de comando.
O comando mail será usado aqui primeiramente. Ele está contido no pacote mailx, geralmente em todas as distribuições (Debian por exemplo, é o bsd-mailx, Red Hat/Fedora seria apenas mailx). Além disso, é necessário um servidor de e-mail local, o que é comum em todas as distribuições Linux por aí.
Mandando um e-mail manualmente, via linha de comando:
mail -s "Assunto Teste" seuemail@dominio.com.br
O parâmetro -s especifica o assunto da mensagem. Coloque entre aspas como no exemplo para que ele reconheça todo o assunto com espaços. O último argumento é o endereço para quem se vai enviar a mensagem.
Quando você der ENTER, não vai aparecer nada e nem vai voltar pro prompt. Digite então toda a sua mensagem e quando terminar, aperte CTRL+D. Vai aparecer um “Cc:“, que significa que se você quiser enviar cópia para alguém, basta colocar agora. Aperte ENTER e vói-lá! A mensagem foi para o destinatário (bem, pelo menos era pra ir!).
Agora vamos utilizar um modo mais rápido e não-interativo de se mandar o mesmo e-mail:
echo "Isto é um e-mail de teste" | mail -s "Assunto Teste 2" seuemail@dominio.com.br
Agora ao invés de você ter que digitar, ele já joga a mensagem “Isto é um e-mail de teste” no corpo e manda o e-mail. Isso serve para você acoplar justamente em um shell-script sem ter que precisar que alguém digite alguma coisa na hora.
Mas o echo ainda é limitado para mensagens grandes, então vamos ler de um arquivo:
mail -s "Assunto Teste 3" seuemail@dominio.com.br < /var/log/syslog
Ele usou um redirecionador para que o conteúdo do arquivo /var/log/syslog se tornasse o corpo da mensagem. Mais uma vez, você pode usar um shell-script para gerar o arquivo com o conteúdo que você quiser e depois mandar por e-mail.
Há outros parâmetros no comando mail também. Exemplo:
echo 'Maravilha!' | mail -s "Assunto Teste 4" seuemail@dominio.com.br \
-c outroemail@dominio.com.br,maisum@dominio.com.br \
-b espiaodobatima@dominio.com.br
Neste caso, mandei um e-mail para seuemail@dominio.com.br, com cópia para outroemail@dominio.com.br e maisum@dominio.com.br (vários e-mails separados por vírgula) e uma cópia oculta para espiaodobatima@dominio.com.br.
O comando mail faz parte do sistema padrão de e-mails locais que é utilizado há vários anos pelos sistemas Unix em geral. Por isso, o campo From, ou seja, o Remetente da mensagem vai ser o usuário que está executando o comando, mais o nome completo da máquina. Exemplo, se eu sou o usuário eitch, na máquina batima.dominio.com.br, quer dizer que o Remetente será: eitch@batima.dominio.com.br.
Mas como nem tudo são flores, na hora de mandar arquivos anexos junto a mensagem, o comando mail não suporta essa funcionalidade. Neste caso, quando é preciso, geralmente o pessoal utiliza o cliente de e-mail de linha de comando mutt. O comando é bem parecido:
echo "Assunto Anexo" | mutt -s "Assunto Teste 5" -a arquivo.zip seuemail@dominio.com.br
O parâmetro -a é quem cuida dos anexos. No caso de enviar vários anexos, é necessário também que o -a fique antes do destinatário, seguido por “–”, assim:
echo "Assunto Anexo" | mutt -s "Assunto Teste 6" \
-a /home/eitch/imagem.jpg /var/log/syslog /home/eitch/arquivo.zip -- hugo.cisneiros@gmail.com
0 comentários:
Postar um comentário