【发布时间】:2021-06-01 19:55:27
【问题描述】:
我有一个 AWS Amazon Linux 2 机器。我正在使用 python 脚本(Python 3.7)使用 Sendgrid 作为 SMTP 服务发送电子邮件。我可以使用$ python3 send_email.py 发送电子邮件,但是,当我使用 crontab($ crontab -e 然后* * * * * python3 ~/apps/send_email.py)时,日志文件/var/log/cron 中的错误是(CRON) EXEC FAILED (/usr/sbin/sendmail): No such file or directory。 crontab 按预期工作(我测试了其他 cron 命令,它们工作正常),但电子邮件部分不起作用。
这是我试图解决的问题:
- 以根 crontab 身份运行命令(即
$ sudo crontab -e) - 以用户 crontab 的身份运行 crontab(即
$crontab -e)),但在 crontab 命令中使用sudo python3 ...。 - 在 crontab 文件顶部添加路径目录,以防无法解析这些目录
- 已安装 Postfix 以在
/usr/bin/sendmail目录中安装某些内容,但是,由于我不需要它来使用$ python3 send_email.py运行由 Sendgrid 提供支持的电子邮件,所以我不确定为什么我需要通过 cron 来使用它。不过,我可能完全错了。安装 Postfix 后,它可以解决 cron 日志中的(CRON) EXEC FAILED (/usr/sbin/sendmail): No such file or directory错误 - 在这种情况下,日志条目是(ec2-user) CMD (python3 ~/apps/send_email.py)- 但我没有收到电子邮件。可能是因为没有为我正在使用的 SMTP 配置 Postfix (Sendgrid)。 - (编辑)我已将 Sendgrid 配置为通过 the Sendgrid docs 使用 Postfix,但它仍然不会向我发送电子邮件,尽管 Postfix 日志中似乎没有任何错误...
Jun 1 20:27:02 ip-[my-ip] postfix/pickup[25506]: 101769641F3: uid=1000 from=<ec2-user>
Jun 1 20:27:02 ip-[my-ip] postfix/cleanup[25508]: 101769641F3: message-id=<20210601202702.101769641F3@ip-[my-ip].us-east-2.compute.internal>
Jun 1 20:27:02 ip-[my-ip] postfix/qmgr[25507]: 101769641F3: from=<ec2-user@ip-[my-ip].us-east-2.compute.internal>, size=1165, nrcpt=1 (queue active)
Jun 1 20:27:02 ip-[my-ip] postfix/local[25510]: 101769641F3: to=<ec2-user@ip-[my-ip].us-east-2.compute.internal>, orig_to=<ec2-user>, relay=local, delay=0.01, delays=0/0/0/0, dsn=2.0.0, status=sent (delivered to mailbox)
Jun 1 20:27:02 ip-[my-ip] postfix/qmgr[25507]: 101769641F3: removed
我的想法是,Sendgrid python 库(与sudo pip install sendgrid 一起安装)的 cron 调用中有一些失败,当 python 直接使用 CLI 中的 python3 解释器调用它时不会发生这种情况。我不知道为什么会有所不同。
【问题讨论】:
标签: python-3.x amazon-ec2 cron sendgrid