Por que o mail-utils / cron está enviando tantos e-mails?

2

Eu estava tentando descobrir porque meu Raspberry Pi não está enviando e-mails com o ssmtp / mail-utils, então abri minha conta do gmail que eu uso para o Pi. Para minha surpresa, havia 15k e-mails não lidos onde ele tentou enviar um e-mail para o endereço de e-mail "pi @ pi_name", que obviamente foi rejeitado (estava tentando enviar para [email protected]). Esses e-mails / rejeições ocorrem aproximadamente uma vez a cada dois minutos. As rejeições são uma coisa (eu devo apenas ter a configuração errada), mas isso me intriga o que está acontecendo aqui. No meu crontab -u pi -l eu tenho o seguinte (o crontab do root está vazio):

30 8 * * * python /.../text.py
* * * * * python /.../record.py

text.py deve me enviar lembretes às 8:30 todos os dias, e o record.py deve rodar a cada minuto para gravar algum áudio. Nos e-mails que estão sendo enviados, o corpo do e-mail é a saída de record.py (detalhes de áudio gravados). Minha intuição é que os e-mails estão relacionados ao cron job executado a cada minuto (mesmo que os e-mails sejam aproximadamente uma vez a cada 3 minutos), mas em nenhum lugar no record.py há alguma menção ao envio de e-mail; ele apenas grava em um banco de dados MySQL. text.py envia e-mails usando o comando echo “body” | mail -s “subject” [email protected]

Estou perplexo com o que está acontecendo aqui. Eu não tenho ideia de onde os e-mails estão sendo enviados e, além disso, tudo estava funcionando como planejado em janeiro deste ano (coloquei meu Pi em armazenamento quando fui para o exterior por alguns meses), e não fiz alterações para isso.

Também estranho e talvez relacionado é que quando eu insiro o comando python text.py, ele funciona aleatoriamente (talvez uma chance de 5%?) e me envia um texto, caso contrário ele com erros send-mail: Cannot open smtp.gmail.com:587 . Eu não tenho certeza em que circunstâncias ela é bem sucedida.

    
por ahota 15.09.2015 / 23:52

2 respostas

4

Se um cron job imprimir qualquer coisa na saída padrão ou erro padrão, ou se o comando retornar um status de falha (ou seja, qualquer código de saída diferente de zero), o cron envia ao usuário um email com a saída e o código de status. >

O e-mail é enviado ao usuário por meio do recurso de e-mail local, a menos que você cancele isso, configurando a variável MAIL no crontab para um endereço local. Se o seu email local for encaminhado via ~/.forward ou /etc/aliases ou similar, os emails do cron serão obviamente encaminhados como o resto deles. Se o email do usuário não puder ser entregue, mas o email do administrador funcionar, o administrador (tecnicamente: postmaster ) receberá mensagens devolvidas.

Leia o conteúdo desses e-mails para descobrir o que estava errado. Se o trabalho por minuto às vezes falhar, provavelmente é sobre isso que você está recebendo esses e-mails.

Se o seu ISP, por vezes, rejeita os seus e-mails, isso pode dever-se ao envio de um grande volume de e-mails e à limitação de uma taxa como potencial remetente de spam.

    
por 16.09.2015 / 03:44
3

Eu verificaria o código de text.py para ver onde está enviando e-mail. Eu então usaria isso como um ponto de partida para descobrir por que ele está enviando. Esteja ciente de que talvez ele não esteja tentando enviar diretamente para o Gmail, mas para um endereço local (veja abaixo).

Seu record.py provavelmente escreve para stdout ou para stderr em algum momento. cron seleciona isso como saída para ser enviada para você (como o proprietário do crontab ).

Suspeito que em algum momento você configurou seu Pi para encaminhar emails endereçados para sua conta local para o endereço externo [email protected] . Eu começaria olhando para /etc/aliases e ~/.forward .

    
por 15.09.2015 / 23:59