Postfix “排队等待投递的邮件”是什么意思?

Tha*_*yal 5 smtp postfix

我向 2 个收件人发送了一封电子邮件,并检查了邮件日志:

tail -5000 maillog | grep "020EE4202065"

Aug  7 17:31:24 mail postfix/smtpd[7478]: 020EE4202065: client=NodoOffice[118.70.28.223], sasl_method=PLAIN, sasl_username=ngadt@my_great_company.com
Aug  7 17:31:24 mail postfix/cleanup[7485]: 020EE4202065: message-id=<6b36518e-14b1-6fac-dd27-c4c900aff87c@my_great_company.com>
Aug  7 17:31:28 mail opendkim[1717]: 020EE4202065: DKIM-Signature field added (s=default, d=my_great_company.com)
Aug  7 17:31:28 mail postfix/qmgr[2817]: 020EE4202065: from=<ngadt@my_great_company.com>, size=5481240, nrcpt=2 (queue active)
Aug  7 17:31:32 mail postfix/smtp[7487]: 020EE4202065: to=<mrs_lorem@the-bank.com.vn>, relay=mail.the-bank.com.vn[103.11.172.xx]:25, delay=8.3, delays=4.3/0.07/0.31/3.6, dsn=2.6.0, status=sent (250 2.6.0 <6b36518e-14b1-6fac-dd27-c4c900aff87c@my_great_company.com> [InternalId=23138874] Queued mail for delivery)
Aug  7 17:31:53 mail postfix/smtp[7486]: 020EE4202065: to=<mr_ipsum@gmail.com>, relay=gmail-smtp-in.l.google.com[74.125.204.26]:25, delay=30, delays=4.3/0.03/3/23, dsn=2.0.0, status=sent (250 2.0.0 OK 1502101899 g4si5235454plk.325 - gsmtp)
Aug  7 17:31:53 mail postfix/qmgr[2817]: 020EE4202065: removed
Run Code Online (Sandbox Code Playgroud)

我注意到有一个额外的信息

[InternalId=23138874] Queued mail for delivery
Run Code Online (Sandbox Code Playgroud)

在该行to=<mrs_lorem@the-bank.com.vn> ,并mrs_lorem@the-bank.com.vn说她并没有看到她的邮箱电子邮件。

你能解释一下那个( Queued mail for delivery) 是什么意思吗?电子邮件服务器是否the-bank.com.vn收到了那封电子邮件?

谢谢!

the*_*ist 6

这已经在评论中得到了回答,但需要技术解释。

在该消息中,括号之间的所有部分都是“另一方”响应。第一个数字是返回代码。250是 SMTP(简单邮件传输协议)的确定,并且是唯一强制响应,其余内容因服务器和操作而异

http://www.rfc-editor.org/rfc/rfc2821.txt第 4.2.2 节


USD*_*att 6

只是为了添加一些额外的信息。关于像下面这样的行 -

Aug  7 17:31:32 mail postfix/smtp[7487]: 020EE4202065: to=<mrs_lorem@the-bank.com.vn>, relay=mail.the-bank.com.vn[103.11.172.xx]:25, delay=8.3, delays=4.3/0.07/0.31/3.6, dsn=2.6.0, status=sent (250 2.6.0 <6b36518e-14b1-6fac-dd27-c4c900aff87c@my_great_company.com> [InternalId=23138874] Queued mail for delivery)
Run Code Online (Sandbox Code Playgroud)

对您来说重要的是relay=mail.the-bank.com.vnstatus=sent。这两个字段基本上确认您的服务器连接到mail.the-bank.com.vn以传递电子邮件,并且该服务器接受了消息。从那时起,您的服务器已完成其工作,由收件人的服务器继续交付。

关于最后的这条消息——

(250 2.6.0 <6b36518e-14b1-6fac-dd27-c4c900aff87c@my_great_company.com> [InternalId=23138874] Queued mail for delivery)
Run Code Online (Sandbox Code Playgroud)

当 SMTP 客户端连接到邮件服务器时,它会发送一系列命令,如下例 ( C = Client, S = Server)

C> MAIL FROM: sender@domain.com
S> 250 2.1.0 OK
C> RCPT TO: recipient@otherdomain.com
S> 250 2.1.5 Ok
... etc ...
Run Code Online (Sandbox Code Playgroud)

客户端发送的每个命令都会从服务器获得响应,响应以状态代码开头,2xx 代码表示成功。在此之后通常还有第二个代码,但该行的其余部分通常可以是服务器想要发送的任何内容。

日志中括号中的文本是当您的系统完成向收件人服务器发送消息时由收件人服务器返回的整行。这从状态代码(在这种情况下为成功)开始,但其余的只是服务器想要发送的任何内容。

在这种情况下,这看起来像是来自 Exchange 服务器 (IIRC) 的正常响应,并且基本上表示感谢,我已将消息放入我的队列中准备发送。(大多数邮件服务器都有处理接收入站邮件、将其放入入站传递队列的进程,以及将邮件实际传递到邮箱的独立进程。)

将此记录在日志中对于调试通常很有用,因为它通常包含收件人服务器分配给该邮件的邮件 ID(如果收件人的邮件管理员找不到该邮件,您可以向他们提供日志条目/ID)。例如,Gmail 返回以下内容,这似乎是他们的时间戳(如果有人在 10:45:23 抱怨邮件很方便,但在搜索日志后您发现发件人的时间是 3 小时)和一个 ID。

(250 2.0.0 OK 1502179523 b127si743181wmc.127 - gsmtp)
Run Code Online (Sandbox Code Playgroud)

基本上,SMTP 服务器开发人员通常在最后一个响应中放置文本,以帮助该服务器的管理员定位/跟踪邮件。