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!
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.
[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/
[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
[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.
[9] Comentário enviado por vagnocasainfo em 06/09/2009 - 18:32h
Olá,
a linha de comando que estou usando é.
sendEmail -f vagnogalvao@yahoo.com.br -t vaguinholg@hotmail.com -u teste -m esta é a menssagem -s smtp.mail.yahoo.com.br:25 -xu vagnogalvao@yahoo.com.br -xp 123456
[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 min@yahoo.com.br -t min@hotmail.com -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)
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!
[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.
[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.
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.
[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.
[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:
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 é:
[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 laripetruzzellis@yahoo.com.br -t laripetruzzellis@yahoo.com.br -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 laripetruzzellis@yahoo.com.br -t laripetruzzellis@yahoo.com.br -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!