我正在使用脚本通过 sendmail 发送新闻通讯,因此,如果邮件失败,我想访问传递状态通知,是否有命令可以列出 DSN 的内容?
答案1
检查您的邮件日志。它应该显示所有投递及其状态。我预计大多数失败都发生在发送时,这会导致退回邮件发送到您服务器上的发送地址。
您的邮件队列中可能包含一些被暂时拒绝的邮件。这可能是由于邮箱已满、服务器中断和其他可以解决的情况。
退回邮件的发件人为空,因此您可能希望将退回邮件过滤到某个进程而不是邮箱。(空的发件人地址可防止退回邮件被退回。)然后它可以解析该邮件以验证它是退回邮件,并记录该地址的状态。退回可能是暂时的(邮箱已满等),因此您应该相应地处理退回邮件
许多用户禁用了传递状态通知,因此它们不能可靠地指示邮件未送达。DSN 响应是可靠的传递指示器。DSN 响应以电子邮件消息的形式发送到发送地址。我相信,与退回邮件一样,信封发件人地址为空,以防止它们产生退回。如果您使用程序处理邮件,则需要以不同于退回邮件的方式处理这些邮件。
最后你应该得到三类电子邮件地址:
- 已知的反弹地址(反弹可能是永久的或暂时的);
- 已知可用的地址(发送 DSN 消息);以及
- 状态未知的地址(既不反弹也不发送 DSN)。
您应该主动删除那些永久状态反弹的地址。