postfix邮件队列中的DNSparsing错误

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)) 

我看到这种types的消息由相同的软件(旧的SMF论坛)生成,但我找不到确切的一块。 在互联网上search没有结果。

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

 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. 服务器从未configuration过FQDN,只有名称info
  2. 电子邮件是由用户www-data生成的。
  3. 由于没有指定其他电子邮件地址,因此通过组合用户名和主机名自动构build。
  4. 此时构build的电子邮件地址是www-data@info ,这是不正确的(除非您控制info TLD并在TLD上直接configuration了MXlogging,而不是这种情况)。
  5. 这个电子邮件地址被传递到另一个软件,它将接受一个完整的电子邮件地址或只是一个用户名。
  6. 电子邮件地址被parsing,以决定它只是一个用户名,而不是一个完整的电子邮件地址。
  7. 用户名与域名相结合,不同于以前软件使用的主机名。 因为www-data@info被认为是用户名,并且包含@字符,所以它是根据相关的RFC引用的。 这意味着通过电子邮件发送的电子邮件地址将类似于<"www-data@info"@hivemind.ru> 。 这在语法上是有效的,但可能不是你想要的。
  8. 下一个parsing这个地址的软件是错误的,不会根据RFCparsing它。 它错误地认为即使第一个@在引号之内,第一个@将本地部分从域中分离出来。

这里出了三个错误的是:

  1. 起初,域名info被使用,而不是预期的域名。
  2. 后来一些软件使用启发式来决定是否给出了一个完整的地址或只有一个本地部分,它得出了一个不同的结论比产生该input的软件的意图。
  3. parsing器中不能理解引用string的错误会导致错误地将域拒绝为无效。

RFC 2821build议不要使用需要引用的地址。 而你的情况显示了为什么这样的做法是正确的build议。

尽pipe上面的Local-part的定义是相对宽容的,为了获得最大的互操作性,期望接收邮件的主机应该避免在本地部分需要(或使用)引用string表单或本地部分情况下定义邮箱 – 敏感。

您实际上并不打算首先使用引号。 它只是在这个过程中,由于一些错误configuration的软件而发生的。 您需要在数据stream中反向工作,以查找info被错误地用作域名的位置,并将其更正。

由于错误信息非常清晰,所以你不清楚你在问什么…地址:

 "www-data@info"@hivemind.ru 

无效。 它被parsing为用户名www数据和域名信息“@ hivemind.ru但这不是一个有效的域名。

没有办法根据您发布的内容告诉SMF软件试图发送到该地址的原因。