Como posso enviar um e-mail ao crontab com a saída de seus trabalhos? Eu tenho [email protected]
acima dos empregos, mas não funciona.
Sei que preciso usar algo como Postfix ou Sendmail, mas durante toda a minha vida não consigo descobrir como conseguir isso. Pesquisei e procurei um guia simples sobre a configuração do Postfix, mas todos eles são incrivelmente complicados e esperamos que você esteja configurando um servidor inteiro para enviar e receber email e conhecer todos os termos (como, um nome de domínio) para e-mails enviados?).
Tudo o que eu quero fazer é enviar um e-mail ao crontab. Por que isso é tão difícil?
Informação adicional:
Meu arquivo crontab fica assim:
[email protected]
1 0 * * * ~/Desktop/toskymesh.sh
59 6 * * * ~/Desktop/tooptus.sh
0 3 * * * snapraid sync
Mais informações adicionais:
A saída de ps -ef | grep '[s]endmail'
root 6840 1370 0 10:26 ? 00:00:00 sendmail: MTA: accepting connections
Sei que o cron está funcionando, mas estou testando o comando mail de echo Test | mail -s Test [email protected]
qualquer maneira.
sendmail setup
. Boa sorte!mail
. Em um deles, diz o seguinte:Diagnostic-Code: SMTP; 553 5.7.1 [BL21] Connections will not be accepted from [MyIPRedacted], because the ip is in Spamhaus's list; see http://postmaster.yahoo.com/550-bl23.html
Isso significa que o comando está funcionando, mas o Yahoo está bloqueando o correio?http://webmasters.stackexchange.com
? Eles provavelmente podem ajudá-lo melhor ou melhor ainda,chat.stackexchange.com/rooms/524/webmasters
onde aparentemente todas as perguntas são bem-vindas (hum .. você pode precisar de mais representantes para entrar, está em algum outro site de troca de pilhas?) Boa sorte.Respostas:
No final, eu usei
sSMTP
. É muito, muito mais simples que umPostfix
ou outrosendmail
e faz o trabalho lindamente.Para referência futura, veja como usar o sSMTP com o Yahoo Mail (não se preocupe, é muito menos complexo do que parece):
Use o Synaptic para baixar o ssmtp. Alternativamente, você pode executar
sudo apt-get install ssmtp
.Abra o arquivo de configuração em /etc/ssmtp/ssmtp.conf.
Faça a configuração ficar assim:
Crie o arquivo cert.pem com o OpenSSL. Eu usei o comando
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 9999 -nodes
(mais informações aqui ). Você pode colar o arquivo em qualquer lugar, mas eu o coloquei em ~ /. Onde quer que você o coloque, aponte aTLS_CA_File=
linha no ssmtp.conf para o local correto.Abra o arquivo
/etc/ssmtp/revaliases
e adicione a linha[yourPCUsername]:[[email protected]]:smtp.mail.yahoo.com:587
. Se você estiver executando como root, acho que você precisará adicionar outra linha substituindo seu nome por 'root'.É isso aí, você está pronto para ir! Para testar, a maneira mais fácil (IMO) é criar um arquivo com o seguinte:
sendmail -V
- ele deve dizer 'sSMTP'.cat fileWithEmailInIt.txt | sendmail -i -t
, aguarde alguns segundos (10 a 30) e verifique seu e-mail!Obviamente, substitua
[[email protected]]
pelo seu email (sem os colchetes) e[yourRealYahooPassword]
pela senha do Yahoo Mail (novamente, sem os colchetes).Nota adicional: se você tiver problemas com o Gmail, tente a opção 1 desta resposta (obrigado a Ben Creasy por essas informações).
fonte
hostname
como mostrado atualmente). Esta resposta sugere que você pode usar certificados de servidor padrão, mas descobri que não precisava de umaTLS_CA_File=
linha para enviar via GMail.Instale o Postfix. É mais complicado que a maioria dos outros pacotes, mas ainda não é complicado .
Selecione "Site da Internet" e aceite todos os padrões. Então, precisamos parar as conexões externas, transformando isso em um " cliente nulo ". Execute:
sudoedit /etc/postfix/main.cf
e encontre ainet_interfaces
configuração (perto do fim) e altere-a paraloopback-only
, da seguinte forma:E, finalmente, reinicie o Postfix com
sudo /etc/init.d/postfix restart
(recarregar não serve).Agora você tem uma instalação do Postfix que não retransmitirá o email para máquinas externas, apenas aceitará conexões no 127.0.0.1 (e :: 1 para IPv6).
Em uma nota separada, suas linhas cron provavelmente não estão funcionando porque você está usando caminhos não relativos e caminhos com substituições do Bash em.
sh
Não entende~
e pode não ter umPATH
conjunto adequado . Então substitua-os por (estou apenas adivinhando os caminhos reais):E se seus scripts precisarem ser executados a partir de um diretório específico, verifique se eles estão
cd
no diretório certo. Não assuma quecron
estará no lugar certo, como provavelmente não estará.fonte
~/Desktop/
.inet_interfaces = localhost
. apenas loopback me deupostfix: fatal: config variable inet_interfaces: host not found: loopback-only
Eu tive muita sorte com o exim4.
(alpine é apenas o cliente de email que eu gosto de usar)
Depois disso, eu corri
e seguiu as instruções. Esta página: https://help.ubuntu.com/community/Exim4 também foi muito útil. Levei cerca de 10 minutos para funcionar.
fonte
Na página de manual do sSMTP: "Ele não faz alias, o que deve ser feito no agente do usuário ou no mailhub. Nem honra .forwards, que devem ser feitos no host de recebimento. Especialmente não é entregue aos pipelines. "
Portanto, se você deseja receber todas as mensagens enviadas para a raiz no seu e-mail extenal, é uma má idéia usar o sSMTP, porque ele não suporta aliases.
Em vez disso, você pode usar o postfix. Ainda é muito simples. Veja como usá-lo com o gmail como smtp para enviar mensagens:
Tipo geral de configuração de email: sistema de satélite
Nome do correio do sistema: o nome completo e preferido do servidor de correio, por exemplo, mail.example.com
Host de retransmissão SMTP (em branco para nenhum): [smtp.gmail.com]: 587
Adicione ao /etc/postfix/main.cf:
Crie / etc / postfix / sasl / sasl_passwd
Então:
Edite / etc / aliases e adicione:
Por fim, execute:
Agora, você pode testar se o redirecionamento está funcionando:
Espero que ajude.
fonte