Diga ao sistema operacional convidado para usar o meu servidor de correio eletrônico para enviar e-mail

0

Tenho o postfix em execução em um contêiner do Docker. Um cronjob tenta enviar email, mas responde

"(CRON) info (No MTA installed, discarding output)" error in the syslog

De acordo com este link , a solução é instalar o postfix para que o CRON possa enviar email.

Eu tenho postfix em execução neste host, existe uma maneira de usá-lo? Eu tenho alguns outros hosts e o postfix não está sendo executado neles, posso também dizer-lhes para usar o servidor de email docker distante?

    
por Dimitri Kopriwa 28.07.2016 / 10:16

1 resposta

2

O problema não é que o postfix não esteja em execução, mas que ele deve estar escutando em uma porta mapeada 25 ou 587 no host. Mesmo se for esse o caso, com a não instalação do postfix no host, provavelmente não há instalação que envie o email (obtido dos parâmetros stdin ou commandline) para a porta.

Você instala os programas clientes sSMTP ou msmtp para isso, mas eu resolvi isso dentro de um pequeno programa wrapper para minhas entradas crontab que eu estava usando de qualquer maneira. O wrapper só envia e-mail se o programa (o "real" crontab etnry chamado) sai com valor de saída diferente de zero ou sua saída contém a string "error:". Isso reduz o tempo dos meus próprios sistemas, ou seja, nenhum email se o programa foi executado corretamente. O programa usa o módulo smtp da biblioteca padrão do Python para enviar a saída capturada.

O wrapper executa o programa com subprocess.check_output(cmd, stderr=subprocess.STDOUT) e envia o resultado com erro usando:

 smtp = smtplib.SMTP(host="", port=0)  # by default 'localhost' and 25
 smtp.connect()
 smtp.sendmail(
     from_email, to_email_list,
     email_header_and_body
 )

Ao configurar o host e a porta, também uso isso para executar trabalhos de outros contêineres do docker.

    
por 29.07.2016 / 09:27