Postfix 邮件队列中的 DNS 解析错误

Postfix 邮件队列中的 DNS 解析错误

mailq 给了我这个错误:

F2E7B32820F3     3549 Wed Feb 17 12:15:50  "www-data@info"@hivemind.ru
(host mxs.mail.ru[94.100.180.150] said: 421 Problem resolving DNS for domain info"@hivemind.ru (Domain name is syntactically invalid) (in reply to MAIL FROM command))

我看到了由同一软件(旧 SMF 论坛)生成的此类消息,但我找不到确切的片段。在互联网上搜索没有结果。

论坛软件似乎可以正确生成消息:

postcat -vq 0492D3282068
postcat: name_mask: all
postcat: inet_addr_local: configured 2 IPv4 addresses
postcat: inet_addr_local: configured 2 IPv6 addresses
*** ENVELOPE RECORDS maildrop/0492D3282068 ***
message_arrival_time: Sun Feb 21 15:01:55 2016
named_attribute: rewrite_context=local
sender_fullname: www-data
sender: www-data
*** MESSAGE CONTENTS maildrop/0492D3282068 ***
regular_text: To: [email protected]
regular_text: Subject: =?UTF-8?B?0JTQvtCx0YDQviDQv9C+0LbQsNC70L7QstCw0YLRjCDQvdCwINGE0L7RgNGD0LwgUFNZVFJJQkU=?=
regular_text: X-PHP-Originating-Script: 0:Subs-Post.php
regular_text: From: "PSYTRIBE" <[email protected]>
regular_text: Return-Path: [email protected]
regular_text: Date: Sun, 21 Feb 2016 12:01:54 -0000
regular_text: X-Mailer: SMF
regular_text: Mime-Version: 1.0
regular_text: Content-Type: multipart/alternative; boundary="SMF-e8a857e57a7c03288f525582f6bdb280"
regular_text: Content-Transfer-Encoding: 7bit

我如何知道应该在哪里寻找错误?

答案1

您的设置中可能有三个不同之处出现问题。以下是我对于所发生情况的最佳猜测。

  1. 该服务器从未配置过 FQDN,只有名称info
  2. 用户生成一封电子邮件www-data
  3. 由于没有指定其他电子邮件地址,因此它会通过组合用户名和主机名自动构建。
  4. 此时构建的电子邮件地址是www-data@info,这是不正确的(除非您控制infoTLD 并直接在 TLD 上配置了 MX 记录,但事实并非如此)。
  5. 该电子邮件地址被传递给另一个软件,该软件将接受完整的电子邮件地址或仅接受用户名。
  6. 对电子邮件地址进行解析后,确定它只是一个用户名,而不是完整的电子邮件地址。
  7. 用户名与域名组合在一起,与以前的软件使用的主机名不同。由于www-data@info假定为用户名并且包含字符@,因此根据相关 RFC 对其进行引用。这意味着在线发送的电子邮件地址将看起来像<"www-data@info"@hivemind.ru>。这在语法上是有效的,但可能不是您想要的。
  8. 解析此地址的下一个软件存在错误,并且没有根据 RFC 进行解析。它错误地认为第一个@将本地部分与域分开,即使第一个@在引号内。

这里出了三个问题:

  1. 最初使用的是域名,info而不是预期的域。
  2. 后来,一些软件使用启发式方法来决定它是否被赋予了完整的地址还是仅仅是本地部分,它得出的结论与产生该输入的软件预期的结论不同。
  3. 解析器中存在一个错误,它不能理解带引号的字符串,从而导致它错误地拒绝该域,认为其无效。

RFC 2821 建议不要使用需要引用的地址。您的场景说明了为什么不建议这样做是合理的。

尽管上述对本地部分的定义相对宽松,但为了实现最大程度的互操作性,希望接收邮件的主机应避免定义本地部分需要(或使用)带引号的字符串形式或本地部分区分大小写的邮箱。

您实际上一开始并没有打算使用引号。这只是由于流程早期的一些软件配置错误而发生的。您需要在数据流中逆向寻找info最初被错误用作域名的地方并进行纠正。

答案2

目前还不清楚你在问什么,因为错误信息已经很清楚了......地址:

"www-data@info"@hivemind.ru

无效。它被解析为用户名 www-data 和域名 info"@hivemind.ru,但这不是有效的域名。

从您发布的内容中无法判断为什么您的 SMF 软件尝试发送到该地址。

相关内容