不要在Postfix的邮件传递失败通知上打印堆栈跟踪

时间:2019-07-29 19:35:32

标签: postfix-mta

当我们的服务无法发送电子邮件时,返回给发件人的拒绝通知将包含失败代码的堆栈跟踪。有没有没有错误的发送邮件通知的方法?

我们有一个后缀服务器,用于处理所有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

预期结果将只是模板通知,而不会跟踪全部脚本。

1 个答案:

答案 0 :(得分:1)

邮件服务器只是将您的Python程序显示在其标准错误上的内容包含在退回中。也许通过包装器调用脚本,该包装器将标准错误保存到合理的位置(或者,如果您确定它不包含任何有用的东西,则将其丢弃)。

#!/bin/sh
python3 /path/to/deliver.py 2>>/var/log/deliver.log

您的邮件服务器显然需要对日志具有写访问权,并且您可能希望为文件设置定期的日志轮换。

可能更好的总体方法是使Python程序不崩溃。