Enviando e-mail pelo shell com smtp remoto
O SendEmail é um cliente smtp em Perl script. Neste artigo vamos ver suas principais aplicações práticas.
Introdução
Por quê
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.
- -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.
- -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 - 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.
Parabens!