Como eu configuro o Cron para enviar e-mails?

3

Eu tenho o seguinte comando de trabalho cron executando uma vez por dia no meu dispositivo NAS:

find /nfs/rpiggott/complete -mtime +45 -exec rm {} \;

Eu estou querendo saber se existe uma maneira de canalizar uma lista que resultará no cron enviando um e-mail para mim, mostrando qual arquivo foi excluído e / ou quaisquer erros ocorreram.

    
por Ron Piggott 01.04.2018 / 03:28

2 respostas

3

Para este propósito, o seu sistema deve poder enviar e-mails. Então você pode instalar e configurar postfix :

sudo apt install postfix
  • Para Tipo geral de configuração de correio escolha Site da Internet , se você quiser fazer uma configuração mais detalhada, use o comando:

    sudo dpkg-reconfigure postfix
    

Neste estágio, o Cron começará a enviar e-mails. Tudo que normalmente será enviado para o STDOUT (se você executar um comando na linha de comando), incluindo todas as mensagens de erro, será enviado para a caixa de correio local do usuário que executa o Cronjob.

A localização padrão das caixas de correio do usuário local é /var/mail/ . Você pode instalar o cliente de e-mail de linha de comando mutt para ler a caixa de e-mail do seu usuário por meio da linha de comando de uma maneira conveniente:

sudo apt install mutt
  • O processo de instalação do mutt envolverá a instalação e configuração de postfix , se não for feito antes.

Você pode alterar a caixa de correio de destino padrão alterando o valor do envvar MAILTO dentro de crontab , antes da definição do Cronjob.

Atenção: a menos que você não tenha ativado o certificado SSL / TLS dentro de você, envie a configuração de e-mail, a maioria dos servidores de e-mail públicos irá ignorar seus e-mails de alguma forma. Por exemplo, mail.google.com irá colocá-los no spam. Se esta for uma instância do servidor e você já tiver certificado SSL / TLS para o seu domínio principal, siga this nice manual para anexá-lo ao Postfix.

Quando o sistema puder enviar e-mails, você deverá tornar seu Cronjob mais detalhado (por exemplo, adicionar -v ao comando rm ) e definir o valor adequado de MAILTO . Então, seu crontab deve ser assim:

MAILTO="[email protected]"
* * * * * find /nfs/rpiggott/complete -mtime +45 -exec rm -v {} \;

Outra abordagem é criar um script (que será executado via crontab ) que inclua seu comando e use mail , mutt , ssmtp ou sendmail para enviar e-mails. Veja a parte inferior das referências para detalhes mor.

Referências e leituras adicionais:

por pa4080 01.04.2018 / 18:02
1

Eu usei um método bastante simples para obter cron para enviar emails: Backup da configuração do Linux, scripts e documentos para o Gmail .

A maneira mais simples de automatizar o envio de e-mail

Em Envie alertas de e-mail usando o ssmtp encontramos a maneira mais simples de enviar e-mail automatizado a partir do terminal ou script. As etapas de instalação são diretas:

sudo apt install ssmtp
sudo nano /etc/ssmtp/ssmtp.conf
# Change "MyEmailAddress" and "MyPassword" to your own.

Há um passo não mencionado; O Google enviará um e-mail confirmando que você deseja permitir que um aplicativo "menos seguro" envie e-mails com sua conta:

Háumincômododerecebermuitose-mails.Porexemplo,todavezquevocêdigitarsuasenhasudo,vocêreceberáume-mail: Stop enviando-me um email com tentativas de senha sudo

    
por WinEunuuchs2Unix 04.04.2018 / 03:50