如何查询延迟邮件的传递状态的远程MTA?

时间:2019-07-16 08:21:15

标签: email smtp postfix-mta

在极少数情况下,我从邮件用户代理(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

据我所知,只有三种方法可以确定消息是否得到传递:

  1. 五天后,我从MTA收到另一个DSN,通知我交付失败。
  2. 五天后,我没有收到MTA的回音,在这种情况下,通常可以认为交付成功。
  3. 在五天之前,电子邮件的接收者以某种方式确认了接收(例如,通过回复电子邮件)。

但是对于紧急消息,我不想等待整整五天才能知道消息是否已传递。是否有任何便捷的标准方法手动对已发送的邮件手动查询MTA以获取更新的DSN?我使用的MUA(雷鸟和爪子邮件)似乎没有这样的功能。是否有免费提供的* nix命令行工具,可以根据给定的消息ID向SMTP服务器询问消息的当前传递状态?还是失败了,在通过端口25远程登录到SMTP服务器后,是否可以直接输入一些相对简单的命令?

如果没有使用SMTP进行此操作的标准方法,是否有任何特定于Postfix的方法? (我相信我使用的所有MTA都是后缀。)

请注意,在这种情况下,查询需要由非特权远程用户进行。不要假设我在运行MTA的计算机上完全拥有任何类型的Shell帐户。 (我知道在拥有Shell帐户的计算机上,运行mailq通常会向我显示待处理消息的状态。)

也请注意,我不是在问RFC 3798样式的回执,它表示接收人实际上已经看到了该邮件。我只想确认我的MUA使用的MTA已成功将我的消息传递给收件人的邮件传递代理。

0 个答案:

没有答案