
Comecei a escrever alguns scripts que fazem backup dos meus arquivos de log. Sempre que um erro é encontrado no arquivo de log, desejo enviar um e-mail para mim mesmo. No entanto, quero ter certeza de que meu servidor não esteja comprometido, pois ouvi dizer que a instalação do smtp/mail abre novas opções para hackers.
Existe uma ferramenta que não recebe e-mails, mas só consegue enviá-los? Além disso, que considerações de segurança eu precisaria levar em consideração ao instalá-lo?
Responder1
No entanto, quero ter certeza de que meu servidor não está comprometido, pois ouvi dizer que ter o smtp/mail instalado abre novas opções para hackers
Qualquerserviço pode “abrir novas opções para hackers” seestá mal escrito.Mas para correio, tanto o Postfix quanto o Exim4 são muito seguros.
(Em geral, você ficará bem, desde que não use um Sendmail com dez anos de idade. As versões atuais são seguras, mas eu recomendaria ficar longe do Sendmail de qualquer maneira - o arquivo de configuração não é exatamente legível por humanos .)
Existe uma ferramenta que não recebe e-mails, mas só consegue enviá-los?
Qualquer MTA (Postfix, Exim4, Sendmail) pode funcionar desta forma – basta configurá-lo para escutar apenas endereços de loopback ( ::1
e 127.0.0.1
). Você pode até desabilitar totalmente o componente SMTP – a maioria dos programas Unix não exige isso e envia mensagens por meio de /usr/sbin/sendmail
1 , tornando o SMTP desnecessário.
Na verdade, não é necessário contra "hackers". O pior que você pode conseguir com um MTA decente é deixá-lo aberto para retransmissão – e as configurações padrão já cuidam disso.
Outra opção é o msmtp
, que nem sequer tem suporte completo a SMTP – tudo o que pode fazer é retransmitir e-mails através de outro servidor de e-mail, como o do Gmail ou do seu ISP. Mas embora seja útil para um computador pessoal, na verdade não se adapta a um ambiente de servidor.
1 " /usr/sbin/sendmail
" é um programa que vem comtodosMTAs, enquanto "Sendmail" é o nome de umespecíficoMTA.
Responder2
Enviar mensagens a partir de um script shell é bastante fácil, desde que você tenha um MTA padrão instalado (Postfix, Exim4, Sendmail, etc). Geralmente para enviar você pode usar o mail
comando com argumentos apropriados, ecoando o conteúdo do seu e-mail para o programa. Por exemplo:
echo "Error occurred in script at `date`" | mail -s "Error running script" [email protected]
o -s
argumento especifica o assunto e você segue com o destinatário do email.
Outro exemplo
grep -i error /path/to/yourfile.log | mail -s "Errors from script execution" [email protected]
Confira man mail
mais opções.
Outra opção, se você estiver executando seu script via cron, é fazer com que o cron envie automaticamente por e-mail a saída do seu script para você. Adicione a MAILTO
opção ao seu crontab da seguinte forma:
[email protected]
e você receberá um email com qualquer saída do stdout sempre que seu script for executado.
Quanto à segurança, enviar e receber e-mail são duas coisas completamente diferentes. Você pode enviar e-mail do seu servidor sem executar um servidor de recebimento de e-mail, simplesmente não execute o daemon smtp ou bloqueie o acesso à porta de entrada 25 (SMTP) por meio de um firewall se não precisar receber e-mail por meio deste servidor.