Postfix拒绝传入的退回通知(收件人地址被拒绝:本地收件人表中的用户未知)

所以我build立了一个postfix邮件服务器,我可以发送,我可以收到。 但我注意到我的日志中有一些有趣的活动。 我正在testing一个意外发送到不存在的电子邮件地址,现在另一个域上的邮件服务器正在尝试(不放弃)提供失败的传送通知。

对于这个例子,我的域名是example.com,我发送电子邮件的域是example.net,我发送了一封电子邮件到一个无效的地址。 当然,example.net邮件服务器说:“嘿,这个地址不存在”,并且想要给我发一封邮件说这个地址不存在。 这是日志

Jan 27 08:50:37 UBUNTU-SRV postfix/smtpd[10508]: connect from remote.example.net[12.34.56.78] Jan 27 08:50:37 UBUNTU-SRV postfix/smtpd[10508]: NOQUEUE: reject: RCPT from remote.example.net[12.34.56.78]: 450 4.1.1 "[email protected]": Recipient address rejected: User unknown in local recipient table; from=<> to= "[email protected]" proto=ESMTP helo= "mail.otherdomain.local" Jan 27 08:50:37 UBUNTU-SRV postfix/smtpd[10508]: disconnect from remote.example.net[12.34.56.78] 

我的直觉是,我的服务器说,“是否[email protected]”有一个用户帐户? 答案显然是否定的,所以拒绝。 这些日志现在每天都在运行一分钟。

任何想法要么把这个电子邮件放在正确的箱子或最低限度的路线所有这些东西在我的箱子目录现在?

远程服务器的行为按照SMTP规范RFC 2821,特别是在4.2.1节 。 由于您拒绝了代码450,因此远程服务器将重试发送,直到队列过期。 从RFC引用

4yz瞬态负面完成答复

该命令未被接受,并且所请求的行动没有发生。 但是,错误状态是暂时的,可能会再次请求操作。 发送者应该返回到命令序列的开头(如果有的话)。 当两个不同的站点(接收方和发送方SMTP代理)必须就解释达成一致时,很难为“暂时”指定一个含义。 此类别中的每个回复都可能具有不同的时间值,但鼓励SMTP客户端重试。 确定答复是否适合4yz或5yz类别(见下文)的经验法则是,如果在命令forms或发送者或接收者的属性中重复而没有任何改变,则他们可以成功地回复4yz(即,命令重复一致,接收者不会重新执行。)

现在的问题是你的服务器被configuration,所以它给答复代码450临时拒绝,而不是550永久拒绝

由于您没有共享postfixconfiguration,所以我们无法确定导致该行为的configuration。 您可以开始检查下面的这些参数,并检查postconf -n输出中显示的参数。

  • unknown_local_recipient_reject_code
  • soft_bounce
  • defer_if_reject