如果作业花费超过 5 分钟,则 sSMTP 不会发送 Cron 电子邮件

Ann*_* L. 3 cron ssmtp

我们有两台服务器,其中一台运行 Ubuntu,另一台运行 Amazon Linux 2。两台服务器都为不同的客户端运行一系列 cron 作业。

\n\n

Ubuntu 服务器会发送一封电子邮件(到一个组电子邮件地址),其中包含每个 cron 作业的输出。没有输出重定向:只需为每个条目执行一个命令:

\n\n
0 2 * * * /apps/ourapp/sync_data -c variable1 -s all -i CLIENT1\n
Run Code Online (Sandbox Code Playgroud)\n\n

...以不同的时间和不同的值重复-i。\xc2\xa0\n计划的开始时间始终采用\n hh :00hh :15或\xc2\xa0 hh :45的形式。

\n\n

它的效果令人满意:人们收到了电子邮件。

\n\n

Amazon Linux 机器的情况并非如此。它的邮件日志有这样的条目(稍作编辑):

\n\n
Feb 28 07:05:04 ip-XXXX sSMTP[32212]: Connection lost in middle of processing\nFeb 28 08:05:04 ip-XXXX sSMTP[32382]: killed: timeout on stdin while reading body -- message saved to dead.letter.\nFeb 28 08:05:04 ip-XXXX sSMTP[32382]: Timeout on stdin while reading body\nFeb 28 21:50:04 ip-XXXX sSMTP[2261]: killed: timeout on stdin while reading body -- message saved to dead.letter.\nFeb 28 21:50:04 ip-XXXX sSMTP[2261]: Timeout on stdin while reading body\nFeb 28 22:05:04 ip-XXXX sSMTP[2505]: killed: timeout on stdin while reading body -- message saved to dead.letter.\nFeb 28 22:05:04 ip-XXXX sSMTP[2505]: Timeout on stdin while reading body\nFeb 28 22:20:05 ip-XXXX sSMTP[2845]: killed: timeout on stdin while reading body -- message saved to dead.letter.\nFeb 28 22:20:05 ip-XXXX sSMTP[2845]: Timeout on stdin while reading body\n
Run Code Online (Sandbox Code Playgroud)\n\n

您会注意到时间戳分钟部分是经过 5 分钟、15 分钟或 45 分钟标记。这些对应于发送电子邮件的 cron 作业。

\n\n

dead.letter始终为空,如果在作业结束之前没有发送日志(正如我推断的那样),这是有意义的。

\n\n

我读到的内容sSMTP表明您无法使用stdin配置选项覆盖超时(尽管该信息可能已过时)。

\n\n

那我能做什么呢?这是因为我们使用的是sSMTP而不是其他邮件机制吗?

\n

Jde*_*eBP 5

如果您坚持使用 sSMTP,则无能为力。正如您所猜测的,这是不可配置的。5 分钟超时被硬连线到程序代码中。如果您的工作时间超过 5 分钟,那么您只需要一个不同的邮件提交系统。