当我们的服务无法发送电子邮件时,返回给发件人的拒绝通知将包含失败代码的堆栈跟踪。有没有没有错误的发送邮件通知的方法?
我们有一个后缀服务器,用于处理所有python脚本中的传入电子邮件。该脚本会将电子邮件上传到我们的服务之一,并在失败时引发异常。
这是我们正在使用的模板
failure_template = <<EOF
Charset: us-ascii
From: MAILER-DAEMON (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
Postmaster-Subject: Postmaster Copy: Undelivered Mail
This is the mail system at host $myhostname.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to <postmaster>
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
EOF
预期结果将只是模板通知,而不会跟踪全部脚本。
答案 0 :(得分:1)
邮件服务器只是将您的Python程序显示在其标准错误上的内容包含在退回中。也许通过包装器调用脚本,该包装器将标准错误保存到合理的位置(或者,如果您确定它不包含任何有用的东西,则将其丢弃)。
#!/bin/sh
python3 /path/to/deliver.py 2>>/var/log/deliver.log
您的邮件服务器显然需要对日志具有写访问权,并且您可能希望为文件设置定期的日志轮换。
可能更好的总体方法是使Python程序不崩溃。