Com a grande difusão de conexões de banda larga, hoje é extremamente comum a qualquer administrador precisar acessar máquinas com IP dinâmico, que são alterados a cada nova conexão. Eu por exemplo tenho como a maioria dos meus clientes, pequenas empresas que dispõem de conexões ADSL ou cabo coaxial e frequentemente preciso saber o IP que suas máquinas assumem, receber logs, alertas em caso de falha de algum serviço e etc.
Poderia configurar um MTA com Sendmail e agendar o envio periódico de emails para mim, mas isso tem uma série de inconvenientes, tais como a complexidade e o uso de mais um serviço que pode comprometer a segurança do sistema. Pensando nisso Brandon Zhem (http://caspian.dotconf.net) escreveu este script em Perl, que é um completo cliente smtp.
Neste pequeno artigo vou comentar suas principais funcionalidades com exemplos práticos de aplicação.
As opções do sendEmail
Este é o resumo de suas principais funções traduzidas do help do SendEmail. Basta digitar o script sem opções e ele exibirá seu help primário.
sendEmail-1.55 by Brandon Zehm <caspian@dotconf.net>
Sinopse: sendEmail -f ADDRESS [options]
Parâmetros obrigatórios:
-f - Endereço de e-mail do remetente.
-t - É o "target" ou seja o(s) email(s) de destino.
-u - Refere-se ao SUBJECT e deve estar delimitado entre aspas para que o shell não o interprete.
-m - Refere-se ao corpo da mensagem que igualmente deve estar delimitado por aspas.
-s - É onde deve ser especificado o endereço de seu servidor SMTP, caso não seja especificado nenhum o default é localhost:25, sua notação é o endereço do smtp seguido da porta em que ele estiver escutando. Ex: mail.yahoo.com.br:25.
Parâmetros opcionais:
-a - Trata-se dos "atachments" bastando apontar o path do(s) arquivos que deseja-se enviar separados por espaços.
-cc - Carbon copy, envia mensagens para múltiplos endereços, exibindo na mensagem todos os endereços que a receberam.
-bcc - Blanck carbon copy, idêntica a anterior porém não exibe os demais endereços que receberam a mensagem.
-xu USERNAME - O nome de login do seu servidor smtp, em alguns casos pode ser o seu endereço de e-mail completo.
-xp PASSWORD - Senha do seu servidor smtp.
Paranormal:
-b BINDADDR[:PORT] - Esta opção é usada quando você rodar o sendEmail em uma estação ou servidor que esteja atrás de um gateway com regras de firewall que impeçam o envio de mensagens pela porta 25, neste caso consulte o administrador do firewall para saber qual o IP e porta que está sendo usada para o redirecionamento.
-l LOGFILE - Grava em um arquivo todas as mensagens de saída do script sendEmail.
-v - Modo verbose, exibe mensagens do processo de envio detalhadas.
-q - Modo silencioso, não exibe nenhuma mensagem STDOUT do script sendEmail.
-o parâmetro=valor - Refere-se a parâmetros avançados, digite "sendEmail --help misc" para exibir o help detalhado deste parâmetro.
-o message-file=FILE - Envia o conteúdo de um arquivo como corpo da mensagem.
-o reply-to=ADDRESS - Refere-se ao endereço de resposta do e-mail que você enviar.
-o timeout=SECONDS - Define o time out máximo, caso o seu smtp não responda dentro deste tempo especificado o script é automaticamente encerrado.
-o username=USERNAME - O parâmetro -xu é um alias para este parâmetro.
-o password=PASSWORD - O parâmetro -xp é um alias para este parâmetro.
-o tls=<auto|yes|no> - Quando o servidor smtp emprega criptografia para autenticação e mensagens, neste caso você terá que tem as bibliotecas SSL instaladas na máquina em que estiver rodando o sendEmail.
-o fqdn=FQDN - Serve para configurar o nome de domínio qualificado, normalmente esta opção não é necessária sendo o próprio nome de domínio do seu servidor smtp, mas há casos que isso se faz necessário, como por exemplo se você tiver um MTA sem um domínio válido, neste caso você especificaria um neste parâmetro.
Help:
--help - Ajuda básica.
--help addressing - Ajuda relativa a endereços de envio e resposta opções -f -t e -o.
--help message - Ajuda relativa a mensagens opções -a e -o.
--help networking - Ajuda relativa as chaves -b e -s.
--help output - Ajuda relativa a logs e mensagens de saída, opções -v -q e -l.
--help misc - Ajuda para opções avançadas, opções -o e autenticação.
[3] Comentário enviado por dailson em 28/11/2007 - 12:27h
Testei mas tenho o mesmo problema que tenho com os clientes de email do linux.
Como faço para enviar um email HTML pra um cliente.
Quando anexo o fonte.hmtl ao invés de ser exibido o email no cliente, é exibido o código fonte.
Como fazer?
[4] Comentário enviado por capitainkurn em 30/11/2007 - 08:15h
Amigo, eu particularmente abomino e-mails em html, não testei esta possibilidate mas em princípio você deveria enviar o seu fonte.html como corpo da mensagem e não anexo como você afirmou. Há uma explicação de como fazer isso na seção exemplos práticos do artigo.
[5] Comentário enviado por andrade-pr em 17/02/2008 - 23:34h
Parabéns amigo.
Seu artigo é simplesmente fantástico.
Estava a procura de um script que fizesse o serviço de envio de e-mail sem a necessidade de instalar um MTA.
E esse funciona mesmo.
Simplesmente nota 10. Parabéns novamente.
[8] Comentário enviado por paulopugin em 08/05/2008 - 17:58h
Opá, estou tentando usar os comando mas estou tendo problemas com todas as contas de email que eu tentei usar
com o Gmail deu o seguinte erro:
May 08 17:51:49 suporte sendEmail[14421]: NOTICE => Authentication not supported by the remote SMTP server!
May 08 17:51:49 suporte sendEmail[14421]: ERROR => Received: 530 5.7.0 Must issue a STARTTLS command first. q19sm3263468qbq.30
com o hotmail deu este :
May 08 17:53:59 suporte sendEmail[14451]: ERROR => Connection attempt to smtp.hotmail.com:25 failed: IO::Socket::INET: Bad hostname 'smtp.hotmail.com'
com o excite este:
May 08 17:54:43 suporte sendEmail[14462]: ERROR => Received: 535 Error: authentication failed
em outro aqui:
May 08 17:57:40 suporte sendEmail[14523]: ERROR => Connection attempt to smtp.mail.tecla.com.br:110 failed: IO::Socket::INET: Bad hostname 'smtp.mail.tecla.com.br'
[9] Comentário enviado por capitainkurn em 08/05/2008 - 21:26h
O que certamente está ocorrendo é que seu servidor smtp está com nome errado. experimente smtp.tecla.com.br ou mail.tecla.com.br ou entre em contato com o suporte do provedor.
[11] Comentário enviado por removido em 28/05/2008 - 10:32h
alguem ae conseguiu funcionar??? tudo q eu ponho acaba com o msm erro do amigo ae de cima... alguem pode me ajudar?? to precisando bastante desse serviço...
[12] Comentário enviado por removido em 28/05/2008 - 10:34h
com o hotmail eu tentei.. dei uma pesquisada e vi que ele não tinha o serviço de smtp... agora tentei com o do gmail, no qual todos afirmam que tem.. e a mensagem de erro é essa:
May 28 10:33:18 markin-laptop sendEmail[28416]: NOTICE => Authentication not supported by the remote SMTP server!
May 28 10:33:18 markin-laptop sendEmail[28416]: ERROR => Received: 530 5.7.0 Must issue a STARTTLS command first. 5sm21495364ywl.4
[14] Comentário enviado por Lima2008 em 28/05/2008 - 16:08h
Coloque o comando que enviou, sem ver oque está fazendo não sei como lhe ajudar, adianto que aqui fiz funcionar com o gmail e com o yahoo, ambos funcionam perfeitamente, embora o gmail bloqueie anexos com extenção .tar.gz
[18] Comentário enviado por paulopugin em 12/06/2008 - 16:49h
Pessoal,
qual a sintaxe que vocês usaram nos seus emails, aqui eu só consegui fazer funcionar no yahoo desta forma:
sendEmail -f meuusuario@yahoo.com.br -t email@destinatario.com.br -u "$assunto" -m "$mensagem" -s smtp.mail.yahoo.com.br:25 -xu meusuario -xp minhasenha
[22] Comentário enviado por bbgshow em 13/07/2009 - 17:59h
ei alguém pode me ajudar é q to tentando usar o comando como disseram mas ñ tá indo demora demais e não sai disso, depois q to enter no comando
- comando q coloquei foi este:
sendmail -f daniel@universalrn.com.br -t doliveira@universalrn.com.br -u "Subject entre aspas" -m "isso e so um teste" -s smtp.universalrn.com.br:25 -xu usuario -xp "minha senha"
[23] Comentário enviado por renato.v em 17/08/2011 - 12:48h
bbgshow, você está usando o comando errado, não é "sendmail" mas sim "sendemail". Aliás, aqui está tudo funcionando perfeitamente usando minha conta do YAHOO e o endereço "smtp.mail.yahoo.com.br:25" para SMTP.
[24] Comentário enviado por renato.v em 17/08/2011 - 12:50h
Alguém conheceria uma ferramenta semelhante ao "sendEmail" descrito no artigo, mas que faça o inverso? Ou seja, em vez de enviar e-mails via SMTP pelo shell, estou atrás de uma ferramenta que receba e-mails via POP3. Alguém conhece?