Google+ (Google Plus)

Ajude a divulgar o MyTraceLog clicando no botão +1.

1 de novembro de 2011

Enviando email pelo terminal com sendEmail no CentOS 5.6

O artigo a seguir apresenta como enviar email pelo terminal utilizando o sendEmail 1.56 no CentOS 5.6 x86_64. Será demostrado como fazer o download e instalação, em seguida são apresentados exemplos práticos com o SMTP do gmail.com.

O sendEmail é um cliente SMTP de linha de comando escrito em Perl pelo Brandon Zehn. Com ele é possível automatizar envio de email, integrando o sendEmail em um bash script, perl script e arquivo batch. Suporta as seguintes plataformas: BSD, Linux, OS X, Windows 98, Windows NT, Windows 2000 e Windows XP. Essas informações foram retidas do site oficial, o último release foi lançado em setembro de 2009, provavelmente tem suporte ao Windows 7 e outras versões superiores.

Tarefas rotineiras de Administrador de Banco de Dados (DBA) e Administrador de Redes que exigem apenas leitura podem ser automatizadas utilizando bash script + sendEmail + crontab. Por exemplo, se todos os dias você verifica o log do backup e você tem 10 backups para verificar, basta centralizar todos os logs no seu email, agende o bash script no crontab e quando chegar pela manhã os logs já estarão disponíveis. Se o bash script for um pouco inteligente é possível que o email seja disparado apenas quando houver erro.

Creio que vale a pena começar a analisar quais tarefas podem ser automatizadas, desta forma você terá mais tempo para as tarefas que realmente exigem mais atenção.

Download

O download pode ser encontrado no site do Brandon Zehn:
Para fazer o download com o wget:
[root@mytracelog ~]# wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz

Instalação

O processo de instalação é muito simples:
  1. Extraia o pacote:
  2. [root@mytracelog ~]# tar -zxvf sendEmail-v1.56.tar.gz
    
  3. Copie o script sendEmail para /usr/local/bin:
  4. [root@mytracelog ~]# cp -a sendEmail-v1.56/sendEmail /usr/local/bin
    
  5. Garanta que o script possui permissão de execução:
  6. [root@mytracelog ~]# chmod +x /usr/local/bin/sendEmail
    
  7. Instale os pacotes perl.x86_64, perl-Net-SSLeay e perl-IO-Socket-SSL:
  8. [root@mytracelog ~]# yum install perl.x86_64 perl-Net-SSLeay perl-IO-Socket-SSL
    
O pacote perl.x86_64 é importante por que se trata do interpretador Perl, já os pacotes perl-Net-SSLeay e perl-IO-Socket-SSL dão suporte a TLS (Transport Layer Security).

Sintaxe do sendEmail 1.56

Após instalação qualquer usuário terá acesso ao sendEmail.
[mytracelog@mytracelog ~]$ sendEmail 

sendEmail-1.56 by Brandon Zehm <caspian@dotconf.net>

Synopsis:  sendEmail -f ADDRESS [options]

  Required:
    -f ADDRESS                from (sender) email address
    * At least one recipient required via -t, -cc, or -bcc
    * Message body required via -m, STDIN, or -o message-file=FILE

  Common:
    -t ADDRESS [ADDR ...]     to email address(es)
    -u SUBJECT                message subject
    -m MESSAGE                message body
    -s SERVER[:PORT]          smtp mail relay, default is localhost:25

  Optional:
    -a   FILE [FILE ...]      file attachment(s)
    -cc  ADDRESS [ADDR ...]   cc  email address(es)
    -bcc ADDRESS [ADDR ...]   bcc email address(es)
    -xu  USERNAME             username for SMTP authentication
    -xp  PASSWORD             password for SMTP authentication

  Paranormal:
    -b BINDADDR[:PORT]        local host bind address
    -l LOGFILE                log to the specified file
    -v                        verbosity, use multiple times for greater effect
    -q                        be quiet (i.e. no STDOUT output)
    -o NAME=VALUE             advanced options, for details try: --help misc
        -o message-content-type=<auto|text|html>
        -o message-file=FILE         -o message-format=raw
        -o message-header=HEADER     -o message-charset=CHARSET
        -o reply-to=ADDRESS          -o timeout=SECONDS
        -o username=USERNAME         -o password=PASSWORD
        -o tls=<auto|yes|no>         -o fqdn=FQDN


  Help:
    --help                    the helpful overview you're reading now
    --help addressing         explain addressing and related options
    --help message            explain message body input and related options
    --help networking         explain -s, -b, etc
    --help output             explain logging and other output options
    --help misc               explain -o options, TLS, SMTP auth, and more

Enviando email pelo terminal com o SMTP do gmail.com

Para o envio de email com o sendEmail é necessário de um SMTP, utilizaremos o SMTP do gmail.com. A tabela abaixo apresenta o cenário utilizado nos exemplos.

ChaveValor
SMTP do gmail.comsmtp.gmail.com
Porta do SMTP25
587
SMTP utiliza TLSSim
Email do remetenteremetente@gmail.com
Usuário do remetenteremetente
Senha do remetentesenha
Email dos destinatáriosdestinatario1@gmail.com
destinatario2@gmail.com
destinatario3@gmail.com

Seguindo a sintaxe segue alguns exemplos de uso:
  • Enviando email:
  • [mytracelog@mytracelog ~]$ sendEmail \
    > -xu remetente \
    > -xp senha \
    > -s smtp.gmail.com:25 \
    > -o tls=yes \
    > -l /tmp/sendEmail.log \
    > -f "remetente@gmail.com" \
    > -t "destinatario1@gmail.com" \
    > -u "Assunto do Email" \
    > -m "Mensagem do Email"
    
  • Enviando email com quebra de linha na mensagem:
  • [mytracelog@mytracelog ~]$ sendEmail \
    > -xu remetente \
    > -xp senha \
    > -s smtp.gmail.com:25 \
    > -o tls=yes \
    > -l /tmp/sendEmail.log \
    > -f "remetente@gmail.com" \
    > -t "destinatario1@gmail.com" \
    > -u "Assunto do Email" \
    > -m "Primeira linha\nSegunda Linha\nTerceira linha\n"
    
  • Enviando email para multiplos destinatários:
  • [mytracelog@mytracelog ~]$ sendEmail \
    > -xu remetente \
    > -xp senha \
    > -s smtp.gmail.com:25 \
    > -o tls=yes \
    > -l /tmp/sendEmail.log \
    > -f "remetente@gmail.com" \
    > -t "destinatario1@gmail.com; destinatario2@gmail.com; destinatario3@gmail.com" \
    > -u "Assunto do Email" \
    > -m "Mensagem do Email"
    
  • Enviando email com cópia (CC):
  • [mytracelog@mytracelog ~]$ sendEmail \
    > -xu remetente \
    > -xp senha \
    > -s smtp.gmail.com:25 \
    > -o tls=yes \
    > -l /tmp/sendEmail.log \
    > -f "remetente@gmail.com" \
    > -t "destinatario1@gmail.com" \
    > -cc "destinatario2@gmail.com; destinatario3@gmail.com" \
    > -u "Assunto do Email" \
    > -m "Mensagem do Email"
    
  • Enviando email com cópia oculta (BCC):
  • [mytracelog@mytracelog ~]$ sendEmail \
    > -xu remetente \
    > -xp senha \
    > -s smtp.gmail.com:25 \
    > -o tls=yes \
    > -l /tmp/sendEmail.log \
    > -f "remetente@gmail.com" \
    > -t "destinatario1@gmail.com" \
    > -bcc "destinatario2@gmail.com" \
    > -u "Assunto do Email" \
    > -m "Mensagem do Email"
    
  • Enviando email com conteúdo de arquivo texto:
  • [mytracelog@mytracelog ~]$ sendEmail \
    > -xu remetente \
    > -xp senha \
    > -s smtp.gmail.com:25 \
    > -o tls=yes \
    > -l /tmp/sendEmail.log \
    > -f "remetente@gmail.com" \
    > -t "destinatario1@gmail.com" \
    > -u "Assunto do Email" \
    > -o message-file=/etc/fstab
    
  • Enviando email com o conteúdo do STDOUT:
  • [mytracelog@mytracelog ~]$ df -h | sendEmail \
    > -xu remetente \
    > -xp senha \
    > -s smtp.gmail.com:25 \
    > -o tls=yes \
    > -l /tmp/sendEmail.log \
    > -f "remetente@gmail.com" \
    > -t "destinatario1@gmail.com" \
    > -u "Assunto do Email" \
    
  • Enviando email com anexos:
  • [mytracelog@mytracelog ~]$ sendEmail \
    > -xu remetente \
    > -xp senha \
    > -s smtp.gmail.com:25 \
    > -o tls=yes \
    > -l /tmp/sendEmail.log \
    > -f "remetente@gmail.com" \
    > -t "destinatario1@gmail.com" \
    > -u "Assunto do Email" \
    > -m "Mensagem do Email"
    > -a /etc/fstab /etc/sysconfig/clock
    

Conclusão

Neste artigo foi apresentado o sendEmail, script Perl simples e poderoso para envio de email via linha de comando. Ideal para se integrar com bash script e crontab. Como foi visto a instalação e o uso é muito simples. Além do gmail.com o sendEmail pode ser utilizado com qualquer servidor SMTP como: bol, hotmail, ibest, ig, msn, pop, uol, terra, yahoo, zipmail, até mesmo o seu próprio servidor. O poder do sendEmail está na criatividade do Administrador de Banco de Dados (DBA) e Administrador de Redes em descobrir o que pode ser automatizado.

Gostou do artigo? Ajude a divulgá-lo clicando no botão +1

5 comentários:

  1. Não estou conseguindo mandar um email após uma rotina de um arquivo bat.

    echo Inicia envia Email
     sendEmail  -xu rglc.br  -xp xxxxxx  -s smtp.gmail.com:587  -o tls=yes  -l C:\bks_bds\log\sendEmail.log  -f "rglc.br@gmail.com"  -t "rui.guimaraes.ti@gmail:disqus .com"  -u "Assunto do Email"  -m "Primeira linha\nSegunda Linha\nTerceira linha\n" echo fim envia Emailpauseexit

    O conteudo do arquivo log gerado é esse:

    Aug 13 09:24:26 cyber-2012 sendEmail[960]: ERROR => ERROR => SMTP-AUTH: Authentication to smtp.gmail.com:587 failed.

    Alguma luz de onde eu estou errado?

    Estou usando o XP.

    ResponderExcluir
  2.  Olá Rui,

    Esse erro é de autenticação no servidor smtp, verifique o usuário e senha, parametros -xu e -xp. Provavelmente a senha está sendo digitada errada.

    Att,

    Mytracelog - Registro de um DBA
    http://mytracelog.blogspot.com

    ResponderExcluir
  3. Parabéns!!! estava me matando aqui para tentar usar o Mailx ou Mutt. Mias seu tuto e o sendEmail superou!!! Otimo!!!

    ResponderExcluir
  4. Olá Glauco,

    Obrigado pela visita, o sendEmail é simples e fácil, não citei no artigo, mas existe versão para Windows também.

    Att,

    Mytracelog - Registro de um DBA
    http://mytracelog.blogspot.com

    ResponderExcluir
  5. MUITOOO obrigado pela ajuda, estava quebrando a cabeca de como mandar um backup efetuado diario atraves do email e script e funcionou perfeitamente !!!!!
    Paulo

    ResponderExcluir

Gostou do artigo ? Então comente...

Related Posts Plugin for WordPress, Blogger...
 

FeedBurner

DiHITT

BlogToplist

 
Voltar ao Topo