我们有两台服务器,其中一台运行 Ubuntu,另一台运行 Amazon Linux 2。两台服务器都为不同的客户端运行一系列 cron 作业。
Ubuntu 服务器会发送一封电子邮件(到一个组电子邮件地址),其中包含每个 cron 作业的输出。没有输出重定向:只需为每个条目执行一个命令:
0 2 * * * /apps/ourapp/sync_data -c variable1 -s all -i CLIENT1
...以不同的时间和不同的值重复-i
。计划的开始时间始终采用以下形式
呵呵:00,呵呵:15或者 呵呵:45。
它的效果令人满意:人们收到了电子邮件。
Amazon Linux 机器的情况并非如此。它的邮件日志有这样的条目(稍作编辑):
Feb 28 07:05:04 ip-XXXX sSMTP[32212]: Connection lost in middle of processing
Feb 28 08:05:04 ip-XXXX sSMTP[32382]: killed: timeout on stdin while reading body -- message saved to dead.letter.
Feb 28 08:05:04 ip-XXXX sSMTP[32382]: Timeout on stdin while reading body
Feb 28 21:50:04 ip-XXXX sSMTP[2261]: killed: timeout on stdin while reading body -- message saved to dead.letter.
Feb 28 21:50:04 ip-XXXX sSMTP[2261]: Timeout on stdin while reading body
Feb 28 22:05:04 ip-XXXX sSMTP[2505]: killed: timeout on stdin while reading body -- message saved to dead.letter.
Feb 28 22:05:04 ip-XXXX sSMTP[2505]: Timeout on stdin while reading body
Feb 28 22:20:05 ip-XXXX sSMTP[2845]: killed: timeout on stdin while reading body -- message saved to dead.letter.
Feb 28 22:20:05 ip-XXXX sSMTP[2845]: Timeout on stdin while reading body
您会注意到时间戳分钟部分是经过 5 分钟、15 分钟或 45 分钟标记。这些对应的 cron 作业是不是发送电子邮件。
dead.letter
始终为空,如果在作业结束之前没有发送日志(正如我推断的那样),这是有意义的。
我读到的内容sSMTP
表明您无法使用stdin
配置选项覆盖超时(尽管该信息可能已过时)。
那我能做什么呢?这是因为我们使用的sSMTP
是而不是其他邮件机制吗?
答案1
如果您坚持使用 sSMTP,则无能为力。正如您所猜测的,这是不可配置的。 5 分钟超时是硬连线到程序代码中。如果您的工作时间超过 5 分钟,那么您只需要一个不同的邮件提交系统。