在极少数情况下,我从邮件用户代理(MUA)发送的电子邮件会延迟,几个小时后,MTA(邮件传输代理;通常是我的雇主或ISP的SMTP服务器),具体取决于哪封电子邮件我使用的帐户)向我发送了一个发送状态通知(DSN)通知我。这是前几天我收到的(匿名)示例:
From: Mail Delivery Subsystem <MAILER-DAEMON>
Subject: Warning: could not send message for past 4 hours
To: me@example.com
**********************************************
** THIS IS A WARNING MESSAGE ONLY **
** YOU DO NOT NEED TO RESEND YOUR MESSAGE **
**********************************************
The original message was received at Fri, 12 Jul 2019 10:31:11 +0200
from mail.example.com [203.0.113.1]
----- Transcript of session follows -----
<foo@example.edu>... Deferred: 403 4.7.0 TLS handshake.
Warning: message still undelivered after 4 hours
Will keep trying until message is 5 days old
Reporting-MTA: dns; mail.example.com
Arrival-Date: Fri, 12 Jul 2019 10:31:11 +0200
Final-Recipient: RFC822; foo@example.edu
Action: delayed
Status: 4.7.0
Diagnostic-Code: SMTP; 403 4.7.0 TLS handshake.
Last-Attempt-Date: Fri, 12 Jul 2019 14:36:17 +0200
Will-Retry-Until: Wed, 17 Jul 2019 10:31:11 +0200
据我所知,只有三种方法可以确定消息是否得到传递:
但是对于紧急消息,我不想等待整整五天才能知道消息是否已传递。是否有任何便捷的标准方法手动对已发送的邮件手动查询MTA以获取更新的DSN?我使用的MUA(雷鸟和爪子邮件)似乎没有这样的功能。是否有免费提供的* nix命令行工具,可以根据给定的消息ID向SMTP服务器询问消息的当前传递状态?还是失败了,在通过端口25远程登录到SMTP服务器后,是否可以直接输入一些相对简单的命令?
如果没有使用SMTP进行此操作的标准方法,是否有任何特定于Postfix的方法? (我相信我使用的所有MTA都是后缀。)
请注意,在这种情况下,查询需要由非特权远程用户进行。不要假设我在运行MTA的计算机上完全拥有任何类型的Shell帐户。 (我知道在拥有Shell帐户的计算机上,运行mailq
通常会向我显示待处理消息的状态。)
也请注意,我不是在问RFC 3798样式的回执,它表示接收人实际上已经看到了该邮件。我只想确认我的MUA使用的MTA已成功将我的消息传递给收件人的邮件传递代理。