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!

[ Hits: 120.029 ]

Por: Marcos Vinicius Campez em 28/08/2009 | Blog: http://bytelivre.net


Introdução



Uma das coisas que a maioria administradores de redes mais deseja é estar sempre de olho em seus servidores sem precisar acessá-los localmente. Isso é possível graças a softwares de acesso remoto, como o nosso conhecido ssh.

Geralmente acessamos nossos servidores apenas para conferir alguns arquivos, dar uma olhada nos logs de acesso etc. Quando é preciso modificar algo, o ssh é extremamente funcional, é claro. Mas quando a nossa tarefa se resume em apenas verificar arquivos?! Precisamos realmente acessar por ssh e sair entrando em pastas e conferindo arquivos ou podemos automatizar essa tarefa?! Podemos automatizar essa tarefa com uma maneira bem simples! Como?! A resposta é sendEmail.

SendEmail é um script escrito em Perl por Brandon Zhem. Com isso você não precisa instalar um servidor de e-mail completo apenas para fazer essa tarefa, diminuindo os serviços, prezando assim pela segurança do seu servidor.

Instalação do sendEmail

O sendEmail se encontra no repositório oficial do Ubuntu, então para baixá-lo podemos apenas utilizar o APT:

sudo apt-get install sendemail

Para acessar a man page do mesmo, basta digitar "sendEmail" no terminal:

sendEmail

Com ele instalado, precisaremos agora de um e-mail que aceite SMTP com o POP habilitado.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Configurando o e-mail
   3. Usando o sendEmail e alguns exemplos
Outros artigos deste autor

Zabbix 2 no CentOS 6 - Instalação e configuração

Baixando arquivos do Megaupload e Rapidshare pelo terminal

Instalando o Windows depois do Linux

Inventário "like a boss" com OCS Server

Desenvolvendo um servidor DNS no CentOS

Leitura recomendada

Bioinformática - Instalação do Mr Bayes em ambiente paralelo

Escreva partituras no Linux

Instalando discador "vppp" para terminais leves

Instalando um servidor Openfire no Debian para liberação de MSN via Spark em uma rede Windows

Instalando Freerock Gnome 2.12.1

  
Comentários
[1] Comentário enviado por markintux em 28/08/2009 - 13:28h

Não esqueçam de acessar: tavernadosilicio.wordpress.com e conferir mais artigos, dicas e noticias que posto no meu blog!

Abraços a todos!

[2] Comentário enviado por petslack em 28/08/2009 - 16:35h

Só um detalhe pra quem não usa o Sistema Operacional mencionado no artigo, segue o link do software para baixar os fontes e ver mais algumas opções do software.
http://caspian.dotconf.net/menu/Software/SendEmail/

[3] Comentário enviado por vitorcampox em 28/08/2009 - 16:40h

Beleza, funcionou legal aqui no meu ubuntu.

Mas e se no caso eu precisar enviar para mais de 1 destinatário?
Tem como eu usar um arquivo.txt com os destinatários por exemplo?

Abraço!

[4] Comentário enviado por xjc em 29/08/2009 - 02:05h

Brother , seu artigo é bacana, mas você podia ensinar também como deixar o servidor de email como relay sem precisar passar todos esses parametros, abraços

[5] Comentário enviado por volcom em 31/08/2009 - 10:15h

Perfeito!

Segui os passos e não teve segredo!

Parabéns

[6] Comentário enviado por gregh em 31/08/2009 - 16:07h

Interessante :D
Obrigado por comaprtihlar.

[7] Comentário enviado por vagnocasainfo em 04/09/2009 - 23:07h

Caro amigo, aqui não deu certo, gostaria de se possível obter ajuda. uso o ubuntu 9.04 acredito ter configurado corretamente mas deu o seguinte erro quando tento enviar.
Sep 04 23:04:32 ubuntu sendEmail[4415]: ERROR => Received: 501 malformed auth input (#5.5.4)
O que será que fiz errado. desde já obrigado.

[8] Comentário enviado por markintux em 05/09/2009 - 16:56h

Olá vagnocasainfo!

Mande sua linha de comando para a gente dar uma analisada ok?? Este erro nunca aconteceu comigo.

Quanto aos outros, obrigado por comentarem ok? Abraços!

[9] Comentário enviado por vagnocasainfo em 06/09/2009 - 18:32h

Olá,
a linha de comando que estou usando é.
sendEmail -f [email protected] -t [email protected] -u teste -m esta é a menssagem -s smtp.mail.yahoo.com.br:25 -xu [email protected] -xp 123456

[10] Comentário enviado por toyso em 07/09/2009 - 00:18h

Olá!

Obtive o mesmo erro:
Sep 07 00:06:29 sct001 sendEmail[12513]: ERROR => Received: 501 malformed auth input (#5.5.4)

Minha linha ficou assim:
sendEmail -f [email protected] -t [email protected] -u "assunto" -o message-file=/home/geovane/svn.txt -s smtp.mail.yahoo.com.br:25 -xu min -xp 123456789

Tentei várias vezes, mas o erro sempre aparece.

[11] Comentário enviado por markintux em 07/09/2009 - 15:21h

vagnocasainfo

cheque as aspas duplas no assunto e no corpo da mensagem... pode ser isso ok??


toyso

cheque as permissões do arquivo svn.txt... talvez pode ser isso...

qualquer coisa podem voltar a comentar...

obrigado a todos!

[12] Comentário enviado por toyso em 07/09/2009 - 16:18h

Salve, markintux!
Brigadão pela resposta rápida, mestre. Fico muito feliz com o interesse de gente que sabe para conosco, aprendizes.
Mestre, é o seguinte: chequei as permissões, mas o erro não é esse. Tentei enviar por diversos e-mails e sem arquivo anexado e o mesmo erro persiste. Vou listar os erros:

YAHOO:

sendEmail -f [email protected] -t [email protected] -u teste -m esta é a menssagem -s smtp.mail.yahoo.com.br:25 -xu min -xp password
Sep 07 16:13:23 sct001 sendEmail[6311]: ERROR => Received: 501 malformed auth input (#5.5.4)
(tentei sem aspas, com aspas simples e depois duplas: mesma coisa)

Domínio Próprio:

sendEmail -f [email protected] -t [email protected] -u "Conteúdo passwd" -o message-file=/home/geovane/svn.txt -s smtp.min.com.br:25 -xu [email protected] -xp password
Sep 07 16:15:27 sct001 sendEmail[6316]: ERROR => Received: 535 5.7.8 Error: authentication failed: bad protocol / cancel

Desculpe o transtorno, markintux, é que fiquei fã dessa possiblidade de agendar o envio do e-mail e gostaria de vencer essa dificuldade. Conto com sua ajuda!

[13] Comentário enviado por markintux em 08/09/2009 - 11:17h

Olá toyso!

Te enviei um e-mail com alguns dados meus para nos comunicarmos melhor ok?? Te respondo as dúvidas por lá, acho que vai ser mais fácil para ambos certo??

Obrigado por comentar e muito obrigado pelos elogios!

Um Abraço!

[14] Comentário enviado por vagnocasainfo em 09/09/2009 - 18:38h

Olá markintux,
verifiquei as aspas duplas e nada.
Mas mesmo assim obrigado.
Vou tentar alguam solução aqui e qualquer coisa eu posto. Se tiver alguma outra dica eu agradeço.
Abraço.

[15] Comentário enviado por jlvidals em 15/09/2009 - 06:53h

Legal o artigo, se você quiz dizer ir à página principal? Então corrije a linha que diz "man page", você quiz dizer "main page" Ok?

[16] Comentário enviado por markintux em 25/09/2009 - 13:00h

victorcamposx!

Desculpe a demora, mas se ainda não encontrou um jeito de fazer isso que você quer acesse este endereço: http://www.vivaolinux.com.br/dica/Exibindo-lista-de-arquivo-TXT-em-uma-unica-linha-no-terminal/ tem uma dica minha mostrando como fazer uma lista de e-mails em txt virar apenas uma linha no terminal, deste modo você conseguirá o que deseja ok??

Mais uma vez desculpe pela demora!

Abraços!

[17] Comentário enviado por Douglas Oliveira em 25/03/2010 - 17:59h

Ola a todos!!!


Alguem sabe como eu faço para enviar as notificações do nagios via e-mail, utilizando o sendEmail com autenticação do SMTP.


Att,

Douglas Oliveira.

[18] Comentário enviado por spish em 31/05/2010 - 01:31h

Cara você é o kara kkkk, estava procurando uma solução simples como a sua. Obrigado por compartilhar seu conhecimento. Obs. Dá até para colocar quebra de linha nas mensagens "\n" muito bom mesmo.

[19] Comentário enviado por Tacioandrade em 06/06/2011 - 00:33h

Para quem assim como eu prefere utilizar o GMail para enviar os arquivos, pois aceita anexos maiores (até 20 megas), consegui depois de muitas horas aqui no google colocar para funcionar com o sendEmail.


sendEmail -f [email protected] -t [email protected] -u "Assunto" -m "Mensagem" -a /home/andrade/anexo.txt -s smtp.gmail.com:587 -xu [email protected] -xp 'Senha'

Vou explicar um pouco o porque de minhas alterações para poder funcionar. A porta do smtp do Gmail, ao contrario da maioria dos hosts é a porta 587, diferente da maioria dos servidores. Outra coisa que muda em comparação ao envio pelo Yahoo é que o -xu (usuário de autenticação) é o e-mail inteiro, não apenas o usuário antes do @, o que me fez perder um bom tempo até conseguir.

Outra dica interessante é colocar a senha entre aspas simples ' ', pois no meu caso, ela tem caracteres especiais e não era compreendida pelo shell como uma senha, e sim como um comando ou variavel.

Espero que essa minha dica ajude muita gente por ai.

[20] Comentário enviado por cefet pet em 15/09/2011 - 14:00h

Olá, eu gostaria de saber como posso baixar e ver os emails que coloquei no servidor direto do terminal.
obrigado

[21] Comentário enviado por guidoseverus em 04/12/2011 - 15:26h

Gostei bastante, valeu.

[22] Comentário enviado por codebr em 20/02/2012 - 00:28h

Boa noite,

Porque os e-mails enviados pelo terminal usando o comando sendEmail são encaminhados para "Lixeira" dos destinatários?

[23] Comentário enviado por Tacioandrade em 20/02/2012 - 01:22h

codebr isso se dá por alguns e-mails considerarem e-mails enviados sem autenticação (como é o nosso caso) como tentativa de Spam.

Para resolver isso é só criar uma politica no seu e-mail de forma que todos que sejam recebidos do e-mail que você configurou para receber o e-mail não seja considerado com spam.

[24] Comentário enviado por contito em 13/04/2012 - 16:51h

quando tento enviar um e-mail do Gmail pelo sendEmail aparece o seguinte:


Apr 13 16:40:53 dermochelys sendEmail[5679]: NOTICE => Authentication not supported by the remote SMTP server!
Apr 13 16:40:54 dermochelys sendEmail[5679]: ERROR => Received: 530 5.7.0 Must issue a STARTTLS command first. o15sm17600017anj.1

o que escrevo no terminal é o seguinte:

[email protected]:~$ sendEmail -f [email protected] -t [email protected] -u "assunto" -m "mensagem" -s smtp.gmail.com:587 -xu [email protected] -xp 'minhasenha'

e além disso meu email está com o POP3 abilitado como foi sugerido...


o que devo fazer ? Procurei algumas soluções on line e nenhuma delas deu certo (nao consegui me enviar um e-mail)

obrigado


[25] Comentário enviado por radolpho em 30/07/2012 - 13:40h

Muito bom o artigo. Fácil de seguir e funcionou.

[26] Comentário enviado por jpvr2005 em 26/08/2012 - 13:44h

EDIT: Resolvi o problema abaixo colocando um # antes de todas as linhas do meu arquivo retorno.txt, não sei pq, mas ele estava sendo interpretado como um comando.
Valeu ai!

Boa tarde Pessoal,
Uma dúvida, usei o seguinte comando para enviar o email:

sendEmail -f [email protected] -t [email protected] -u "Assunto aqui " -o message-file=<(/home/joaopaulo/retorno.txt) -s smtp.algumacoisa.com.br:25 -xu [email protected] -xp 'minhasenha'

Meu objetivo era enviar o arquivo retorno.txt no corpo da menssagem, porém quando envio ele me retorno o seguinte erro:

/home/joaopaulo/testip/retorno.txt: linha 1: ---------------------------------------------------------------: comando não encontrado
/home/joaopaulo/testip/retorno.txt: linha 2: erro de sintaxe próximo do `token' não esperado `|'
/home/joaopaulo/testip/retorno.txt: linha 2: `| .:: SendIp - Versao 1.0 ::. |'
Aug 26 13:26:36 joaopaulo-inspiron-n4050 sendEmail[4168]: Email was sent successfully!

Ai ele envia o email, mas sem conteudo. O conteudo do arquivo retorno.txt é:


---------------------------------------------------------------
| .:: SendIp - Versao 1.0 ::. |
---------------------------------------------------------------

### IP: 192.168.0.1




@@@ Esta é uma mensagem automática, favor não responder!

------------------------------------------------------------------

No meu caso, eu queria q ele enviasse esse arquivo ja formatado com o ip da maquina para o meu email, alguem tem alguma ideia do pq desse erro?

Valeu, abç a todos!

[27] Comentário enviado por viniciuspdutra em 13/12/2013 - 10:19h

Fala galera, estou utilizando o sendEmail em vários scripts que fiz, porem se eu agendar no cron, ele só envio enquanto eu estiver logado no server, se eu desconectar a tarefa do cron funciona normalmente más o e-mail não é enviado.
Alguém consegue me ajudar com isso?

Segue a linha em questão:
sendEmail -f $EMAIL_FROM -t $EMAIL_TO -u "$ASSUNTO" -m "$MENSAGEM" $ANEXO -s $SERVIDOR_SMT P -xu $EMAIL_FROM -xp $SENHA

[28] Comentário enviado por laripetruzzellis em 19/02/2014 - 17:40h

Olá! Estou tentando enviar um email e aparece isso: Feb 19 17:29:56 larissa-desktop sendEmail[9088]: ERROR => Timeout while connecting to smtp.mail.yahoo.com.br:25 There was no response after 60 seconds.

Como resolvo? Tentei reenviar várias vezes... a linha de comando que usei: -f [email protected] -t [email protected] -u "Teste" -m "teste" -s smtp.mail.yahoo.com.br:25 -xu meuusuario -xp minhasenha

será que é pq estou testando pra me mandar? mas isso não faz sentido... Estou usando acesso remoto, e a conexão do outro comp é ótima. não sei o que fazer. Obrigada!

[29] Comentário enviado por markintux em 19/02/2014 - 18:08h

Olá Larissa!

O que pode estar acontecendo é que a algum tempo, os servidores de e-mails trocaram a porta de 25 para a 587 do protocolo SMTP. Dê uma olhada se isso resolve. Caso não resolva, dê uma olhada melhor se está ativado o SMTP no seu e-mail do Yahoo. Eu sugiro, que troque o Yahoo pelo Gmail, já que o Gmail já vem com o SMTP ativo, sendo: smtp.gmail.com.

Espero ter ajudado!

Abraços.


[28] Comentário enviado por laripetruzzellis em 19/02/2014 - 17:40h:

Olá! Estou tentando enviar um email e aparece isso: Feb 19 17:29:56 larissa-desktop sendEmail[9088]: ERROR => Timeout while connecting to smtp.mail.yahoo.com.br:25 There was no response after 60 seconds.

Como resolvo? Tentei reenviar várias vezes... a linha de comando que usei: -f [email protected] -t [email protected] -u "Teste" -m "teste" -s smtp.mail.yahoo.com.br:25 -xu meuusuario -xp minhasenha

será que é pq estou testando pra me mandar? mas isso não faz sentido... Estou usando acesso remoto, e a conexão do outro comp é ótima. não sei o que fazer. Obrigada!




Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts