Enviando email pelo terminal com sendEmail no CentOS 5.6
Autor: Sakamoto | Publicado: 2011-11-01T18:38:00-02:00





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:


Caspian's Homepage

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:


Extraia o pacote:

[root@mytracelog ~]# tar -zxvf sendEmail-v1.56.tar.gz


Copie o script sendEmail para /usr/local/bin:

[root@mytracelog ~]# cp -a sendEmail-v1.56/sendEmail /usr/local/bin


Garanta que o script possui permissão de execução:

[root@mytracelog ~]# chmod +x /usr/local/bin/sendEmail


Instale os pacotes perl.x86_64, perl-Net-SSLeay e perl-IO-Socket-SSL:

[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 &lt;caspian@dotconf.net&gt;

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=&lt;auto|text|html&gt;
        -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=&lt;auto|yes|no&gt;         -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





<!--
google_ad_client = "pub-8284912471434245";
/* Bloco de Anúncio Artigo Bottom (468 x 60) */
google_ad_slot = "2293927770";
google_ad_width = 468;
google_ad_height = 60;
//-->







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 \
&gt; -xu remetente \
&gt; -xp senha \
&gt; -s smtp.gmail.com:25 \
&gt; -o tls=yes \
&gt; -l /tmp/sendEmail.log \
&gt; -f "remetente@gmail.com" \
&gt; -t "destinatario1@gmail.com" \
&gt; -u "Assunto do Email" \
&gt; -m "Mensagem do Email"


Enviando email com quebra de linha na mensagem:

[mytracelog@mytracelog ~]$ sendEmail \
&gt; -xu remetente \
&gt; -xp senha \
&gt; -s smtp.gmail.com:25 \
&gt; -o tls=yes \
&gt; -l /tmp/sendEmail.log \
&gt; -f "remetente@gmail.com" \
&gt; -t "destinatario1@gmail.com" \
&gt; -u "Assunto do Email" \
&gt; -m "Primeira linha\nSegunda Linha\nTerceira linha\n"


Enviando email para multiplos destinatários:

[mytracelog@mytracelog ~]$ sendEmail \
&gt; -xu remetente \
&gt; -xp senha \
&gt; -s smtp.gmail.com:25 \
&gt; -o tls=yes \
&gt; -l /tmp/sendEmail.log \
&gt; -f "remetente@gmail.com" \
&gt; -t "destinatario1@gmail.com; destinatario2@gmail.com; destinatario3@gmail.com" \
&gt; -u "Assunto do Email" \
&gt; -m "Mensagem do Email"


Enviando email com cópia (CC):

[mytracelog@mytracelog ~]$ sendEmail \
&gt; -xu remetente \
&gt; -xp senha \
&gt; -s smtp.gmail.com:25 \
&gt; -o tls=yes \
&gt; -l /tmp/sendEmail.log \
&gt; -f "remetente@gmail.com" \
&gt; -t "destinatario1@gmail.com" \
&gt; -cc "destinatario2@gmail.com; destinatario3@gmail.com" \
&gt; -u "Assunto do Email" \
&gt; -m "Mensagem do Email"


Enviando email com cópia oculta (BCC):

[mytracelog@mytracelog ~]$ sendEmail \
&gt; -xu remetente \
&gt; -xp senha \
&gt; -s smtp.gmail.com:25 \
&gt; -o tls=yes \
&gt; -l /tmp/sendEmail.log \
&gt; -f "remetente@gmail.com" \
&gt; -t "destinatario1@gmail.com" \
&gt; -bcc "destinatario2@gmail.com" \
&gt; -u "Assunto do Email" \
&gt; -m "Mensagem do Email"


Enviando email com conteúdo de arquivo texto:

[mytracelog@mytracelog ~]$ sendEmail \
&gt; -xu remetente \
&gt; -xp senha \
&gt; -s smtp.gmail.com:25 \
&gt; -o tls=yes \
&gt; -l /tmp/sendEmail.log \
&gt; -f "remetente@gmail.com" \
&gt; -t "destinatario1@gmail.com" \
&gt; -u "Assunto do Email" \
&gt; -o message-file=/etc/fstab


Enviando email com o conteúdo do STDOUT:

[mytracelog@mytracelog ~]$ df -h | sendEmail \
&gt; -xu remetente \
&gt; -xp senha \
&gt; -s smtp.gmail.com:25 \
&gt; -o tls=yes \
&gt; -l /tmp/sendEmail.log \
&gt; -f "remetente@gmail.com" \
&gt; -t "destinatario1@gmail.com" \
&gt; -u "Assunto do Email" \


Enviando email com anexos:

[mytracelog@mytracelog ~]$ sendEmail \
&gt; -xu remetente \
&gt; -xp senha \
&gt; -s smtp.gmail.com:25 \
&gt; -o tls=yes \
&gt; -l /tmp/sendEmail.log \
&gt; -f "remetente@gmail.com" \
&gt; -t "destinatario1@gmail.com" \
&gt; -u "Assunto do Email" \
&gt; -m "Mensagem do Email"
&gt; -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